సమర్థవంతమైన మరియు పోర్టబుల్ మిక్స్చర్-ఆఫ్-ఎక్స్‌పర్ట్స్ కమ్యూనికేషన్

పెద్ద ఎత్తున AI నమూనాలలో GPU సమాంతరతను ఆప్టిమైజ్ చేయడం మరియు జాప్యాన్ని తగ్గించడంపై దృష్టి సారించి, పోర్టబుల్ మిక్స్చర్-ఆఫ్-ఎక్స్‌పర్ట్స్ (MoE) కమ్యూనికేషన్ యొక్క అవలోకనం

రచయితలుPerplexity Research

ప్రామాణిక ఆల్-టు-ఆల్ కమ్యూనికేషన్ ప్రిమిటివ్‌లతో పోలిస్తే 10 రెట్లు వేగవంతమైన పనితీరును సాధించే మిక్స్చర్-ఆఫ్-ఎక్స్‌పర్ట్స్ (MoE) కమ్యూనికేషన్ కోసం మేము అధిక-పనితీరు గల, పోర్టబుల్, ఓపెన్ సోర్స్ లైబ్రరీని అందిస్తున్నాము.

మా అమలు అత్యుత్తమ MoE కమ్యూనికేషన్ సామర్థ్యాన్ని అందించే అనేక కీలక సాంకేతిక ఆవిష్కరణలను కలిగి ఉంది:

GPU-ప్రారంభించబడిన కమ్యూనికేషన్ (IBGDA): ప్రత్యక్ష GPU-నుండి-NIC కమ్యూనికేషన్‌కు మద్దతు ఇస్తుంది, CPU ప్రమేయాన్ని దాటవేయడం ద్వారా జాప్యాన్ని గణనీయంగా తగ్గిస్తుంది

కమ్యూనికేషన్ మరియు కంప్యూటేషన్ ఓవర్‌లాప్: ప్రత్యేక పంపడం మరియు స్వీకరించే దశలతో కూడిన స్ప్లిట్ కర్నల్ ఆర్కిటెక్చర్ నెట్‌వర్క్ బదిలీలతో పాటు కంప్యూటేషన్ ఏకకాలంలో కొనసాగడానికి వీలు కల్పిస్తుంది

అతివేగవంతమైన సింగిల్-నోడ్ పనితీరు: సింగిల్-నోడ్ కాన్ఫిగరేషన్‌లలో మునుపటి వేగవంతమైన అమలు కంటే 2.5 రెట్లు తక్కువ జాప్యం

సమర్థవంతమైన మరియు పోర్టబుల్ మల్టీ-నోడ్ పనితీరు: మా అమలు ప్రామాణిక ఆల్-టు-ఆల్ కమ్యూనికేషన్ కంటే 10 రెట్లు వేగవంతమైన వేగాన్ని సాధిస్తుంది. అత్యంత ప్రత్యేకమైన అమలుల కంటే దాదాపు 2 రెట్లు నెమ్మదిగా ఉన్నప్పటికీ, మా విధానం NVSHMEM వెర్షన్‌లు మరియు నెట్‌వర్క్ వాతావరణాలలో (NVLink, CX-7 మరియు EFA) మెరుగైన పోర్టబిలిటీని అందిస్తుంది.

ఈ లైబ్రరీ పూర్తిగా ఓపెన్ సోర్స్ మరియు https://github.com/ppl-ai/pplx-kernels వద్ద అందుబాటులో ఉంది.

ఈ వ్యాసంలో, పెద్ద ఎత్తున MoE నమూనాలలో ఎక్స్‌పర్ట్ పారాలిజమ్ సవాళ్లను మేము అన్వేషిస్తాము మరియు పంపిణీ చేయబడిన GPU పరిసరాలలో సమర్థవంతమైన టోకెన్ డిస్పాచ్ మరియు కలయిక కోసం మా విధానాన్ని వివరిస్తాము.

పరిచయం

డీప్‌సీక్ R1 మరియు మిక్స్‌ట్రాల్ 8x7B వంటి మిక్స్చర్-ఆఫ్-ఎక్స్‌పర్ట్స్ (MoE) నమూనాలు, ప్రతి టోకెన్ కోసం సక్రియం చేయబడిన బరువుల సంఖ్యను పరిమితం చేయడం ద్వారా దట్టమైన మోడళ్లను మెరుగుపరుస్తాయి. ప్రతి డీకోడర్ లేయర్ యొక్క మల్టీ-లేయర్ పర్సెప్ట్రాన్ (MLP)లో లేయర్‌ల సంఖ్యను పెంచడం ద్వారా లేదా లీనియర్ లేయర్‌ల పరిమాణాన్ని పెంచడం ద్వారా అధిక పరామితి గణనలను సాధించడానికి బదులుగా, MoE మోడల్స్ సాంప్రదాయ MLPని బహుళ నిపుణులు (ఎక్స్‌పర్ట్స్) మరియు రూటర్‌తో భర్తీ చేస్తాయి. ఉదాహరణకు, డీప్‌సీక్ R1 యొక్క 671B పారామితులలో, అనుమితి సమయంలో ఇవ్వబడిన టోకెన్‌తో కేవలం 37B మాత్రమే గుణించబడతాయి. ఇది టోకెన్‌ను డీకోడ్ చేయడానికి అవసరమైన గణన మొత్తాన్ని గణనీయంగా తగ్గిస్తుంది మరియు దట్టమైన మోడల్‌తో పోలిస్తే జాప్యాన్ని మెరుగుపరుస్తుంది.

దట్టమైన మోడళ్లతో పోలిస్తే MoE మోడల్స్ అనుమితి కోసం కొన్ని అదనపు సవాళ్లను అందిస్తాయి. ఎక్స్‌పర్ట్‌లు స్వయంగా చిన్న MLP లేయర్‌లు అయినప్పటికీ, ప్రతి డీకోడర్ లేయర్‌లో టోకెన్ ఏ ఎక్స్‌పర్ట్‌కు పంపబడుతుందో నిర్ణయించే రూటర్ ఉంటుంది, ప్రతి టోకెన్ బహుళ ఎక్స్‌పర్ట్‌లకు పంపబడుతుంది. రూటర్ సాధారణంగా సంభావ్యత పంపిణీని ఉత్పత్తి చేసే చిన్న లీనియర్ లేయర్. సాధారణంగా టాప్-K స్కోర్‌లతో కూడిన ఎక్స్‌పర్ట్‌లు ఎంపిక చేయబడతాయి మరియు రూటర్ యొక్క సంభావ్యత పంపిణీ నుండి తీసుకోబడిన బరువు ద్వారా గుణించబడిన ఎక్స్‌పర్ట్ అవుట్‌పుట్‌లను జోడించడం ద్వారా తుది యాక్టివేషన్ భారాన్ని సగటుగా లెక్కించబడుతుంది.

