- „Meta“ nuolat plečiame LLM išvadų sistemų ribas, kad būtų galima naudoti tokias programas kaip „Meta AI App“.
- Dalinamės kaip mes sukūrė ir įdiegė pažangias paralelizmo technologijas optimizuoti pagrindines našumo metrikas, susijusias su išteklių efektyvumu, pralaidumu ir delsa.
Sparti didelių kalbų modelių (LLM) raida atvedė į naują AI valdomų programų erą – nuo pokalbių agentų iki pažangaus turinio generavimo. Tačiau naudojant šiuos didžiulius modelius, kad būtų galima daryti išvadas realiuoju laiku, kyla didelių iššūkių, ypač siekiant didelio pralaidumo, mažos delsos ir geresnio išteklių naudojimo efektyvumo.
Pagrindinis mūsų tikslas yra optimizuoti pagrindinius našumo rodiklius:
- Išteklių efektyvumas: Maksimalus GPU panaudojimas, siekiant pagerinti veiklos efektyvumą.
- Pralaidumas (užklausos/s): Aptarnaujama daugiau vartotojų apdorojant didesnį užklausų kiekį.
- Latencija: Sumažinkite atsako laiką, kad naudotojo patirtis būtų sklandi. Tai apima:
- Išankstinio užpildymo laikas iki pirmojo prieigos rakto (TTFT): Laikas, per kurį pasirodo pirmoji atsakymo dalis, geriausia mažiau nei 350 ms.
- Laikas iki prieaugio prieigos rakto (TTIT) dekodavimui: Vėlavimas tarp paskesnių žodžių, skirtas mažiau nei 25 ms.
Šios metrikos pabrėžia skirtingus LLM išvadų skaičiavimo poreikius: išankstinis užpildymas reikalauja daug skaičiavimų, o dekodavimas reikalauja atminties pralaidumo. Siekdami išspręsti šiuos iššūkius ir sudaryti sąlygas diegti didelius modelius, sukūrėme ir įdiegėme pažangias lygiagretumo technologijas.
Du LLM išvados etapai
Įprasta LLM generatyvinės išvados užduotis vyksta dviem etapais:
- Išankstinio užpildymo etapas: Šiame etape apdorojamas įvesties raginimas (kuris gali būti tūkstančių žetonų ilgio), kad sugeneruotų rakto vertės (KV) talpyklą kiekvienam LLM transformatoriaus sluoksniui. Išankstinis užpildymas yra apskaičiuotas, nes dėmesio mechanizmas keičiasi kvadratiškai pagal sekos ilgį.
- Dekodavimo etapas: Šiame etape naudojama ir laipsniškai atnaujinama KV talpykla, kad po vieną būtų generuojami žetonai (žodžiai). Dekodavimas yra pririštas prie atmintiesnes atminties skaitymo įvesties / išvesties laikas dominuoja dėmesio metu, o modelio svoriai ir KV talpykla užima didžiąją dalį atminties.
Lygiagretumo kliūčių šalinimas
Siekdami efektyviai padidinti LLM išvadas, ypač tvarkydami ilgus kontekstus ir didžiulius modelius, naudojame tris pagrindinius išvadų lygiagretumo tipus:
1. Tenzorinis lygiagretumas (TP), kuris pagerina didelių modelių pritaikymą keliuose GPU ir pasiekia didelį pralaidumą, kurio negali užtikrinti vienas įrenginys. Tai apima atskirų modelio sluoksnių, pvz., dėmesio blokų ir daugiasluoksnių perceptronų (MLP) sluoksnių, suskaidymą į mažesnius nepriklausomus blokus, kuriuos galima vykdyti skirtinguose įrenginiuose.
Tensorinio lygiagretumo iššūkis yra „allreduce“ ryšio operacija, kuri gali prisidėti iki 30 % galutinio vėlavimo. Norėdami tai sušvelninti, sukūrėme tiesioginė prieiga prie duomenų (DDA) algoritmai:
- DDA plokščias algoritmas: Pagerina mažo pranešimo dydžio sumažinimo delsą, leisdama kiekvienam rangui tiesiogiai įkelti atmintį iš kitų rangų ir atlikti vietines mažinimo operacijas. Tai sumažina delsą nuo O(N) iki O(1), padidindama apsikeitimo duomenimis kiekį nuo O(n) iki O(n^2).
- DDA medžio algoritmas: Suskaido „allreduc“ į dvi fazes (sumažinti-išsklaidyti ir surinkti viską) ir kiekviename žingsnyje naudoja tiesioginę prieigą prie duomenų. Taip perkeliamas toks pat duomenų kiekis, kaip ir skambėjimo algoritmas, bet sumažina delsą iki pastovaus koeficiento, todėl jis tinkamas šiek tiek didesnio dydžio pranešimams.
Mūsų DDA sprendimai pasižymi dideliu greičiu, palyginti su tokiomis bazinėmis linijomis, kaip NCCL (NVIDIA Collective Communications Library) ir RCCL (ROCm Communication Collectives Library, skirta AMD GPU). Pavyzdžiui, su AMD MI300X pasiekėme bendrą našumo lygumą su Nvidia H100, kai DDA 10–50 % viršijo RCCL pradinį našumą dekoduojant (maži pranešimų dydžiai) ir 10–30 % pagreitino išankstinį užpildymą, todėl TTIT sumažėjo maždaug 10 %.
2. Konteksto paralelizmas (CP), kuri palengvina itin ilgų kontekstų, tokių kaip 1M/10M žetonų galimybės, pristatytos su „Llama 4“.. Ilgo konteksto išvados kelia unikalių iššūkių:
- Apskaičiuoti: Tankaus dėmesio FLOP mastelis kvadratiškai keičiasi atsižvelgiant į konteksto ilgį, todėl dominuoja dėmesys.
- Atmintis: KV talpykla auga tiesiškai atsižvelgiant į kontekstą.
- Bendravimas: Ryšio delsa padidėja, kai lygiagrečiai sujungiami keli pagrindiniai kompiuteriai.
Mes įgyvendinome du kontekstinio paralelizmo variantai dėmesio modulyje, dažnai vadinamame „skambučio dėmesiu“:
- Pass-KV: Taikant šį metodą, įvesties žetonai yra padalinti į keletą CP rangų. Kiekvienas rangas apskaičiuoja savo užklausos, rakto ir reikšmės tenzorių dalį. Tada tarp eilučių keičiamasi raktų ir verčių tenzoriais, kad būtų galima sutelkti dėmesį visame kontekste.
- Pass-Q: Panašus į Pass-KV, bet užklausos tenzoriai keičiasi tarp rangų.
Mūsų konteksto lygiagretumo optimizavimas kartu su greito dėmesio branduoliu įgalino puikų ilgo konteksto galimybių našumą. Mes pasiekėme mažiau nei vieną minutę vienam milijonui žetonų viename H100 pagrindiniame kompiuteryje ir mažiau nei vieną minutę 10 milijonų žetonų naudodami paskirstytą išvadą keliuose H100 pagrindiniuose kompiuteriuose (pvz., 32 H100 pagrindiniuose kompiuteriuose). Naudodami „Llama 3 405B“ pademonstravome beveik tiesinį mastelio keitimą – 128 000 žetonų išankstinį užpildymą pasiekėme per 3,8 sekundės, kai CP viršija 16 mazgų, ir 1 M žetono išankstinį užpildymą per 77 sekundes.
3. Ekspertų paralelizmas (EP)kuris padeda keisti ekspertų mišinio (MoE) modelius, kai dėl daugybės „ekspertų“ (neuroninio tinklo modulių) neįmanoma pritaikyti viso modelio viename pagrindiniame kompiuteryje. Darydami EP pagrįstas išvadas, mes naudojame dviejų kadrų, „viskas visiems“ ryšio modelį, kad keistume duomenų lygiagretumo ir ekspertų lygiagretumo rangus, pagrįstus maršruto parinkimu.
Visiškas ryšys gali prisidėti 10–30 % prie pabaigos iki galo delsos, ypač dekoduojant pranešimus (100 KB iki 2 MB). Siekdami tai optimizuoti, ieškome sprendimų, įskaitant:
- Dinaminis „viskas visiems“: Duomenų dalių siuntimas nutolusiems kaimynams.
- Nuolatinis „viskas į visus“: Spręsti sulėtėjimą, kurį pirmiausia sukelia keitimasis atminties rankenomis, tinklo apkrovos balansavimas ir procesoriaus papildomos sąnaudos.
Žvilgsnis į priekį: išskaidytos išvados ir ateities iššūkiai
Siekdami dar labiau optimizuoti LLM išvadas, judame link ND paralelizmas (CP, PP, EP, TP per mazgus, su atskiru DP) ir išskaidyti išankstinio užpildymo ir dekodavimo pakopas. Tai leidžia geriau subalansuoti išteklius ir naudoti nevienalytę aparatinę įrangą, kai išankstiniam užpildymui naudojama daug skaičiavimo reikalaujanti aparatinė įranga, o dekodavimui naudojama didelė atminties pralaidumo aparatinė įranga. Šis daugiamatis lygiagretumas gali padėti atblokuoti milžiniškų modelių aptarnavimą ir vertinimą.
Ateities iššūkiai šioje erdvėje apima:
- Debesų audinio dizainas: Pagrindinės debesų infrastruktūros optimizavimas LLM darbo krūviams.
- Ryšys su branduoliu (sulietas branduolys): Ryšio operacijų integravimas tiesiai į skaičiavimo branduolius, kad būtų didesnis efektyvumas.
- Įrenginio inicijuotas branduolys: Leidžiama įrenginiams tiesiogiai pradėti operacijas, sumažinant procesoriaus apkrovą.
Šie lygiagretinimo ir sistemos lygio patobulinimai padėjo įgalinti naujos kartos AI programas ir išplėsti ribas, kurias gali pasiekti LLM. Esame įsipareigoję nuolat diegti naujoves, siekdami užtikrinti veiksmingą ir keičiamo dydžio LLM išvadas milijonams vartotojų visame pasaulyje.