Batching & Durchsatz

Fortgeschritten

Wie Batching Durchsatz, Antwortzeit und Speicherbedarf verändert.

Zuletzt aktualisiert: 13. Sept. 2026

Was ist Batching bei LLM-Inferenz?

Batching verarbeitet mehrere Anfragen gemeinsam. Beim Decoding können sich dadurch mehrere Sequenzen die Kosten für das Lesen der Modellgewichte teilen. Der Nutzen hängt von Kontextlänge, Speicherverkehr, Rechenleistung und Scheduling ab.

Statisches Batching

Ein statischer Batch startet eine feste Gruppe von Anfragen gemeinsam. Fertige Anfragen lassen Kapazität frei, die erst nach Ende der längsten Anfrage im nächsten Batch neu belegt wird.

Dynamisches / Continuous Batching

Continuous Batching kann wartende Anfragen zwischen Decoding-Schritten aufnehmen, sobald Kapazität frei wird. Der Scheduler muss Speichergrenzen, Anfragelängen und Zielantwortzeiten beachten.

Durchsatz vs. Batch-Größe

Batching verteilt das Lesen der Gewichte auf mehrere Anfragen. Der Durchsatz kann sich einer Rechen- oder Speichergrenze nähern. Längere Kontexte erzeugen zusätzlichen KV-Verkehr und Speicherbedarf. Wann ein Batch nicht mehr passt, hängt von Modell, Kontext, Präzision und Gerätespeicher ab.

Ein hypothetischer dichter Decoder

7B FP16-Gewichte (14 GB), 32 Schichten, 8 KV-Heads × 128, FP16-KV, 1 TB/s Speicherbandbreite und 100 TFLOP/s Rechenleistung. Die Untergrenze ist max(Lesezeit für Gewichte + KV, Matrix-Rechenzeit). Attention-FLOPs, Kommunikation und Kernel-Overhead fehlen. Das ist kein Benchmark.

Untergrenze Speicherlesezeit (ms)
15.07
Untergrenze Rechenzeit (ms)
2.24
Untergrenze Schrittzeit (ms)
15.07
Speicher (GiB)
15.90
Untergrenze Speicherlesezeit (ms)
Untergrenze Rechenzeit (ms)
Durchsatz-Obergrenze (Tokens/s): 1061
Obergrenze pro Sequenz (Tokens/s): 66.3
JAX Scaling Book: Inference

Prefill- vs. Decode-Phase

Prefill verarbeitet Prompt-Positionen innerhalb jeder Schicht zusammen. Decode ergänzt Tokens pro Anfrage nacheinander. Das Geschwindigkeitsverhältnis hängt von Modell, Hardware, Kontext und Batching ab. Es gibt keinen allgemeinen Multiplikator.

Abhängigkeitsbeispiel, kein Geschwindigkeitsrennen: Prompt-Positionen können innerhalb einer Schicht zusammen verarbeitet werden. Jedes neue Output-Token hängt dagegen von vorherigen Ausgaben ab. Der Animationstakt stellt keine Hardware-Zeit dar.

Prefill

x1x2x3x4x5x6

Decode

y1y2y3y4y5y6

Continuous Batching

Continuous Batching nimmt neue Anfragen auf, sobald Slots frei werden. Dieses Beispiel zeigt vier Slots mit vorgegebenen Anfragelängen. Die Slotbelegung misst keine Hardware-Auslastung.

Zeitschritt: 0 / 19
Slot 1
Slot 2
Slot 3
Slot 4
Belegte Anfrage-Slots (keine GPU-Auslastung)100%
Aktiv Leerlauf Neue Anfrage

💡 Kontinuierliches Scheduling belegt freie Slots neu. Reale Server müssen zusätzlich Speicher- und Scheduling-Grenzen beachten.