Disaggregert forhåndsutfylling og dekoding
En serveringsarkitektur som deler store språkmodellslutninger i to separate faser – forhåndsutfylling og dekode – og kjører dem på forskjellige grupper av GPUer.
Oversikt
It matters because these two phases have opposite hardware appetites, and forcing them onto the same machines wastes capacity and hurts latency.
Dypdykk
Når en LLM svarer, fungerer det i to trinn. Prefill leser hele ledeteksten på en gang og bygger nøkkelverdi (KV) cachen; dette er en stor, parallell, beregningsbundet serie som metter GPUens matematiske enheter. Dekode genererer deretter tokens én om gangen, og hvert trinn leser hele KV-bufferen – en minnebåndbreddebundet, lett-beregnet trickle. Løp sammen, en lang prefill stopper alles dekoding (head-of-line blokkering), og batching av de to skaper interferens. Disaggregering setter forhåndsutfylling på en GPU-pool og dekoder på en annen, og overfører KV-bufferen mellom dem over raske sammenkoblinger som NVLink eller InfiniBand. Hvert basseng er innstilt og skalert uavhengig, noe som forbedrer goodput, jevner ut halelatens og lar operatører treffe stramme tid-til-første-token- og time-per-output-token-mål samtidig.
Teknisk innsikt
De to fasene er forskjellige i deres flaskehals. Prefill behandler alle prompt-tokens parallelt, så FLOP-ene skaleres med promptlengde og den maksimerer tensorkjernene. Dekoding er autoregressiv: hvert nytt token trenger ett foroverpass som leser hele KV-hurtigbufferen fra HBM på nytt, så gjennomstrømmingen styres av minnebåndbredde, ikke beregning. Disaggregering utnytter dette ved å dimensjonere, gruppere og til og med velge forskjellig parallellitet for hver pool, og deretter sende KV-bufferen fra forhåndsutfyllingsarbeidere til dekodearbeidere.
Strategisk innvirkning
Cost and budget
Arkitekturbeslutninger driver ytelse og driftskostnader i årevis.
Tydeligere avgjørelser
Teknisk utdanning hjelper team med å velge riktig stabel, ikke bare den nyeste.
Quality control
Bedre ingeniørvalg reduserer pålitelighetshendelser i produksjonen.
Fremtiden for disaggregert forhåndsutfylling og dekoding
Forvent at disaggregering blir en standard i produksjonsstabler. Systemer som DistServe, Splitwise og Mooncake populariserte det, og vLLM og NVIDIA Dynamo sender nå disaggregerte moduser. Forskning presser KV-cache-overføringsoptimaliseringer, cache-pooling og gjenbruk på tvers av forespørsler, dynamisk rebalansering av prefill/decode-forhold under skiftende trafikk, og tettere integrasjon med prefiksbufring og chunked prefill. Etter hvert som kontekstvinduer vokser til millioner av tokens, blir det stadig viktigere å skille disse fasene for kostnadseffektiv visning med lav latens.
Real-World Implementering
En chat-assistent dirigerer lange dokumentmeldinger til en datamaskintung forhåndsutfyllingsklynge, og strømmer deretter svar fra en minneoptimalisert dekodeklynge for å holde skriveforsinkelsen jevn.
NVIDIA Dynamo og vLLM lar operatører distribuere separate forhåndsutfyllings- og dekode arbeidergrupper, slik at en serie med lange meldinger ikke fryser pågående generasjoner.
Mooncake (brukt av Moonshot AIs Kimi) disaggregerer forhåndsutfylling og dekoder og legger til en distribuert KV-bufferpool for å kutte redundant prompt omberegning i skala.
En kodefullføringstjeneste dedikerer et lite forhåndsutfyllingsbasseng for korte forespørsler og et stort dekodebasseng, siden de fleste kostnadene kommer fra streaming av mange utdatatokens.
Risikoer og rekkverk
Optimalisering av ett benchmark kan skjule bredere systemsvakheter.
Infrastruktur- og vedlikeholdskostnader er ofte undervurdert.
Sikkerhets- og observerbarhetsgap kan vokse etter hvert som systemene blir mer komplekse.
Veikart for implementering
Definer ventetid, kvalitet og kostnadsmål før implementering.
Benchmark under realistiske belastnings- og dataforhold.
Instrumentovervåking for feil, drift og brukerpåvirkning.
Forbered tilbakerulling og hendelsesresponsbaner før skalering.
Fortsett å utforske
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Disaggregated Prefill and Decode Serving quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Neste guide
KServe og modellservering på Kubernetes
Ofte stilte spørsmål
What is Disaggregated Prefill and Decode Serving?
En serveringsarkitektur som deler store språkmodellslutninger i to separate faser – forhåndsutfylling og dekode – og kjører dem på forskjellige grupper av GPUer. Det betyr noe fordi disse to fasene har motsatt maskinvareappetitt, og å tvinge dem inn på de samme maskinene sløser med kapasitet og skader ventetiden.
Hva er hovedårsaken til maskinvare for å separere forhåndsfyll og dekode på forskjellige GPU-pooler?
Prefill behandler hele prompten parallelt og metter databehandling, mens dekoding leser KV-cachen hvert trinn og begrenses av minnebåndbredde – motsatte appetitt som rettferdiggjør separate, uavhengig innstilte bassenger.
Hvilken datastruktur må overføres fra prefill-arbeidere til dekodearbeidere?
Prefill bygger KV-cachen for ledeteksten; dekode trenger denne hurtigbufferen for å fortsette å generere, så hurtigbufferen sendes over en rask sammenkobling til dekodepoolen.
Hvilket problem reduserer disaggregering spesifikt i et delt GPU-oppsett?
På delte GPUer kan en lang prefill-serie blokkere pågående dekodingstrinn; separering av dem forhindrer denne interferensen og stabiliserer halelatens.
Hvorfor kan forhåndsfylling batches aggressivt, men dekode fordeler ved forskjellig innstilling?
Prefill behandler alle prompt-tokens sammen, så større batcher mater tensorkjernene godt; dekoding genererer ett token om gangen og lukkes av minnet, så det skaleres annerledes.
Hvilke sammenkoblinger brukes vanligvis til å flytte KV-cachen mellom disaggregerte bassenger?
Lenker med høy båndbredde og lav latens som NVLink (intra-node) og InfiniBand (inter-node) er nødvendig, slik at KV-cache-overføring ikke blir den nye flaskehalsen.