Kontinuerlig batchning
Kontinuerlig batchning är en serveringsteknik som lägger till och tar bort förfrågningar från en pågående batch token-by-token, istället för att vänta på att en hel fast batch ska avslutas.
Översikt
It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.
Djupdykning
GPU:er är snabbast när de behandlar många förfrågningar tillsammans i en batch. Den naiva metoden, statisk batchning, grupperar en fast uppsättning förfrågningar, kör dem alla till slut, och startar sedan nästa batch. Problemet: språkmodellens utdata varierar enormt i längd, så korta förfrågningar avslutas tidigt och deras platser är inaktiva medan batchen väntar på den längsta, slösar bort GPU-cykler och försenar nyanlända. Kontinuerlig batchning (även kallad in-flight eller iteration-level batching, populärt av Orca-papperet och används i vLLM, TensorRT-LLM och TGI) fungerar med granulariteten för ett enda avkodningssteg. Efter att varje token har genererats lämnar färdiga sekvenser batchen och nyinkomna förfrågningar läggs in omedelbart. Detta håller batchen full och GPU:n mättad, vilket ofta ökar genomströmningen flera gånger med lägre latens för väntande användare.
Teknisk insikt
Nyckelskiftet är från batchning av hela förfrågningar till batchning av individuella iterationer. Vid varje avkodningssteg bygger schemaläggaren den aktiva uppsättningen: den kör en framåtpassning över alla sekvenser under flygning, sänder ut en token vardera, vräker ut alla som träffar en sekvens-token eller längdgräns, och godkänner köade förfrågningar för att fylla de frigjorda luckorna. Att para ihop detta med PagedAttentions flexibla KV-minne gör att infoga och ta bort sekvenser mitt under flygningen billigt, eftersom varje sekvenss cache bor i oberoende block.
Strategisk inverkan
Cost and budget
Arkitekturbeslut driver prestanda och driftskostnader i flera år.
Clearer decisions
Teknisk utbildning hjälper team att välja rätt stack, inte bara den nyaste.
Quality control
Bättre tekniska val minskar tillförlitlighetsincidenter i produktionen.
Framtiden för kontinuerlig batchning
Kontinuerlig batchning är nu standard i produktion av LLM-servering. Framtida arbete förfinar schemaläggaren: separering av den beräkningstunga förfyllningsfasen från den lättare avkodningsfasen (disaggregation), chunked prefill för att undvika att avkodning stannar, prioritets- och rättvisapolicyer för blandade arbetsbelastningar och snävare koppling till spekulativ avkodning så att flera utkasttokens valideras per steg. Målet är att pressa maximalt antal tokens per sekund per GPU samtidigt som individuell svarsfördröjning hålls låg och förutsägbar.
Real-World Implementation
Ett chatt-API som släpper in nya användarmeddelanden till den pågående batchen omedelbart istället för att ställa dem i kö för nästa batch
Vräker ut ett kort färdigt svar i mitten av batchen och fyller på dess kortplats så att GPU:n aldrig går på tomgång och väntar på en lång generation
Kombinera kontinuerlig batchning med vLLM:s PagedAttention för att infoga och ta bort sekvenser billigt vid varje avkodningssteg
En kodkompletteringstjänst som upprätthåller höga tokens per sekund under explosiv trafik med variabel längd genom att hålla batchen full
Risker & skyddsräcken
Att optimera ett riktmärke kan dölja bredare systemsvagheter.
Infrastruktur- och underhållskostnader underskattas ofta.
Säkerhets- och observerbarhetsluckor kan växa i takt med att systemen blir mer komplexa.
Färdplan för genomförande
Definiera latens-, kvalitet- och kostnadsmål före implementering.
Benchmark under realistiska belastnings- och dataförhållanden.
Instrumentövervakning för fel, drift och användarpåverkan.
Förbered återställnings- och incidentsvarsvägar innan skalning.
Fortsätt utforska
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 Continuous Batching 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
Next guide
Kubernetes för ML-arbetsbelastningar
Frequently asked questions
What is Continuous Batching?
Kontinuerlig batchning är en serveringsteknik som lägger till och tar bort förfrågningar från en pågående batch token-by-token, istället för att vänta på att en hel fast batch ska avslutas. Det håller GPU:n konstant upptagen och ökar kraftigt hur många användare en AI-modell kan betjäna samtidigt.
Vad är den största svagheten med statisk (fast) batchning för LLM-servering?
Eftersom utdatalängder varierar, förblir färdiga sekvenser inaktiva tills den långsammaste slutförs, vilket slösar bort GPU-cykler och försenar nya förfrågningar.
Med vilken granularitet lägger kontinuerlig batchning till och tar bort förfrågningar?
Kontinuerlig batchning (iterationsnivå) uppdaterar den aktiva uppsättningen efter varje enskilt avkodningssteg, så det fungerar token-för-token snarare än per hel begäran.
När en sekvens avslutas mitt i batchen under kontinuerlig batchning, vad händer med dess slot?
Färdiga sekvenser vräks och väntande förfrågningar läggs in omedelbart, vilket håller batchen full och GPU:n upptagen.
Vilken teknik paras naturligt med kontinuerlig batchning för att göra insättning/borttagning av sekvenser billigt?
PagedAttention lagrar varje sekvenss KV-cache i oberoende block, så att lägga till eller ta bort en sekvens mitt i flygningen stör inte andras minne.
Vilken forskningsartikel är vanligen krediterad för att popularisera iterationsnivå (kontinuerlig) batchning?
Orca-tidningen introducerade schemaläggning på iterationsnivå, och idén antogs av serversystem som vLLM, TGI och TensorRT-LLM.