పంపిణీ చేయబడిన MoE సిస్టమ్‌లలో జాప్యాన్ని తగ్గించడానికి, బహుళ పరికరాలలో సమాంతరతను ఉపయోగించుకోవచ్చు, అయితే ఇది కమ్యూనికేషన్ సవాళ్లను తెస్తుంది. మిక్స్‌ట్రాల్ 8x7B లేదా Llama-70B వంటి మోడల్‌లు ఒకే నోడ్‌లోని 8 పరికరాలలో సరిపోతాయి, వేగవంతమైన మరియు తక్కువ-జాప్యం గల NVLink ఇంటర్‌కనెక్షన్‌ల (900Gbps వరకు) ప్రయోజనాన్ని పొందుతాయి. అయితే, పెద్ద మోడళ్లకు InfiniBand (గరిష్టంగా 400Gbps) ఉపయోగించి బహుళ నోడ్‌లలో ఎక్స్‌పర్ట్‌లను షార్డింగ్ చేయడం అవసరం, ఇది అదనపు జాప్య సవాళ్లను తెస్తుంది.

మిక్స్-ఆఫ్-ఎక్స్‌పర్ట్స్ పొరలో టోకెన్ రూటింగ్, నిపుణుల గణన, మరియు అవుట్‌పుట్ సేకరణ.

ఈ వ్యాసంలో, మేము నిపుణుల ప్యారలలిజం సమస్యను పరిశీలించి, నియమించిన నిపుణులను కలిగి ఉన్న డివైస్‌లకు టోకెన్లను సమర్థవంతంగా పంపించి, నిపుణుల అవుట్‌పుట్‌ల బరువుతీసిన మొత్తాన్ని లెక్కించి వాటిని తిరిగి సమీకరించే GPU కర్నెల్‌ల మా అమలును వివరిస్తాము. నిర్దిష్ట నెట్‌వర్క్ హార్డ్‌వేర్‌ను లక్ష్యంగా చేసుకున్న తీవ్రంగా ఆప్టిమైజ్ చేసిన అమలులు ఉన్నప్పటికీ, మేము NVSHMEM ప్రాథమికాల కనిష్ఠ సమితిపై ఆధారపడే, అత్యంత పోర్టబుల్ అమలును అందిస్తున్నాము; అయినప్పటికీ ఇది ప్రామాణిక all-to-all కమ్యూనికేషన్‌తో పోలిస్తే 10x వేగమైన పనితీరును అందిస్తుంది. మా అమలు వివిధ నెట్‌వర్క్ వాతావరణాల అంతటా అద్భుతమైన పోర్టబిలిటీని కొనసాగిస్తూ, సింగిల్-నోడ్ కాన్ఫిగరేషన్‌లపై అత్యాధునిక పనితీరును సాధిస్తుంది.

షార్డింగ్ మరియు పారాలిజమ్

సమర్థవంతమైన అనుమితి కోసం, మోడల్ యొక్క బరువులు పరికర మెమరీలో ఉంచబడాలి, అదే సమయంలో మోడల్ ద్వారా ఫార్వర్డ్ పాస్ చేయడానికి అవసరమైన యాక్టివేషన్‌లు, KV క్యాష్‌లు మరియు ఇతర బఫర్‌ల కోసం తగినంత స్పేస్ వదిలివేయాలి. అత్యంత సామర్థ్యం గల మోడల్‌లు అత్యంత సామర్థ్యం గల GPUల సామర్థ్యాన్ని కూడా మించిపోతాయి, కాబట్టి మోడల్ బరువులను సమిష్టిగా నిల్వ చేయగల బహుళ పరికరాలలో అనుమితి విస్తరించబడాలి. బరువుల షార్డింగ్ పథకాల ఆధారంగా, గణనను ఆఫ్‌లోడ్ చేయడానికి మరియు పరికరాలను సమకాలీకరించడానికి వివిధ కమ్యూనికేషన్ మరియు గణన పథకాలను ఉపయోగించాలి.

రెండు GPUలపై నిపుణుల సమాంతరత.

మొదటి చిత్రంలో చూపిన Expert Parallelism (EP) కేవలం నిపుణుల గణనను మాత్రమే ప్యారలలైజ్ చేస్తుంది. వేర్వేరు నిపుణులను వేర్వేరు డివైస్‌లకు కేటాయిస్తారు, అవే వాటి weights‌ను కలిగి ఉంటాయి. రూటింగ్ అనంతరం, టోకెన్లు తగిన డివైస్‌కు పంపబడతాయి, ఆపై ఫలితాలు సేకరించి కూడగట్టబడతాయి. రూటింగ్ యొక్క సంక్లిష్టత, మోడల్‌లోని ఇతర భాగాల్లో ఉన్న ప్యారలలిజం స్థాయిపై ఆధారపడి ఉంటుంది: ఇతర లేయర్‌లను ప్రతిరూపించడం ద్వారా రూటింగ్ అవసరాన్ని పూర్తిగా తొలగించవచ్చు, ఎందుకంటే ప్రతి rank స్థానికంగా ప్రతిరూపించిన routing table నుండి టోకెన్లను ఎంచుకోగలదు. అయితే, rank‌లలో కేవలం ఒకటే రూటింగ్ నడిపితే, టోకెన్లు, సూచికలు మరియు weights‌ను వాటి సంబంధిత నిపుణులకు పంపించడానికి broadcast అవసరం. చివరికి, all-gather లేదా all-to-all broadcast మోడల్ అమలును కొనసాగించే ఏ rank‌తోనైనా అవుట్‌పుట్ టోకెన్లను సమకాలీకరిస్తుంది. torch ఇప్పటికే అవసరమైన ప్రాథమికాలను అందిస్తుండడంతో, అలాంటి అమలు తులనాత్మకంగా సులభమే; అయితే నిపుణుల నుండి టోకెన్లను సేకరించే gather ఆపరేషన్‌తో accumulation‌ను fuse చేయడం ద్వారా కొంత లాభం పొందవచ్చు.

రెండు GPUలపై నిపుణుల సమాంతరతను టెన్సర్ సమాంతరతతో కలపడం.

