Chunked Prefill
Erfahre, wie Chunked Prefill die Latenz und den Durchsatz bei der LLM-Inferenz verbessert, indem lange Prompts für einen reibungsloseren Betrieb bei gleichzeitigem Workload in Token-Blöcke aufgeteilt werden.
Chunked Prefill ist eine Technik zur Planung der Inferenz, bei der ein langer Eingabeprompt in kleinere Gruppen von Tokens aufgeteilt wird, anstatt den gesamten Prompt in einem einzigen ununterbrochenen Vorgang zu verarbeiten. Eine Inferenz-Engine kann diese Abschnitte mit der Token-Generierung für andere Anfragen abwechseln lassen und so verhindern, dass ein langer Prompt die GPU monopolisiert. Das Ergebnis sind unter gleichzeitig ausgeführten Workloads in der Regel gleichmäßigere Latenzen, eine bessere Hardwareauslastung und ein vorhersehbarerer Dienst für interaktive Anwendungen mit großen Sprachmodellen.
Funktionsweise von Chunked Prefill#
Die autoregressive Transformer-Inferenz umfasst zwei Hauptphasen:
- Prefill: Das Modell verarbeitet alle Eingabetokens, berechnet deren Aufmerksamkeitszustände und füllt den KV-Cache. Beim Prefill werden viele Tokens parallel ausgewertet, und der Vorgang ist in der Regel rechengebunden.
- Decode: Das Modell erzeugt die Ausgabe Token für Token und liest dabei zuvor zwischengespeicherte Zustände. Decode wird häufig eher durch die Speicherbandbreite als durch die reine Rechenleistung begrenzt.
Ohne Aufteilung kann eine Anfrage mit 20.000 Tokens einen Inferenzschritt wesentlich länger belegen als eine kurze Anfrage. Aktive Generierungen können dadurch Pausen erleben, wodurch sich die Latenz zwischen Tokens erhöht, selbst wenn ihre eigenen Prompts klein sind.
Beim Chunked Prefill weist der Scheduler jeder Iteration ein Token-Budget zu. Zuerst plant er aktive Decode-Vorgänge ein und verwendet das verbleibende Budget anschließend für einen oder mehrere Prompt-Abschnitte. Wenn ein Prompt nicht hineinpasst, warten die verbleibenden Tokens auf eine spätere Iteration. Die aktuelle Optimierungsanleitung für vLLM beschreibt diesen Ansatz als Möglichkeit, rechenintensive Prefill-Arbeit mit speicherintensivem Decoding zu kombinieren.
Die Aufteilung verändert den Zeitpunkt, zu dem Prompt-Tokens verarbeitet werden, nicht jedoch ihre Reihenfolge oder Bedeutung. Jeder abgeschlossene Abschnitt erweitert den zwischengespeicherten Aufmerksamkeitszustand der Anfrage, bis der vollständige Prompt bereit ist und das Decoding beginnen kann.
Warum Chunked Prefill wichtig ist#
Chunked Prefill trägt dazu bei, konkurrierende Leistungsziele bei der Bereitstellung von Modellen in Produktionsumgebungen zu erreichen:
- Latenz zwischen Tokens: Die Priorisierung bereits vorhandener Decode-Anfragen trägt dazu bei, dass gestreamte Antworten ohne lange Pausen fortgesetzt werden.
- Zeit bis zum ersten Token: Große Abschnitte schließen die Verarbeitung eines neuen Prompts schneller ab, während sehr kleine Abschnitte das erste generierte Token verzögern können.
- Durchsatz: Durch die Kombination von Prefill- und Decode-Arbeit lassen sich GPU-Rechenleistung und Speicherbandbreite effektiver nutzen.
- Fairness: Lange Prompts blockieren mit geringerer Wahrscheinlichkeit viele kurze, interaktive Anfragen.
Die Einstellung für die Abschnittsgröße beziehungsweise das Token-Budget ist daher ein Kompromiss. Die Scheduler-Konfiguration von vLLM bietet Einstellungen für Token-Limits bei Batches, teilweise Prefills und Schwellenwerte für lange Prompts. Kleinere Budgets begünstigen im Allgemeinen ein reaktionsschnelles Decoding, während größere Budgets die schnellere Aufnahme von Prompts begünstigen.
Die Aufteilung beseitigt nicht jeden Engpass. Lange Kontexte belegen weiterhin Cache-Speicher, und eine zu aggressive Aufnahme kann zu Cache-Druck, einer vorübergehenden Unterbrechung von Anfragen oder wiederholter Arbeit führen. Betreiber sollten die mittlere und hohe Inferenzlatenz, die Zeit bis zum ersten Token, die Latenz zwischen Tokens, den Durchsatz und die GPU-Speichernutzung unter realistischen Prompt-Verteilungen messen.
Verwandte Konzepte der Inferenz#
Chunked Prefill steht in engem Zusammenhang mit mehreren Optimierungen, erfüllt jedoch einen eigenen Zweck:
- Kontinuierliches Batching: Fügt während der Generierung dynamisch Anfragen hinzu und entfernt sie. Chunked Prefill ergänzt diesen Ansatz, indem es die Verarbeitung langer Prompts an Token-Grenzen planbar macht.
- Prompt-Caching: Verwendet zuvor berechnete Zustände für ein wiederholtes Prompt-Präfix erneut. Chunked Prefill plant neue Berechnungen ein, überspringt sie jedoch nicht.
- Verwaltung paginierter KV-Caches: Organisiert zwischengespeicherte Aufmerksamkeitszustände in Speicherblöcken. Die Übersicht zu TensorRT-LLM von NVIDIA umfasst neben Optimierungen der Prompt-Verarbeitung auch paginiertes Caching und Batching laufender Anfragen.
- Dynamisches Batching: Fasst separate Anfragen zu Batches zusammen, wie im Leitfaden zum dynamischen Batching von NVIDIA Triton erläutert. Es teilt einen einzelnen langen Prompt jedoch nicht unbedingt in teilweise Prefills auf.
- Getrenntes Prefill und Decode: Führt die Phasen auf unterschiedlichen Workern aus. Die Bereitstellungsanleitung von NVIDIA für Prefill und Decode zeigt, wie sich die Phasen stattdessen unabhängig voneinander skalieren lassen.
Obwohl der Bereitstellungsablauf von Ultralytics YOLO26 für Triton skalierbare Computer-Vision-Inferenz und automatisches Batching unterstützt, verfügt die standardmäßige YOLO-Objekterkennung nicht über eine autoregressive Text-Prefill-Phase. Chunked Prefill wird hauptsächlich auf generative Sprach- und multimodale Modelle angewendet.
Anwendungen in der Praxis#
-
Dokumentenassistenten: Ein durch das Abrufen zusätzlicher Informationen erweiterter Assistent kann gleichzeitig einen langen Bericht erhalten und Nutzer mit kurzen Fragen bedienen. Durch die Aufteilung des Prefills für den Bericht können laufende Chats mit dem Decoding fortfahren, anstatt einzufrieren, bis der gesamte Kontext verarbeitet wurde.
-
Multimodale Videoanalyse: Ein Modell für Bild- und Sprachverarbeitung kann Bildmerkmale, Objektbeschreibungen und eine lange Textanweisung erhalten. Eine Bildverarbeitungspipeline kann zunächst mit der YOLO-Vorhersage von Ultralytics Erkennungen erzeugen und anschließend strukturierten visuellen Kontext an das generative Modell senden. Chunked Prefill hilft dabei, die daraus resultierenden visuellen und textuellen Tokens zusammen mit anderen Anfragen einzuplanen. Der multimodale Encode-Prefill-Decode-Ablauf von NVIDIA veranschaulicht, warum eine unabhängige Verwaltung dieser Phasen die Skalierbarkeit verbessern kann.
Praktische Hinweise für die Bereitstellung#
Aktiviere Chunked Prefill nur über eine Serving-Engine, die die Zielarchitektur offiziell unterstützt. Die Konfiguration des TensorRT-LLM-Backends dokumentiert beispielsweise Einstellungen für geteilte Kontexte bei unterstützten Bereitstellungen.
Führe Benchmarks mit realistischer Parallelität, Eingabelängen und Ausgabelängen durch, anstatt dich auf eine einzelne Anfrage zu verlassen. Beginne mit dem vom Laufzeitsystem empfohlenen Token-Budget und passe es anschließend an, während du die Zeit bis zum ersten Token und die Latenz zwischen Tokens beobachtest. Teste abschließend gemischte Workloads mit sehr langen und sehr kurzen Prompts; hier zeigt Chunked Prefill seinen deutlichsten praktischen Nutzen.









