Chunked Prefill
Erfahre, wie Chunked Prefill die Inferenzlatenz und den Durchsatz von LLMs verbessert, indem lange Prompts in Token-Chunks aufgeteilt werden, um ein flüssigeres Serving bei gleichzeitigen Workloads zu ermöglichen.
Chunked Prefill ist eine Inferenz-Planungstechnik, die einen langen Eingabe-Prompt in kleinere Gruppen von tokens aufteilt, anstatt den gesamten Prompt in einem einzigen ununterbrochenen Vorgang zu verarbeiten. Eine Inferenz-Engine kann diese Chunks mit der Token-Generierung für andere Anfragen verschachteln, wodurch verhindert wird, dass ein langer Prompt die GPU monopolisiert. Das Resultat ist typischerweise eine gleichmäßigere Latenz bei gleichzeitigen Arbeitslasten, eine bessere Hardwareauslastung und ein vorhersehbarer Service für interaktive large language model-Anwendungen.
Wie Chunked Prefill funktioniert#
Die autoregressive Transformer-Inferenz hat zwei Hauptphasen:
- Prefill: Das Modell verarbeitet alle Eingabe-Token, berechnet deren Attention-Zustände und füllt den KV cache. Das Prefill wertet viele Token parallel aus und ist normalerweise rechenintensiv.
- Decode: Das Modell generiert die Ausgabe Token für Token, während es zuvor zwischengespeicherte Zustände liest. Das Decode ist oft eher durch die Speicherbandbreite als durch die reine Rechenleistung begrenzt.
Ohne Chunking kann eine Anfrage mit 20.000 Token einen Inferenzschritt viel länger belegen als eine kurze Anfrage. Aktive Generierungen können dadurch Pausen erleben, was die Latenz zwischen den Token erhöht, selbst wenn ihre eigenen Prompts klein sind.
Mit Chunked Prefill weist der Planer jeder Iteration ein Token-Budget zu. Er plant zuerst aktive Decode-Operationen ein und verwendet dann das verbleibende Budget für einen oder mehrere Prompt-Chunks. Wenn ein Prompt nicht passt, warten seine verbleibenden Token auf eine spätere Iteration. Die aktuelle vLLM optimization guidance beschreibt diesen Ansatz als eine Möglichkeit, rechenintensive Prefill-Arbeiten mit speicherintensiven Decodierungsarbeiten zu kombinieren.
Chunking ändert, wann Prompt-Token verarbeitet werden, nicht jedoch deren Reihenfolge oder Bedeutung. Jeder abgeschlossene Chunk erweitert den zwischengespeicherten Attention-Zustand der Anfrage, bis der vollständige Prompt bereit ist und die Decodierung beginnen kann.
Warum Chunked Prefill wichtig ist#
Chunked Prefill adressiert konkurrierende Leistungsziele beim produktiven model serving:
- Inter-Token-Latenz: Die Priorisierung bestehender Decode-Anfragen hilft gestreamten Antworten, ohne lange Pausen fortzufahren.
- Time to first token: Große Chunks schließen einen neuen Prompt früher ab, während sehr kleine Chunks das erste generierte Token verzögern können.
- Durchsatz: Die Kombination von Prefill- und Decode-Arbeit kann GPU-Rechenleistung und Speicherbandbreite effektiver nutzen.
- Fairness: Lange Prompts blockieren seltener viele kurze, interaktive Anfragen.
Die Einstellung für Chunks oder Token-Budgets ist daher ein Kompromiss. Die vLLM scheduler configuration bietet Steuerelemente für Grenzwerte für gebündelte Token, partielle Prefills und Schwellenwerte für lange Prompts. Kleinere Budgets begünstigen im Allgemeinen eine reaktionsfähige Decodierung, während größere Budgets eine schnellere Prompt-Aufnahme begünstigen.
Chunking beseitigt nicht jeden Engpass. Lange Kontexte verbrauchen nach wie vor Speicher für den Cache, und ein allzu aggressives Zulassen kann zu Cache-Druck, Anfragen-Präemption oder wiederholter Arbeit führen. Betreiber sollten die mittlere und die Tail-inference latency, die Time to first Token, die Inter-Token-Latenz, den Durchsatz und die GPU-Speichernutzung unter realistischen Prompt-Verteilungen messen.
Verwandte Inferenzkonzepte#
Chunked Prefill ist eng mit mehreren Optimierungen verbunden, verfolgt jedoch einen eigenständigen Zweck:
- Continuous batching: Fügt während der Generierung dynamisch Anfragen hinzu und entfernt sie. Chunked Prefill ergänzt dies, indem es die Verarbeitung langer Prompts auf Token-Ebene planbar macht.
- Prompt caching: Wiederverwendet zuvor berechnete Zustände für ein wiederholtes Prompt-Präfix. Chunked Prefill plant neue Berechnungen; es überspringt diese Berechnungen nicht.
- Verwaltung des gepacten KV-Caches: Organisiert zwischengespeicherte Attention-Zustände in Speicherblöcken. Die TensorRT-LLM overview von NVIDIA umfasst gepactes Caching und In-Flight-Batching neben Optimierungen der Prompt-Verarbeitung.
- Dynamisches Batching: Kombiniert separate Anfragen in Batches, wie im NVIDIA Triton dynamic batching guide erläutert. Dabei wird ein einzelner langer Prompt nicht unbedingt in partielle Prefills unterteilt.
- Disaggregiertes Prefill und Decode: Führt die Phasen auf separaten Workern aus. Die prefill and decode deployment guidance von NVIDIA zeigt, wie die Phasen stattdessen unabhängig voneinander skaliert werden können.
Obwohl der Ultralytics YOLO26 Triton deployment workflow skalierbare Computer-Vision-Inferenz und automatisches Batching unterstützt, verfügt die standardmäßige YOLO-Objekterkennung über keine autoregressive Text-Prefill-Phase. Chunked Prefill gilt primär für generative Sprach- und multimodale Modelle.
Praxisanwendungen#
-
Dokumenten-Assistenten: Ein Retrieval-Augmented-Assistent empfängt möglicherweise einen langen Bericht und bedient gleichzeitig Benutzer mit kurzen Fragen. Das Chunking des Prefills des Berichts ermöglicht es laufenden Chats, die Decodierung fortzusetzen, anstatt einzufrieren, bis der gesamte Kontext verarbeitet ist.
-
Multimodale Videoanalyse: Ein vision-language model empfängt möglicherweise Bildmerkmale, Objektbeschreibungen und eine lange Textanweisung. Eine Vision-Pipeline kann zunächst mithilfe von Ultralytics YOLO prediction Detektionen erzeugen und dann strukturierten visuellen Kontext an das generative Modell senden. Chunked Prefill hilft dabei, die resultierenden visuellen und textlichen Token neben anderen Anfragen einzuplanen. Der multimodal encode-prefill-decode workflow von NVIDIA veranschaulicht, warum die unabhängige Verwaltung dieser Phasen die Skalierbarkeit verbessern kann.
Praktische Bereitstellungsanleitung#
Aktivieren Sie Chunked Prefill nur über eine Serving-Engine, die die Zielarchitektur offiziell unterstützt. Zum Beispiel dokumentiert die TensorRT-LLM backend configuration Steuerelemente für den Chunked-Kontext für unterstützte Bereitstellungen.
Führen Sie Benchmarks mit realistischer Parallelität, Eingabelängen und Ausgabelängen durch, anstatt sich auf eine einzelne Anfrage zu verlassen. Beginnen Sie mit dem vom Laufzeitsystem empfohlenen Token-Budget und passen Sie es an, während Sie die Time to first Token und die Inter-Token-Latenz beobachten. Testen Sie abschließend gemischte Arbeitslasten, die sowohl sehr lange als auch sehr kurze Prompts enthalten; hier bietet Chunked Prefill seinen deutlichsten operativen Nutzen.






