Mai departeUrmătorul ghid
KServe și Model Serving pe Kubernetes
Tehnic
GHID tehnic
O arhitectură de servire care împarte inferența modelului de limbaj mare în două faze separate — precompletare și decodare — și le rulează pe grupuri diferite de GPU.
Ascultă acest ghidNarativ AI · ~2 min
Contează pentru că aceste două faze au apetite hardware opuse, iar forțarea lor pe aceleași mașini irosește capacitatea și dăunează latenței.
Când un LLM răspunde, funcționează în două etape. Precompletarea citește întreaga solicitare simultan și construiește memoria cache-cheie-valoare (KV); aceasta este o rafală mare, paralelă, legată de calcul, care saturează unitățile matematice ale GPU-ului. Decodificarea generează apoi token-uri pe rând, fiecare pas citind întregul cache KV - un proces de calcul ușor legat de lățimea de bandă a memoriei. Rulați împreună, o pre-umplere lungă blochează decodarea tuturor (blocarea capului de linie), iar gruparea celor două creează interferențe. Dezagregarea pune precompletarea unui grup de GPU și decodifică pe altul, transferând memoria cache KV între ele prin interconexiuni rapide precum NVLink sau InfiniBand. Fiecare grup este reglat și scalat în mod independent, îmbunătățind randamentul bun, netezind latența finală și permițând operatorilor să atingă ținte strânse de timp până la primul token și timp pe jeton de ieșire simultan.
Un asistent de chat direcționează solicitările de documente lungi către un cluster de pre-completare cu un număr mare de calculatoare, apoi transmite răspunsuri dintr-un cluster de decodare optimizat pentru memorie pentru a menține latența de tastare fără probleme.
NVIDIA Dynamo și vLLM le permit operatorilor să implementeze grupuri separate de precompletare și decodare de lucrători, astfel încât o explozie de solicitări lungi să nu înghețe generațiile în curs.
Mooncake (folosit de Kimi de la Moonshot AI) dezagregează pre-completarea și decodifică și adaugă un grup de cache KV distribuit pentru a reduce recalcularea promptă redundantă la scară.
Un serviciu de completare a codului dedică un mic grup de precompletare pentru solicitări scurte și un grup mare de decodare, deoarece majoritatea costurilor provin din transmiterea în flux a multor jetoane de ieșire.
Așteptați-vă ca dezagregarea să devină implicită în stivele de producție. Sisteme precum DistServe, Splitwise și Mooncake l-au popularizat, iar vLLM și NVIDIA Dynamo oferă acum moduri dezagregate. Cercetările promovează optimizările transferului KV-cache, poolingul și reutilizarea cache-ului între solicitări, reechilibrarea dinamică a rapoartelor de pre-completare/decodare în condiții de schimbare a traficului și o integrare mai strânsă cu memorarea în cache a prefixelor și pre-completarea fragmentată. Pe măsură ce ferestrele de context cresc în milioane de jetoane, separarea acestor faze devine din ce în ce mai esențială pentru difuzarea rentabilă, cu latență redusă.
Buletin gratuit
Trei povești AI verificate în fiecare dimineață de zi lucrătoare, scrise în engleză simplă. Gratuit pentru totdeauna, fără reclame.
Un e-mail în fiecare zi lucrătoare. Dezabonare cu un singur clic. Nu vindem niciodată și nu împărtășim adresa ta.
Testează-te
Feedback instantaneu la fiecare răspuns și un certificat partajabil cu un ID verificabil după ce parcurgi un curs.
Susține educația AI gratuită. AI Understanding este o organizație nonprofit 501(c)(3) — fără reclame, fără barieră de plată, pentru totdeauna. Fă o donație
O arhitectură de servire care împarte inferența modelului de limbaj mare în două faze separate — precompletare și decodare — și le rulează pe grupuri diferite de GPU. Contează pentru că aceste două faze au apetite hardware opuse, iar forțarea lor pe aceleași mașini irosește capacitatea și dăunează latenței.
Precompletarea procesează întregul prompt în paralel și saturează calculul, în timp ce decodificarea citește memoria cache KV la fiecare pas și este limitată de lățimea de bandă a memoriei - apetite opuse care justifică grupuri separate, reglate independent.
Prefill construiește memoria cache KV pentru prompt; decodarea are nevoie de acel cache pentru a continua generarea, astfel încât memoria cache este expediată printr-o interconectare rapidă la pool-ul de decodare.
Pe GPU-urile partajate, o rafală lungă de pre-umplere poate bloca pașii de decodare în curs; separarea lor previne interferența și stabilizează latența cozii.
Pre-completarea procesează toate jetoanele prompte împreună, astfel încât loturi mai mari alimentează bine nucleele tensorilor; decodare generează câte un token și este controlat de memorie, astfel încât se scalează diferit.
Sunt necesare legături cu lățime de bandă mare și cu latență redusă, cum ar fi NVLink (intra-nod) și InfiniBand (inter-nod), astfel încât transferul KV-cache să nu devină noul blocaj.
Continuați să învățați
Mai multe ghiduri alese pentru acest subiect
Mai departeUrmătorul ghid
KServe și Model Serving pe Kubernetes
Tehnic