మోడల్ అటెన్షన్, నార్మ్ మరియు శాంప్లింగ్ వంటి ఎక్స్‌పర్ట్ కాని లేయర్‌లను రన్ చేస్తున్నప్పుడు క్లస్టర్‌లోని నోడ్‌లు నిష్క్రియంగా ఉండవచ్చు కాబట్టి, ఎక్స్‌పర్ట్-మాత్రమే పారాలిజమ్ ఆదర్శంగా స్కేల్ చేయదు. అయితే, ఈ లేయర్‌ల గణన, ప్రాథమికంగా అటెన్షన్, టెన్సార్ పారాలిజమ్ (TP) నుండి కూడా ప్రయోజనం పొందవచ్చు. చాలా మోడల్స్ మల్టీ-హెడ్ అటెన్షన్‌పై ఆధారపడతాయి, అనగా అటెన్షన్ హెడ్‌లు మరియు వాటి సంబంధిత Q, K మరియు V ప్రొజెక్షన్‌లు కూడా పరికరాలలో షార్డ్ చేయబడతాయి, వివిధ లేయర్‌ల మధ్య విభజనలను ప్రతిబింబించడం లేదా సేకరించడం జరుగుతుంది. అటెన్షన్ అన్ని పరికరాలలో విస్తరించి ఉంటే, ఆల్-గ్యాదర్ యాక్టివేషన్‌లను సమకాలీకరించగలదు, రూటింగ్ ప్రతిబింబించేలా అనుమతిస్తుంది, సమర్థవంతమైన అమలు కోసం ఎక్స్‌పర్ట్ పారాలిజమ్ కేస్ వలె సమాకాలీకరణ ప్రిమిటివ్‌లు అవసరమవుతాయి. అయితే, ఈ స్థాయిలో పారాలిజమ్‌కు పరిమితులు ఉన్నాయి, ఎందుకంటే అటెన్షన్ హెడ్‌ల సంఖ్యను నిర్దిష్ట థ్రెషోల్డ్ కంటే తగ్గించడం వలన తగ్గుతున్న రాబడులు లభిస్తాయి.

రెండు GPUలపై వేర్వేరు అభ్యర్థనల కోసం నిపుణుల సమాంతరతను డేటా సమాంతరతతో కలపడం.

అన్ని డివైస్‌లను అత్యుత్తమంగా వినియోగించేందుకు మరియు 128 లేదా 256 GPUs వరకు ఉన్న చాలా అధిక స్థాయి expert parallelism‌కు మద్దతు ఇవ్వడానికి Data Parallelism (DP) అవసరం. ఈ పద్ధతిలో, ఒక మోడల్ విభజించబడిన డివైస్‌లను సమూహాలుగా ఏర్పాటు చేసి అభ్యర్థనలను సమకాలీనంగా నిర్వహిస్తారు; వారు attention‌ను గణించి, వారి స్థానిక సమూహం అంతటా sharded‌గా ఉన్న KV caches‌ను నిర్వహిస్తారు. ఈ ప్యారలల్ సమూహాల అనేక ఇన్‌స్టాన్స్‌లు expert evaluation‌పై కలిసి పనిచేస్తాయి, ప్రతి ఒక్కటి నిపుణుల weights‌లో వేర్వేరు ఉపసమితిని కలిగి ఉంటుంది. attention heads సంఖ్యను బట్టి, అంతర్గత-నోడ్ కమ్యూనికేషన్ వేగవంతంగా ఉండడం వల్ల ఒక సమూహం సాధారణంగా మొత్తం నోడ్ పరిమాణం వరకు విస్తరించవచ్చు. ఉదాహరణకు, పై చిత్రంలో ఒక DP rank స్వతంత్రంగా A మరియు B అనే రెండు అభ్యర్థనలను సేవలందిస్తూ, ఆ అభ్యర్థనల కోసం attention, norm మరియు ఇతర ఏదైనా bookkeeping‌ను నిర్వహిస్తుంది. మరొక DP rank వేరే అభ్యర్థన C‌ను ప్రాసెస్ చేస్తుంది. అయితే, మొదటి నోడ్ నిపుణుల సగాన్ని హోస్ట్ చేస్తుంది, మరొక నోడ్ మిగతా సగాన్ని హోస్ట్ చేస్తుంది; కాబట్టి రూటింగ్ తర్వాత A మరియు B నుండి వచ్చిన టోకెన్లు రెండో నోడ్‌కు పంపబడవచ్చు, అలాగే దానికి విరుద్ధంగా కూడా జరుగవచ్చు. ఇది ఒక sparse కమ్యూనికేషన్ సమస్యకు దారితీస్తుంది: ప్రతి డివైస్ ఏ ఇతర గమ్య rank‌కైనా వేరే సంఖ్యలో టోకెన్లను పంపవచ్చు. torch నుండి ఉన్న ప్రస్తుత ప్రాథమికాలు, ముఖ్యంగా all_to_all, అంతగా అనుకూలంగా ఉండవు, ఎందుకంటే వాటికి padding లేదా GPU-to-CPU synchronization మరియు metadata broadcast అవసరం కావచ్చు. కమ్యూనికేషన్‌ను సమర్థవంతంగా అమలు చేయడానికి, రూటింగ్ సమాచారాన్ని ప్రాసెస్ చేసి CPU జోక్యం లేకుండా డివైస్‌ల నుంచే కమ్యూనికేషన్‌ను ప్రారంభించే custom kernels అవసరం. రూటింగ్ తరువాత, ఒక dispatch kernel టోకెన్లను అవి రూట్ చేయబడిన rank‌లకు పంపాలి; combine వైపున, ప్రస్తుత DP సమూహంలోని అభ్యర్థనలకు చెందిన activations‌ను సేకరించాలి. అదనంగా, తదుపరి లేయర్‌ల కోసం అన్ని rank‌లపై tokens‌ను సరిగ్గా ప్రతిరూపించడానికి మరియు broadcast‌ను తగ్గించడానికి, అనేక డివైస్‌లను కలిగి ఉండవచ్చిన DP సమూహంలో పని సమంగా పంచబడాలి.

NVSHMEM

NVSHMEM అనేది NVIDIA- నిర్దిష్ట OpenSHMEM అమలు, ఇది అంతర్లీన హార్డ్‌వేర్ యొక్క సంక్లిష్టతను సంగ్రహించే పోర్టబుల్ పరికరాల మధ్య కమ్యూనికేషన్ సౌకర్యాలను అందిస్తుంది. API పరికరం నుండి పరికరానికి చదవడం మరియు వ్రాయడాన్ని వ్యక్తపరచగలదు, ఇవి వ్యక్తిగత రవాణా లేయర్‌ల ప్రిమిటివ్‌లకు మ్యాప్ చేయబడతాయి. NVLink మరియు RDMA రెండూ మద్దతు ఇస్తున్నాయి, ఇది కొంత పోర్టబిలిటీని అందిస్తుంది మరియు NVSHMEM కర్నల్‌లను నోడ్ లోపల లేదా బహుళ నోడ్‌ల క్లస్టర్ জুড়ে ఆపరేట్ చేయడానికి అనుమతిస్తుంది. మా కర్నళ్లలో, డేటాను బదిలీ చేయడానికి మరియు పాల్గొనే పరికరాలను సమకాలీకరించడానికి మేము రిమోట్ మెమరీ రైట్స్ మరియు సిగ్నలింగ్ ఆపరేషన్లను ఉపయోగిస్తాము.

