Hur påverkar batchstorleken latensen för första token och per token?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Större batchar förbättrar ofta den totala token-genomströmningen, men de kan öka fördröjningen till den första token och fördröjningen per token genom köbildning, tyngre iterationer och minnesbelastning.

En lokal modell med batchstorlek ett kan utnyttja acceleratorn dåligt eftersom varje avkodningssteg flyttar modellvikter för mycket lite arbete. Genom att kombinera förfrågningar fördelas den förflyttningen över flera förfrågningar och genomströmningen ökar. Samtidigt kan förfrågningar behöva vänta på att släppas in, långa förinläsningar kan blockera avkodning, och varje aktiv sekvens ökar KV-cachen och tokenarbetet. Därför beror den bästa batchstorleken på om målet är genomströmning, responsivitet eller godput inom ett latensmål.

Batchning fördelar modellarbete över flera förfrågningar

En batchad matrisoperation bearbetar token från flera sekvenser tillsammans, vilket förbättrar hårdvaruutnyttjandet och fördelar fasta kostnader för start eller viktöverföring över mer nyttigt arbete. Vinsterna är störst innan beräkningskapacitet, minnesbandbredd, cachekapacitet eller schemaläggningskostnader blir mättade.

Orcas schemaläggning på iterationsnivå inför schemaläggning på iterationsnivå, så att slutförda sekvenser kan lämna och nytt arbete ansluta mellan avkodningsiterationer. Det gör att varje förfrågan inte behöver vänta på den längsta medlemmen i en statisk batch.

Batchstorlek kan avse konfigurerat maximum, insläppta sekvenser eller antal token som bearbetas i en iteration. Dessa värden skiljer sig åt vid kontinuerlig batchning, så prestandarapporter bör ange vilken kvantitet som styrdes och observerades. Denna skillnad förblir synlig under senare tester i hemmet.

Fördröjningen till den första token omfattar köbildning och förinläsning

Tiden till den första token börjar när en förfrågan anländer och omfattar väntan hos schemaläggaren, förinläsning av prompten och det första avkodningssteget. En policy som väntar med att bygga en batch kan öka kötiden, medan en stor prompt kan uppta en iteration och fördröja befintliga interaktiva förfrågningar.

En aktuell jämförelse av kontinuerlig batchning förklarar hur kontinuerlig batchning släpper in och tar bort förfrågningar dynamiskt och hur aggressiv schemaläggning innebär en avvägning mellan genomströmning och TTFT. Den tydliggör varför batchstorleken ensam inte kan förutsäga responsiviteten för den första token. Mellanresultatet måste förbli granskningsbart innan automatiseringen går vidare.

Segmenterad förinläsning kan varva långa promptar med avkodningsarbete, men segmentstorleken blir ytterligare en avvägning. Små segment skyddar interaktiva token men medför mer schemaläggningskostnader; stora segment förbättrar effektiviteten vid förinläsning men skapar längre blockeringsintervall. Den gränsen bör mätas separat under realistiska driftsförhållanden.

Fördröjningen per token beror på den aktiva iterationen

Under avkodning producerar varje steg vanligtvis en token per aktiv sekvens. Fler sekvenser gör batchen större och kan öka varaktigheten för varje iteration, även när den sammanlagda tokenhastigheten ökar. Olikformiga kontexter, cachebelastning, föregripande avbrott och synkronisering i distribuerade system skapar ytterligare variation.

DistServes separering av förinläsning och avkodning skiljer förinläsning från avkodning eftersom de har olika beräkningsegenskaper och servicemål. Designen visar varför optimering av den sammanlagda genomströmningen kan stå i konflikt med både TTFT och tiden per genererad token. Den praktiska konsekvensen märks när flera källor konkurrerar om begränsad kontext.

Felgränsen är att välja den största batchen från ett offline-diagram över genomströmning för en interaktiv hemassistent. Om köbildning eller tokengap bryter mot användarmålet är den nominella genomströmningen inte användbar godput, oavsett acceleratorutnyttjande.

Kartlägg fronten för batchgodput

Spela upp korta chattar, långa RAG-promptar och bakgrundsjobb vid kontrollerade ankomsthastigheter. Variera maximalt antal sekvenser och gränserna för batchade token medan du mäter percentiler för TTFT, latens mellan token, latens från början till slut, genomströmning för promptar och utdata, ködjup, cacheanvändning, föregripande avbrott och avvisade förfrågningar.

Använd beteendet vid kontinuerlig batchning i beteendet vid kontinuerlig batchning för att skilja konfigurerade gränser från den aktiva batch som varje iteration ser. Håll fördelningarna för promptar och utdata fasta och rapportera andelen förfrågningar som uppfyller både målen för den första token och tokengap.

Välj den inställning som maximerar slutfört arbete inom dessa mål i stället för rå tokenhastighet per sekund. Isolera eller ge bakgrundsbatcher lägre prioritet när de minskar den interaktiva godputen, och testa på nytt efter ändringar av modell, kvantisering, kontextblandning eller schemaläggare.

Teknik- och AI-hubb

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.