- Einige AI-Modelle wie DeepSeek-V3 sind bei der Bereitstellung im großen Maßstab günstig und schnell, bei der lokalen Ausführung jedoch langsam und teuer
- Der Grund liegt in einem grundlegenden Trade-off zwischen throughput (Durchsatz) und latency (Latenz), der mit der Effizienz der GPU-Auslastung zusammenhängt
- Wenn die Batch-Größe erhöht wird, arbeitet die GPU effizienter, aber Nutzer müssen warten, bis sich Tokens angesammelt haben, was zu höherer Latenz führt
- Modelle mit Mixture-of-Experts-Architektur und tiefer Pipeline benötigen hohe Batch-Größen und längere Latenz
- In einer lokalen Einzelbenutzerumgebung ist es schwierig, einen ausreichend großen Batch zu bilden, was zu Leistungseinbußen und höheren Kosten führt
- OpenAI, Anthropic usw. erreichen schnelle Antworten durch effizientere Architekturen, hochentwickelte Batch-Strategien oder den Einsatz übermäßig vieler GPUs
Batch-Inferenz und GPU-Effizienz
- GPUs sind Hardware, die für große Matrixmultiplikationen (GEMM) optimiert ist
- Werden Tokens mehrerer Nutzer auf einmal zu einer großen Matrix zusammengefasst und als Batch ausgeführt, steigt der Durchsatz wegen geringem Roundtrip-Overhead und besserer Speichereffizienz stark an
- Inferenzserver stapeln die Tokens mehrerer Anfragen in einer Queue, wählen einen Batch geeigneter Größe aus und führen große GEMM-Berechnungen aus
- Dabei muss der Server einen Trade-off zwischen Batch-Größe (mehr throughput) und Wartezeit (mehr latency) wählen
Warum einige Modelle auf große Batches optimiert sind
Mixture of Experts (MoE) und Batching
- Die MoE-Architektur (DeepSeek-V3, mutmaßlich auch GPT-4) ist ein Hauptgrund für die geringe GPU-Effizienz
- Hunderte von „Experten“-Blöcken erfordern jeweils getrennte Matrixmultiplikationen; bei kleinen Batches hat jeder Experte wenig zu tun, wodurch die Effizienz sinkt
- Erst bei vielen gleichzeitigen Anfragen können alle Experten ausreichend ausgelastet werden; auf Service-Ebene sind große Batches daher unverzichtbar
- Bei kurzer Wartezeit (Fenster 5 ms) sind Experten häufig untätig, bei langer Wartezeit (Fenster 200 ms) lässt sich maximale Effizienz erreichen
Batch-Probleme bei Modellen mit tiefer Pipeline
- Große Transformer mit Hunderten von Schichten werden über mehrere GPUs hinweg schichtweise aufgeteilt (Pipelining) ausgeführt
- Ist die Zahl der Tokens in einem Batch kleiner als die Pipeline-Schritte, entsteht ein „Pipeline-Bubble“-Effekt, der den Durchsatz verringert
- Um dies zu vermeiden, sind große Batches (also längere Wartezeiten) erforderlich, wodurch sich die Antwortzeit des Modells verlängert
Warum sich die Queue nicht immer vollständig füllen lässt
- Theoretisch scheint sich eine Bubble vermeiden zu lassen, wenn durch viel gleichzeitigen Traffic die Queue immer voll ist
- In der Praxis müssen für das Batching im Attention-Schritt von Transformern jedoch die Matrixgrößen (Längen) identisch sein, weshalb eine perfekte Umsetzung mit einer einzigen Queue schwierig ist
- Außerdem führen getrennte FFN- und Attention-Schritte zu stark steigendem Speicher-Overhead und ineffizienter Datenbewegung
Zusammenfassung und Fazit
- Die Verarbeitung großer Batches ist entscheidend, um GPU-Kosten zu senken und den Durchsatz zu erhöhen, führt für Nutzer aber zu längerer Wartezeit
- Modelle mit Mixture-of-Experts- und großer Pipeline-Architektur sind von Natur aus für hocheffiziente Batch-Umgebungen mit Wartezeit optimiert
- In Umgebungen mit wenig Traffic wie lokal lässt sich ein optimierter großer Batch nicht bilden, wodurch die GPU-Effizienz stark einbricht und die Ausführungskosten steigen
- OpenAI, Anthropic usw. zeigen schnelle Reaktionszeiten; mögliche Gründe sind:
- (1) eine effizientere Architektur ohne MoE
- (2) Batch-/Pipeline-Optimierung und hochentwickelte Inferenz-Tricks
- (3) eine Architektur, die mehr GPUs als nötig einsetzt und sich Geschwindigkeit einkauft
Zusatz: Unterschied zwischen Prefill-Batching und dem hier behandelten Batching
- Bei Transformern kann auch der Prefill eines einzelnen Nutzer-Prompts (lange Eingabe) im Batch ausgeführt werden, um die anfängliche Inferenz zu beschleunigen
- Das hier behandelte Batching betrifft jedoch den eigentlichen Token-Generierungsschritt über Anfragen mehrerer Nutzer hinweg, bei dem der Trade-off zwischen Durchsatz und Latenz entsteht
- Prefill-Batching steht nicht in direktem Zusammenhang mit den im Text beschriebenen großen gleichzeitigen Batches
Hinweise
- Reale Inferenzsysteme nutzen oft zusätzlich continuous batching und führen Berechnungen aus, sobald ein Batch voll ist
- Die grundlegende Struktur des throughput-latency-Trade-offs bleibt dabei jedoch unverändert
1 Kommentare
Hacker-News-Kommentare