NVSHMEM ఆపరేషన్‌లు సిమెట్రిక్ మెమరీ భావన చుట్టూ నిర్మించబడ్డాయి: ఇవి పరికరాల మధ్య కమ్యూనికేషన్‌లో పాల్గొనే అన్ని పరికరాలపై కేటాయించబడిన బఫర్‌లపై పనిచేస్తాయి. స్థానిక పరికరం ఆపరేషన్ యొక్క గమ్యస్థానాన్ని పేర్కొనడానికి టార్గెట్ ర్యాంక్ యొక్క సూచికతో పాటు దాని స్వంత స్థానిక బఫర్ లోపల తీసుకోబడిన చిరునామాను ఉపయోగించవచ్చు. క్రింది చిత్రం ఈ భావనను వివరిస్తుంది: రెండు GPUలు ఒకే పరిమాణం యొక్క సిమెట్రిక్ బఫర్‌లను కేటాయిస్తాయి, వాటికి src పాయింటర్‌లను ఉంచుతాయి. మొదటి ర్యాంక్ రెండవ దానికి 3 పూర్ణాంకాలను పంపాలనుకుంటోంది, వాటిని బఫర్ ప్రారంభంలో ఉంచుతుంది: nvshmem_int_put_nbi లక్ష్య పరికరాన్ని పేర్కొంటూ స్థానిక బఫర్ నుండి ప్రారంభ చిరునామాను పొందుతుంది. రెండవ ర్యాంక్ దాని స్వంత బఫర్ నుండి ఆఫ్‌సెట్‌ను పొందుతుంది, మొదటి పరికరానికి ఒక మూలకాన్ని పంపుతుంది, ఒకటి ఆఫ్‌సెట్ చేస్తుంది. గమ్యస్థాన చిరునామాలు ఎల్లప్పుడూ nvshmem_alloc ఉపయోగించి కేటాయించబడిన సిమెట్రిక్ బఫర్‌లై ఉండాలి, అయితే మూల బఫర్‌లు పరికర మెమరీ యొక్క ఏకపక్ష ప్రాంతాలు కావచ్చు, అవి NVSHMEM తో ముందే నమోదు చేయబడి ఉంటాయి.

NVSHMEM విస్తృత శ్రేణి ప్రిమిటివ్‌లను అందిస్తుండగా, మా కర్నల్‌లు కేవలం 3 ఫంక్షన్‌లపై మాత్రమే ఆధారపడతాయి, వాటిపై అన్ని సమకాలీకరణ మరియు ఫెన్సింగ్‌లను నిర్మిస్తాయి.

NVSHMEM ఉపయోగించి రెండు GPUల మధ్య సమమితి మెమరీ మరియు రిమోట్ రైట్స్.

nvshmemx_putmem_signal_nbi_warp: ఒక డివైస్ నుండి మరో డివైస్‌కు డేటా బ్లాక్‌ను బదిలీ చేస్తూ, రిమోట్ డివైస్‌పై ఒక flag‌ను కూడా సెట్ చేస్తుంది. ఈ ఆపరేషన్ 64-bit స్థానాన్ని NVSHMEM_SIGNAL_SETతో సెట్ చేస్తుంది లేదా NVSHMEM_SIGNAL_ADDతో పెంచుతుంది. మొత్తం మెమరీ బ్లాక్ బదిలీ అయిన తరువాతే flag నవీకరించబడుతుంది. రిమోట్ డివైస్ flag‌లో మార్పును గమనిస్తే, అది తన స్వంత మెమరీలోని buffer‌ను సురక్షితంగా యాక్సెస్ చేయగలదు. ఈ function డేటా బదిలీ మరియు సమకాలీకరణను కలిపి నిర్వహించడానికి ఉపయోగకరం.

nvshmemx_signal_op ఒకే మెమరీ స్థానంలో పనిచేస్తుంది, సాధారణంగా 64-బిట్ ఫ్లాగ్, దానిని అణువుగా సెట్ చేస్తుంది లేదా పెంచుతుంది. మెటాడేటాను పంపడంలో మరియు పరికరాలను సమకాలీకరించడంలో ఇది ఉపయోగపడుతుంది.

రిమోట్ దానిని నవీకరించే వరకు ఫ్లాగ్‌ను పోల్ చేయడానికి, సిగ్నల్ యొక్క స్వీకరించే ముగింపులో nvshmem_uint64_wait_until ఉపయోగించబడుతుంది.

nvshmem_quiet లేదా nvshmem_fence ద్వారా ఆపరేషన్‌ల మధ్య ఏ రకమైన క్రమాన్ని నిర్ధారించడం ఖరీదైనది, కాబట్టి కర్నల్‌ల మా అమలు ఇతర NVSHMEM ప్రిమిటివ్‌ల వాడకాన్ని నివారిస్తుంది మరియు వ్యక్తిగత పంపు-స్వీకరించు జతల కాకుండా ఇతర డిపెండెన్సీలను తగ్గిస్తుంది. డేటాను పంపేటప్పుడు, డేటా స్థానిక ర్యాంక్ నుండి పంపబడకుండా కూడా వేచి ఉండకుండా, మేము ఎల్లప్పుడూ ఫంక్షన్‌ల నాన్-బ్లాకింగ్ వెర్షన్‌ను ఉపయోగిస్తాము. NICలకు వాటికి యాక్సెస్ అవసరమైనప్పుడు ఈ బఫర్‌లు వినాశకరంగా ఓవర్‌రైట్ చేయబడకుండా కర్నల్‌ల సమూహం জুড়ে ఇతర, సూచించబడిన సమకాలీకరణ నిర్ధారిస్తుంది.

NVSHMEM GPUDirect RDMA ని ఉపయోగిస్తుంది, తద్వారా CPUల ప్రమేయం లేకుండా డేటా మార్పిడి కోసం NIC నేరుగా GPU మెమరీని చదవగలదు మరియు వ్రాయగలదు. అంతేకాకుండా, ConnectX NICలపై, NVSHEMEM GPU-ప్రారంభించబడిన కమ్యూనికేషన్‌కు మద్దతు ఇస్తుంది (ఇన్‌ఫినిబాండ్ GPUDirect Async లేదా IBGDA అని కూడా పిలుస్తారు), ఇది GPU నేరుగా NICకి RDMA ఆపరేషన్‌లను పోస్ట్ చేయడానికి మరియు NIC యొక్క పూర్తి క్యూను నేరుగా పోల్ చేయడానికి అనుమతిస్తుంది. GPU-ప్రారంభించబడిన కమ్యూనికేషన్‌కు మద్దతు ఇవ్వని ప్లాట్‌ఫారమ్‌లలో, NVSHMEM కమ్యూనికేషన్‌ను ప్రారంభించడానికి మరియు GPU తరపున పూర్తిని పోల్ చేయడానికి హోస్ట్ CPU పై “ప్రాక్సి” థ్రెడ్‌ను సృష్టిస్తుంది. GPU-ప్రారంభించబడిన కమ్యూనికేషన్‌కు మద్దతు ఉందా లేదా అనే దానితో సంబంధం లేకుండా NVSHMEM ప్రోగ్రామ్ పోర్టబుల్‌గా ఉంటుంది. అయితే, GPU-ప్రారంభించబడిన కమ్యూనికేషన్ జాప్యాన్ని గణనీయంగా తగ్గిస్తుంది ఎందుకంటే ఇది CPUకి వెళ్లే దారిని పూర్తిగా దాటవేస్తుంది.

