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.
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
Decode
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.
💡 Kontinuierliches Scheduling belegt freie Slots neu. Reale Server müssen zusätzlich Speicher- und Scheduling-Grenzen beachten.