GHID tehnic

Servire dezagregată pentru completare și decodificare

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

Pe această pagină2 minute de lectură
  1. Prezentare generală
  2. Scufundare în profunzime
  3. Implementare în lumea reală
  4. Viitorul servirii dezagregate de precompletare și decodare
  5. Punând-o în practică
  6. Continuați să explorați
  7. Întrebări frecvente

Prezentare generală

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.

Scufundare în profunzime

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.

Implementare în lumea reală

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.

Viitorul servirii dezagregate de precompletare și decodare

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ă.

Punând-o în practică

De ce contează

  • Cost și buget. Deciziile de arhitectură generează performanța și costurile de operare de ani de zile.
  • Decizii mai clare. Educația tehnică ajută echipele să aleagă stiva potrivită, nu doar cea mai nouă.
  • Controlul calității. Opțiuni de inginerie mai bune reduc incidentele de fiabilitate în producție.

Atenție la

  • Optimizarea unui punct de referință poate ascunde slăbiciunile mai largi ale sistemului.
  • Costurile de infrastructură și întreținere sunt adesea subestimate.
  • Lacunele de securitate și observabilitate pot crește pe măsură ce sistemele devin mai complexe.

Următorii pași

  1. Definiți obiectivele de latență, calitate și cost înainte de implementare.
  2. Benchmark în condiții realiste de încărcare și date.
  3. Monitorizarea instrumentelor pentru erori, deriva și impactul utilizatorului.
  4. Pregătiți căile de retragere și răspuns la incident înainte de scalare.

Continuați să explorați

Buletin gratuit

Primește briefingul zilnic AI

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

Take the Disaggregated Prefill and Decode Serving quiz

Feedback instantaneu la fiecare răspuns și un certificat partajabil cu un ID verificabil după ce parcurgi un curs.

Quiz Start

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

Întrebări frecvente

Ce este Servirea dezagregată de precompletare și decodare?

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.

Care este motivul hardware de bază pentru separarea completării preliminare și a decodării pe diferite grupuri de GPU?

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.

Ce structură de date trebuie transferată de la lucrătorii de precompletare pentru a decoda lucrătorii?

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.

Ce problemă reduce în mod specific dezagregarea într-o configurare GPU partajată?

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.

De ce pre-umplerea poate fi grupată în mod agresiv, dar decodarea beneficiază de un reglaj diferit?

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.

Ce interconexiuni sunt utilizate de obicei pentru a muta memoria cache KV între pool-uri dezagregate?

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.