పోర్టబుల్ కర్నల్స్

మేము డిస్పాచ్ మరియు కంబైన్ కర్నల్‌ల జత ద్వారా MoE కమ్యూనికేషన్‌ను అమలు చేస్తాము. డిస్పాచ్ కర్నల్‌లు ప్రతి ర్యాంక్‌లో టోకెన్‌లు మరియు రూటింగ్ సమాచారాన్ని చదవడానికి, తగిన ఎక్స్‌పర్ట్‌లకు వాటిని పంపడానికి బాధ్యత వహిస్తాయి. కంబైన్ కర్నల్స్ ఎక్స్‌పర్ట్‌ల ద్వారా ఉత్పత్తి చేయబడిన యాక్టివేషన్‌లను సేకరించి వాటి మూల ర్యాంక్‌లకు తిరిగి పంపుతాయి, అదే సమయంలో రూటర్ ద్వారా లెక్కించబడిన బరువుల ఆధారంగా ఎంపిక చేయబడిన ఎక్స్‌పర్ట్‌ల నుండి భారాన్ని సగటుగా లెక్కించబడతాయి. డేటా బదిలీలు కంప్యూటేషన్‌తో ఓవర్‌లాప్ కావడానికి వీలుగా కర్నల్స్ మరింతగా పంపు మరియు స్వీకరించు భాగాలుగా విభజించబడ్డాయి. పంపు కర్నల్స్ అన్నీ నాన్-బ్లాకింగ్ మరియు నాన్-సింక్రనైజింగ్: అవి రిమోట్‌లకు అన్ని రైట్సును పంపుతాయి. మరో ముగింపులో, కంబైన్ కర్నల్స్ మెమరీ నుండి మాత్రమే చదువుతాయి, అవసరమైన అన్ని డేటా బదిలీ అయ్యే వరకు వేచి ఉంటాయి. NICలకు పనిని పంపిన తరువాత, డేటా వైర్ ద్వారా అసమకాలంగా బదిలీ చేయబడుతున్నప్పుడు, GPUలు స్థానికంగా షేర్డ్ ఎక్స్‌పర్ట్‌లను వర్తింపజేయడం లేదా అటెన్షన్‌ను లెక్కించడం వంటి ఇతర ఉపయోగకరమైన పనిని స్థానికంగా చేయగలవు.

ప్రతి కర్నల్స్ జత దాని స్వంత సిమెట్రిక్ మెమరీ బఫర్‌లను కలిగి ఉంటుంది, ప్రతి ర్యాంక్ ఇతర అన్ని ర్యాంక్‌ల నుండి డేటాను స్వీకరించడానికి ప్రైవేట్ నిల్వను కేటాయిస్తుంది. DP సమూహం నుండి పంపబడే గరిష్ట టోకెన్‌ల సంఖ్య ర్యాంక్‌లలో స్థిరంగా ఉంటుంది, ఇది ప్రతి ర్యాంక్ ప్రతి DP ర్యాంక్ నుండి ప్రతి స్థానిక ఎక్స్‌పర్ట్ కోసం స్వీకరించగల ఎప్పర్ బౌండ్‌ను కూడా సెట్ చేస్తుంది. ఇది పంపినవారి ర్యాంక్‌లు వాటి మధ్య ఎలాంటి సమకాలీకరణ అవసరం లేకుండా, వ్రాయడానికి గమ్యస్థాన ర్యాంక్‌లో ఒక ప్రత్యేకమైన చిరునామాను పొందడానికి అనుమతిస్తుంది. డేటా స్వీకరించబడిన తర్వాత, స్వీకరించే కర్నల్‌లకు అవసరమైన సరైన ఆకృతిలో మెమరీలో ఉంచడానికి కర్నల్స్ టోకెన్‌లను చుట్టూ షఫుల్ చేస్తాయి. బఫర్‌లు గణనీయమైన పరిమాణాన్ని కలిగి ఉన్నప్పటికీ, అవి మోడల్ యొక్క అన్ని అనుక్రమ లేయర్‌లలో మళ్లీ ఉపయోగించబడతాయి.

డిస్పాచ్ మరియు కంబైన్ ఆపరేషన్ల కోసం వేర్వేరు పంపే మరియు స్వీకరించే కర్నెల్స్.

పై చిత్రంలో చూపినట్లుగా, గ్లోబల్ సమకాలీకరణ యొక్క ఏకైక రూపం combine-receive కర్నెల్‌లో అమలు చేయబడుతుంది. send నుండి డేటా పంపిన తర్వాత, ఒక rank తిరిగి వచ్చి, ఇతర rank‌ల నుండి అవసరమైన అన్ని టోకెన్లను అందుకున్నప్పుడు అమలును కొనసాగిస్తుంది మరియు అవి ప్రాసెస్ అయ్యిన వెంటనే combine send కర్నెల్‌లలోకి ప్రవేశిస్తుంది. combine-receive‌లోని barrier వల్ల, ఇతర rank ఏదైనా ఇంకా డేటా అందుకోవడానికి వేచి ఉన్నప్పుడు, ఏ rank కూడా ముందుకు వెళ్లి dispatch-send ప్రారంభించదు; ఇలా చేయడం వల్ల హానికరమైన overlap సంభవించకుండా ఉంటుంది. సాదృశ్యాన్ని దృష్టిలో ఉంచుకుని సమకాలీకరణను combine కర్నెల్‌లో నిర్వహిస్తారు; ఒక optimization‌గా, అదే barrier‌ను dispatch receive మరియు combine send కర్నెల్‌ల మధ్య కూడా అమలు చేయవచ్చు, GPU ఇతర కర్నెల్‌లను నడుపుతున్న సమయంలో NIC‌లు బదిలీలను స్థిరపడేందుకు మరింత సమయం ఇవ్వడం ద్వారా latency‌ను మరింత తగ్గించవచ్చు.

రెండు కర్నల్‌లు పరికాల యొక్క అన్ని అందుబాటులో ఉన్న SM ల জুড়ে విభజించబడ్డాయి: డిస్పాచ్ పంపు మరియు కంబైన్ రిసీవ్ కర్నల్స్ ప్రతి-ర్యాంక్ గరిష్ట టోకెన్ గణన (max_m) জুড়ে సమాంతరీకరించాలి, అయితే డిస్పాచ్ రిసీవ్ మరియు కంబైన్ పంపు కర్నల్స్ ప్రతి ర్యాంక్ మరియు స్థానిక ఎక్స్‌పర్ట్ నుండి అనేక టోకెన్‌లను నిర్వహించాలి, గరిష్టంగా max_m * (num_experts // EP) * (EP // TP).

డిస్పాచ్

టోకెన్‌లు రూట్ చేయబడిన ఎక్స్‌పర్ట్‌లను హోస్ట్ చేసే పీర్‌లకు టోకెన్‌లు మరియు బ్లాక్ స్కేలింగ్ కారకాలను పంపడానికి డిస్పాచ్ కర్నల్ బాధ్యత వహిస్తుంది. పంపే వైపు రెండు విధులను సమాంతరీకరించడానికి వార్ప్ ప్రత్యేకతపై ఆధారపడుతుంది: ప్రతి ర్యాంక్ నుండి ఎన్ని టోకెన్‌లు పంపబడతాయి అని నిర్ణయించడానికి రూటింగ్ సమాచారాన్ని సేకరించడం మరియు రిమోట్‌కు పంపడానికి టోకెన్‌లను సందేశాలుగా ప్యాక్ చేయడం. స్వీకరించే వైపు మొదట అన్ని టోకెన్ గణనలు స్వీకరించబడడానికి వేచి ఉంటుంది, ఆ తర్వాత అది షేర్డ్ మెమరీ నుండి పెలోడ్‌లను డౌన్‌స్ట్రీమ్ గ్రూప్డ్ GEMM కర్నల్స్‌కు పాస్ చేయబడే టెన్సార్‌లుగా చదువుతుంది మరియు అన్‌ప్యాక్ చేస్తుంది. ప్రతి టోకెన్ ఎక్కడికి తిరిగి పంపబడాలో సూచించడానికి ఇది కంబైన్ కర్నల్స్‌తో భాగస్వామ్యం చేయబడిన బఫర్‌లలో సమాచారాన్ని కూడా నిల్వ చేస్తుంది. రిసీవ్ కర్నల్ టోకెన్‌లను నాన్-డిటర్మినిస్టిక్ క్రమంలో కాంటిగ్యూయస్ బఫర్‌లలో చుట్టూ షఫుల్ చేస్తుంది కాబట్టి ఈ సమాచారం అవసరం.

మూలం మరియు గమ్యం ర్యాంకుల మధ్య టోకెన్లను డిస్పాచ్ చేయడం మరియు వాటి చేరికను సంకేతీకరించడం.

పంపే భాగంలో, ప్రతి బ్లాక్‌లోని 32 థ్రెడ్‌ల యొక్క ఒకే ఒక వార్ప్ రూటింగ్ సమాచారాన్ని చదవడానికి మరియు ప్రతి గమ్యస్థాన ఎక్స్‌పర్ట్ ఈ ర్యాంక్ నుండి స్వీకరించడానికి అంచనా వేయబడిన టోకెన్‌ల సంఖ్యను లెక్కించడానికి బాధ్యత వహిస్తుంది, nvshmem_signal_op ఉపయోగించి గణనను ప్లస్ ఒకటి పంపుతుంది. రిమోట్ ఎండింగ్‌లో సున్నా నుండి సున్నా కానిదిగా మారడం మూల ర్యాంక్ నుండి గణనల రసీదును సూచిస్తుంది కాబట్టి, గణన ఒకటి పెంచబడుతుంది. సమాంతరంగా, మిగిలిన వార్ప్‌లు టోకెన్‌లను అన్ని బ్లాక్‌లలో ఏకకాలంలో సిమెట్రిక్ మెమరీలోకి కాపీ చేయడానికి సహకరిస్తాయి, యాక్టివేషన్‌లు, స్కేలింగ్ కారకాలు మరియు స్థానిక ర్యాంక్‌లో వాటి సూచికను కాంటిగ్యూయస్ భాగాలుగా ప్యాక్ చేస్తాయి. టోకెన్ వ్రాయబడే చిరునామాను నిర్ణయించడానికి కంబైన్ పంపేవారికి సూచిక అవసరం. తరువాత, వార్ప్ సమూహాల জুড়ে బారియర్ ద్వారా అన్ని డేటా కాపీ చేయబడిందని నిర్ధారించుకున్న తరువాత, వార్ప్‌లు మళ్లీ స్వతంత్రంగా పనిచేస్తాయి, ప్రతి ఒక్కటి అదే బఫర్‌ను వేర్వేరు ఎక్స్‌పర్ట్‌కు సమాంతరంగా పంపుతాయి. టోకెన్‌లు nvshmemx_putmem_signal_nbi_warp ఉపయోగించి పంపబడతాయి, ఇది రిమోట్ పరికరంలో స్థానిక ర్యాంక్ నుండి పంపబడిన టోకెన్‌ల గణనను అణువుగా పెంచుతుంది. DP సమూహం లోపల, ప్రతి ర్యాంక్ పంపవలసిన టోకెన్ యొక్క ప్రతిరూపాన్ని కలిగి ఉంటుంది కాబట్టి, డిస్పాచ్ సమానంగా సమతుల్యం చేయబడుతుంది, ప్రతి పరికరం టోకెన్‌ల ఉపసమితిని బయటికి పంపుతుంది.

receive వైపున, అన్ని కర్నెల్‌లు మొదట పంపబడే మొత్తం token counts కోసం వేచి ఉండి sender rank‌లతో సమకాలీకరిస్తాయి. తరువాత, అవి atomically increment చేయబడిన పంపిన token counts మొత్తం counts‌కు చేరే వరకు వేచి ఉంటాయి; ఇది source rank‌ల నుండి వచ్చిన అన్ని payloads కూడా putmem call యొక్క semantics వలన పంపబడినట్లు సూచిస్తుంది. కర్నెల్‌లు nvshmem_uint64_wait_until ఉపయోగించి counts‌పై poll చేస్తాయి, ఈ ఆపరేషన్‌ను అన్ని blocks మరియు థ్రెడ్‌లపై ప్యారలలైజ్ చేస్తాయి. అనంతరం, cross-block barrier అన్ని data సరిగ్గా అందుకోబడకుండా ఏ block కూడా buffers‌ను చదవకూడదని నిర్ధారిస్తుంది. blocks అంతటా వ్యాప్తి చెంది, atomically increment చేయబడిన counter ద్వారా సమకాలీకరించబడిన tokens, symmetric memory నుండి సాధారణ contiguous buffers‌లోకి కాపీ చేయబడతాయి; ఇవే downstream కర్నెల్‌ల inputs‌గా మారి experts‌ను అమలు చేస్తాయి. source rank, expert index మరియు token index విడిగా నిల్వ చేయబడతాయి, combine kernel activations‌ను ఎక్కడికి పంపాలో ఖచ్చితంగా సూచిస్తూ. DP సమూహంలోని tokens వేర్వేరు డివైస్‌ల నుండి పంపబడినా, వాటిని అన్నింటినీ కలిసి సంబంధిత expert‌కు పంపేందుకు సమూహీకరిస్తారు.

కంబైన్

కంబైన్ కర్నల్స్ మళ్లీ పంపు మరియు స్వీకర్త భాగాలుగా విభజించబడ్డాయి: పంపువారు క్వాంటైజ్ చేయని 16-బిట్ యాక్టివేషన్‌లను రిమోట్ పరికరాలకు కాపీ చేస్తారు, స్వీకరించే కర్నల్స్ డేటా పంపబడే వరకు వేచి ఉంటాయి మరియు స్థానికంగా అన్ని ఎక్స్‌పర్ట్ కాంట్రిబ్యూషన్‌ల భారాన్ని సగటుగా లెక్కించబడతాయి. అదనంగా, అవి డిస్పాచ్-కంబైన్ క్రమాన్ని సమకాలీకరించడానికి బారియర్‌గా కూడా పనిచేస్తాయి: ప్రతి ర్యాంక్ పంపు కర్నల్స్‌లోకి ప్రవేశించినప్పుడు ప్రతి పీర్‌పై ఫ్లాగ్‌ను సెట్ చేస్తుంది, ఫ్లాగ్ సెట్ చేయబడిందని గమనించకపోతే స్వీకరించే కర్నల్స్ తిరిగి రావడానికి అనుమతించబడవు. సమకాలీకరణ యొక్క జాప్యం కనిష్టంగా ఉంటుంది, ఎందుకంటే ఇది వాస్తవ కమ్యూనికేషన్ మరియు గణనతో అతివ్యాప్తి చెందుతుంది.

ప్రతి డేటా-సమాంతర ర్యాంక్‌లోని టోకెన్లలో నిపుణుల అవుట్‌పుట్‌లను కలపడం.

పంపే వైపు, కర్నల్స్ అన్ని స్థానిక ఎక్స్‌పర్ట్‌లకు కేటాయించబడిన టోకెన్‌ల జాబితాను సమాంతరంగా పరిశీలిస్తాయి, గమ్యస్థాన ర్యాంక్‌లోని బఫర్‌కు వాటిని వ్రాస్తాయి. టార్గెట్ ర్యాంక్, ఎక్స్‌పర్ట్ సూచిక మరియు టోకెన్ సూచిక టోకెన్‌ల రసీదుపై స్కేటర్ కర్నల్స్ ద్వారా జనాభా చేయబడిన ప్రతి-టోకెన్ బఫర్‌ల నుండి చదవబడతాయి. పైన ఉన్న చిత్రంలో సూచించినట్లుగా, ప్రతి పంపేవారు వ్రాయడానికి ప్రతి ఎక్స్‌పర్ట్‌కు దాని নিজস্ব ప్రైవేట్ మెమరీ ప్రాంతాన్ని కలిగి ఉంటారు, సమకాలీకరణ అవసరాన్ని నివారిస్తారు. డిస్పాచ్ వలె కాక, డేటా రసీదును సూచించడానికి కంబైన్ గమ్యస్థాన ర్యాంక్‌లో ప్రతి టోకెన్ కౌంటర్‌లను అణువుగా పెంచుతుంది: కౌంటర్ టోకెన్ పంపబడిన ఎక్స్‌పర్ట్‌ల సంఖ్యతో సరిపోలినప్పుడు, టోకెన్ కంటెంట్‌లను యాక్సెస్ చేయవచ్చు.

రిసీవ్ కర్నల్‌లో, టోకెన్‌ల జాబితా బహుళ బ్లాక్‌లలో సమాంతరంగా పరిశీలించబడుతుంది, సిగ్నలింగ్ ఆపరేషన్ ద్వారా సెట్ చేయబడిన ఫ్లాగ్‌ను పోల్ చేయడం ద్వారా వాటి కంటెంట్‌లు వచ్చే వరకు వేచి ఉంటుంది. రాకతో, ప్రైవేట్ బఫర్‌ల నుండి పెలోడ్‌లు చదవబడతాయి, రూటింగ్ టేబుల్ ఏ బఫర్ నుండి చదవాలో మరియు ప్రతి ఎక్స్‌పర్ట్‌కు ఏ బరువును కేటాయించాలో సూచిస్తుంది. ఫలితాలు బాహ్యంగా కేటాయించబడిన టెన్సార్‌లలో వ్రాయబడతాయి, అన్ని పరికరాలు బారియర్‌ను దాటిన తర్వాత కర్నల్ అమలును ముగిస్తుంది. DP సమూహం জুড়ে, అన్ని ర్యాంక్‌లు తమ స్వంత ప్రతిరూపాలను లెక్కించడానికి ప్రతి ఎక్స్‌పర్ట్ యాక్టివేషన్ యొక్క కాపీని పొందుతాయి.

బెంచ్‌మార్క్‌లు

InfiniBand మరియు CX-7 NICల ద్వారా కనెక్ట్ చేయబడిన 16 నోడ్‌లలో విస్తరించి ఉన్న 128 GPUల క్లస్టర్‌పై మేము మా కర్నల్స్‌ను మూల్యాంకనం చేస్తాము. మేము GPUDirect Async (IBGDA) మరియు CPU ప్రాక్సీతో నమ్మదగిన కనెక్షన్ (RC) రెండింటిని ప్రయత్నిస్తాము. మేము వాటిని అత్యంత ఆప్టిమైజ్ చేయబడిన డీప్‌సీక్ అమలుతో పాటు, PyTorch (NCCL ద్వారా) లేదా NVSHMEM ద్వారా అందించబడే దట్టమైన ప్రిమిటివ్‌లతో పోల్చాము.

బహుళ-నోడ్ EP128 కాన్ఫిగరేషన్‌లో ప్రతి GPUకి 128 టోకెన్ల కోసం కమ్యూనికేషన్ లేటెన్సీ.

దట్టమైన NVSHMEM ఆల్-టు-ఆల్ ఆపరేషన్‌పై IBRC మరియు IBGDA యొక్క పనితీరు ఒకేలా ఉన్నప్పటికీ (6378 µs vs 6180 µs), విరళ కర్నల్స్‌తో IBGDA గణనీయంగా వేగంగా ఉంటుంది. డిస్పాచ్ మరియు కంబైన్‌లను జోడిస్తే, IBGDA 902 µs ఉపయోగిస్తుంది అయితే IBRC 3223 µs తీసుకుంటుంది - జాప్యంలో 3.6 రెట్లు మెరుగుదల. ఆల్-టు-ఆల్ అనేది బ్యాండ్‌విడ్త్ బౌండ్ అయినప్పటికీ, విరళ కర్నల్స్ ఆర్డర్‌ల పరిమాణంలో తక్కువ డేటాను బ్రాడ్‌కాస్ట్ చేస్తాయి, జాప్యం ద్వారా బౌండ్ అవుతాయి. GPU మరియు NICని సమకాలీకరించడానికి CPU ప్రాక్సి అవసరం లేకుండా, నేరుగా GPU నుండి నెట్‌వర్క్ బదిలీలను ట్రిగ్గర్ చేయడం ద్వారా, ఎండ్-టు-ఎండ్ జాప్యం గణనీయంగా తగ్గించబడుతుంది.

మా పోర్టబుల్ కర్నల్స్ అత్యంత ఆప్టిమైజ్ చేయబడిన డీప్‌సీక్ కర్నల్స్ కంటే దాదాపు 2 రెట్లు నెమ్మదిగా ఉన్నప్పటికీ, దట్టమైన కర్నల్స్‌తో పోలిస్తే అవి జాప్యాన్ని 10 రెట్లు మెరుగుపరుస్తాయి (902 µs vs 9944 µs).

అదనంగా, sender-receiver components‌గా విభజించడం వల్ల library primitives‌తో పోలిస్తే కొంత latency‌ను కూడా దాచిపెట్టవచ్చు.

సింగిల్-నోడ్ EP8 కాన్ఫిగరేషన్‌లో ప్రతి GPUకి 128 టోకెన్ల కోసం కమ్యూనికేషన్ లేటెన్సీ.

సింగిల్-నోడ్ (EP8) పై, NVSHMEM రవాణా కోసం NVLINKని ఉపయోగిస్తుంది, నోడ్-అంతర్ కమ్యూనికేషన్ కంటే తక్కువ జాప్యం మరియు అధిక థ్రూపుట్‌ను అందిస్తుంది. మా పోర్టబుల్ కర్నల్స్ సింగిల్-నోడ్ (186µs vs 481 µs) పై DeepEP కంటే దాదాపు 2.5 రెట్లు వేగంగా ఉంటాయి.

మరిన్ని మెరుగుదలలు

ఇక్కడ వివరించబడిన కర్నల్స్ ML ఫ్రేమ్‌వర్క్‌ల అంతర్నిర్మిత ప్రిమిటివ్‌లను మించిపోతాయి మరియు NVLink లేదా InfiniBand వంటి నిర్దిష్ట పరికరాల మధ్య రవాణాల కోసం అతిగా ప్రత్యేకత లేకుండ మంచి పనితీరును అందిస్తాయి. ఇప్పటికే పేర్కొన్న అవకాశాలతో పాటు, కమ్యూనికేషన్ ప్రిమిటివ్‌లను మరింత ప్రత్యేకమైన వెర్షన్‌లతో భర్తీ చేయడం ద్వారా తదుపరి పనితీరు లాభాలను సాధించవచ్చు. ఉదాహరణకు, NVLink জুড়ে, సిమెట్రిక్ మెమరీ వాడకాన్ని పరికరాల জুড়ে భాగస్వామ్యం చేయబడిన బఫర్‌లతో భర్తీ చేయవచ్చు, కొన్ని కాపీలను తొలగించడం మరియు టోకెన్ బ్యాచ్‌లకు బదులుగా వ్యక్తిగత టోకెన్‌లలో చక్కటి సమకాలీకరణ పథకాలను అనుమతించడం. InfiniBand জুড়ে, ఒక అమలు అంతర్లీన క్యూ జతలను నేరుగా యాక్సెస్ చేయగలదు, ఆశించిన మరియు పంపబడిన టోకెన్ గణనలను బదిలీ చేయవలసిన అవసరాన్ని తొలగించగలదు మరియు టోకెన్‌లు వచ్చినప్పుడు క్యూల నుండి అవుట్‌పుట్ బఫర్‌లకు ఫ్లష్ చేయగలదు. అయితే, ఇటువంటి అమలులు పోర్టబిలిటీ ధరతో వస్తాయి, అయితే నిర్దిష్ట హార్డ్‌వేర్ కోసం ఆప్టిమైజ్ చేయడానికి అభివృద్ధి ప్రయత్నానికి కట్టుబడి ఉండే ముందు నిర్దిష్ట కాన్ఫిగరేషన్‌లతో క్లస్టర్‌లను మూల్యాంకనం చేయడానికి మా అమలు అనుమతిస్తుంది.

ముగింపు

విభిన్న హార్డ్‌వేర్ కాన్ఫిగరేషన్‌లలో అనుకూలతను నిర్వహిస్తూ ప్రామాణిక ఆల్-టు-ఆల్ కమ్యూనికేషన్‌తో పోలిస్తే 10 రెట్లు వేగవంతమైన పనితీరును సాధించే MoE కమ్యూనికేషన్ కోసం మేము అధిక-పనితీరు గల, పోర్టబుల్ లైబ్రరీని అందించాము. NVLink తో సింగిల్-నోడ్ డిప్లాయ్‌మెంట్‌లపై, మా పరిష్కారం మునుపటి అమలుల కంటే 2.5 రెట్లు తక్కువ జాప్యాన్ని ప్రదర్శిస్తుంది.

మా విధానం GPU-ప్రారంభించబడిన కమ్యూనికేషన్ మద్దతు, కంప్యూటేషన్-కమ్యూనికేషన్ ఓవర్‌లాప్‌ను ప్రారంభించే స్ప్లిట్ కర్నల్ ఆర్కిటెక్చర్ మరియు కనిష్ట NVSHMEM ప్రిమిటివ్‌లను ఉపయోగించి సమర్థవంతమైన టోకెన్ డిస్పాచ్‌తో సహా కీలకమైన ఆవిష్కరణల ద్వారా పనితీరును పోర్టబిలిటీతో సమతుల్యం చేస్తుంది. మల్టీ-నోడ్ సెటప్‌లపై అత్యంత ప్రత్యేకమైన అమలుల కంటే దాదాపు 2 రెట్లు నెమ్మదిగా ఉన్నప్పటికీ, మా లైబ్రరీ వివిధ నెట్‌వర్క్ వాతావరణాలలో (NVLink, CX-7 మరియు EFA) అత్యుత్తమ వశ్యతను అందిస్తుంది.

MoE మోడల్స్ స్కేల్ చేయడం కొనసాగుతున్నందున, మా లాంటి సమర్థవంతమైన కమ్యూనికేషన్ వ్యూహాలు ఆచరణాత్మక విస్తరణ కోసం మరింత ముఖ్యమైనవిగా మారతాయి. మా పూర్తిగా ఓపెన్ సోర్స్ అమలు https://github.com/ppl-ai/pplx-kernels వద్ద అందుబాటులో ఉంది.

ప్రస్తావనలు

DeepEP

DeepSeek-V3 సాంకేతిక నివేదిక

NVIDIA NVSHMEM

సైటేషన్

BibTeX
@online{perplexity2025EfficientAndPortableMixtureOfExpertsCommunication,
  author = {{Perplexity} and Nandor Licker and Lequn Chen and Phi Hoang},
  title = {{Efficient and portable mixture-of-experts communication}},
  date = {2025-04-02},
  url = {https://perplexity.coolkeypoint.com/hub/blog/efficient-and-portable-mixture-of-experts-communication}
}