Zuletzt überprüft: 2026-10-14 — vLLM v0.31.0.
V1 ist der Standard. Die V1-Architektur ist jetzt der Standard in vLLM v0.31.0. Sie bringt einen neuen Scheduler, standardmäßig aktiviertes Chunked Prefill und verbessertes GPU-Speichermanagement. Wenn Sie Verhaltensunterschiede zu älteren Leitfäden sehen, ist V1 wahrscheinlich die Ursache.
KV-Cache-Abstimmung
Der KV-Cache speichert Key-Value-Tensoren für jedes Token in jeder aktiven Sequenz. Er ist normalerweise der größte Verbraucher von GPU-Speicher nach den Modellgewichten selbst, daher hat seine Abstimmung den größten Einfluss darauf, wie viele gleichzeitige Anfragen Sie bedienen können.Größenformel
vLLM berechnet die KV-Cache-Größe automatisch, aber das Verständnis der Formel hilft Ihnen, Grenzen zu setzen:float16:
fp8-KV-Cache verwenden
--kv-cache-dtype fp8 reduziert den KV-Cache-Speicher um ungefähr 50% im Vergleich zum Standard float16. Das verdoppelt direkt die Anzahl der Token, die Sie cachen können, was mehr gleichzeitige Sequenzen oder längere Kontexte bedeutet.
--max-num-seqs vs --max-model-len
Diese 2 Flags konkurrieren um denselben KV-Cache-Pool:
--max-model-lenbegrenzt die Kontextlänge einer einzelnen Sequenz. Das Heruntersetzen setzt KV-Cache für mehr gleichzeitige Sequenzen frei.--max-num-seqsbegrenzt die Anzahl der Sequenzen, die in einem Batch verarbeitet werden. Das Heraufsetzen erhöht den Durchsatz auf Kosten des pro-Sequenz-Speichers.
--max-model-len herunter und --max-num-seqs herauf, um die Parallelität zu maximieren. Wenn Sie Long-Context-Anfragen bedienen, machen Sie das Gegenteil.
Prefix Caching
Viele reale Workloads senden Anfragen, die sich ein gemeinsames Präfix teilen: ein System-Prompt, ein RAG-Retrievalblock oder frühere Runden in einem Multi-Turn-Gespräch. Ohne Prefix Caching berechnet vLLM den KV-Cache für dieses geteilte Präfix bei jeder Anfrage neu.--enable-prefix-caching speichert berechnete KV-Blöcke in einer hash-indizierten Tabelle. Wenn eine neue Anfrage mit einem Präfix eintrifft, das einem gecachten Block entspricht, verwendet vLLM die gecachten KV-Tensoren wieder, statt sie neu zu berechnen.
V0-Scheduler-Modus ausführen.
Chunked Prefill
Prefill — die Verarbeitung des Eingabe-Prompts — ist rechenintensiv. Ein langer Prompt (8K+ Token) kann die GPU für Hunderte von Millisekunden monopolisieren, Decode-Schritte für andere Sequenzen blockieren und Latenzspitzen verursachen. Chunked Prefill teilt das Prefill in kleinere Chunks auf, die mit Decode-Schritten verschachtelt werden. Die GPU verarbeitet einen Chunk des Prompts, führt dann einen Decode-Schritt für andere aktive Sequenzen aus und fährt dann mit dem nächsten Prefill-Chunk fort. Das hält die Decode-Latenz vorhersehbar. In V1 ist Chunked Prefill standardmäßig aktiviert. Sie können die Chunk-Größe steuern:--max-num-batched-tokens setzt die maximale Anzahl der Token, die in einem einzigen Scheduler-Schritt verarbeitet werden. Niedrigere Werte reduzieren den Prefill-Einfluss auf die Decode-Latenz, erhöhen aber die Gesamt-Time-to-First-Token (TTFT). Höhere Werte verbessern den Prefill-Durchsatz auf Kosten gelegentlicher Decode-Jitter.
Wenn Sie Chunked Prefill in einer älteren vLLM-Version deaktiviert haben und auf V1 upgraden, entfernen Sie das
--enable-chunked-prefill-Flag — es ist in V1 immer eingeschaltet und das Flag wird ignoriert.LoRA-Serving
vLLM kann mehrere LoRA-Adapter aus einem einzigen Prozess bereitstellen, ohne sie in das Basismodell zusammenzuführen. So können Sie ein Basismodell ausführen und Anfragen an verschiedene feinabgestimmte Varianten weiterleiten — zum Beispiel einen Coding-Adapter, einen Summarization-Adapter und einen General-Chat-Adapter — alle teilen sich dieselben Basisgewichte im GPU-Speicher.LoRA-Serving aktivieren
--lora-modules bildet einen anfrageseitigen Namen auf einen lokalen Pfad ab. Clients wählen den Adapter im model-Feld:
Dynamisches Laden
vLLM unterstützt dynamisches LoRA-Laden — Sie können Adapter zur Laufzeit über die API hinzufügen oder entfernen, ohne den Server neu zu starten. Das ist nützlich, wenn Sie viele Adapter haben, aber nur wenige gleichzeitig aktiv sind.Quantisierungsoptionen
Quantisierung reduziert die Modellgewichts-Präzision unter 16-Bit und tauscht eine kleine Menge Genauigkeit gegen erhebliche Speicher- und Geschwindigkeitsgewinne. vLLM unterstützt mehrere Quantisierungsformate:Quantisierte Modelle verwenden
Für vorquantisierte Modelle erkennt vLLM das Format automatisch aus derconfig.json des Modells:
Online-Quantisierung
Sie können ein Modell auch während des Ladens im laufenden Betrieb quantisieren, obwohl vorquantisierte Modelle für die Produktion bevorzugt werden:Durchsatz vs Latenz
Ihre Optimierungsstrategie hängt davon ab, ob Sie Durchsatz (Gesamt-Token pro Sekunde über alle Anfragen) oder Latenz (Time-to-First-Token und Inter-Token-Latenz für einzelne Anfragen) priorisieren.Durchsatz maximieren
Erhöhen Sie die Batch-Größen, um mehr Arbeit pro GPU-Schritt zu packen:--max-num-seqs 256erlaubt bis zu 256 gleichzeitige Sequenzen in einem Batch.--max-num-batched-tokens 16384erlaubt mehr Token pro Scheduler-Schritt.--kv-cache-dtype fp8setzt Speicher für mehr Sequenzen frei.
Latenz minimieren
Reduzieren Sie die Batch-Größen und deaktivieren Sie Optimierungen, die Latenz gegen Durchsatz tauschen:--max-num-seqs 16hält die Batches klein, sodass jede Anfrage schneller GPU-Zeit bekommt.--enforce-eagerdeaktiviert CUDA-Graphen. CUDA-Graphen erfassen und spielen einen festen Berechnungsgraphen ab, was den Durchsatz verbessert, aber Latenz beim ersten Durchlauf jeder neuen Batch-Form hinzufügt. Verwenden Sie--enforce-eagerzum Debuggen oder wenn jede Millisekunde TTFT zählt.
V1-Architekturänderungen
V1 ist der Standard-Scheduler in vLLM v0.31.0. Wenn Sie vLLM zuvor verwendet haben, hier ist, was sich geändert hat: Neuer Scheduler. Der V1-Scheduler ersetzt den V0-Block-Manager durch einen einheitlichen Speicher-Manager, der KV-Cache, Prefix Caching und Chunked Prefill in einem einzigen Durchlauf verarbeitet. Das reduziert den Scheduling-Overhead und eliminiert mehrere Randfälle, bei denen V0 den GPU-Speicher fragmentieren konnte. Chunked Prefill ist Standard. Prefill und Decode werden automatisch verschachtelt. Sie benötigen--enable-chunked-prefill nicht mehr — es ist immer eingeschaltet.
Besseres Speichermanagement. V1 verfolgt den GPU-Speicher mit einer feineren Granularität, was verschwendeten Platz durch Padding und Ausrichtung reduziert. Erwarten Sie 5-15% mehr nutzbaren KV-Cache auf derselben Hardware im Vergleich zu V0.
CUDA-Graph-Verbesserungen. V1 erfasst CUDA-Graphen aggressiver über eine breitere Palette von Batch-Formen, was den Durchsatz ohne manuelle Abstimmung verbessert.
Wenn Sie eine Regression mit V1 feststellen, können Sie auf V0 zurückfallen, indem Sie die Umgebungsvariable
VLLM_USE_V1=0 vor dem Starten des Servers setzen. Melden Sie das Problem dem vLLM-Team — V0 wird keine neuen Funktionen erhalten.Neu in v0.31: Persistenter Gewichts-Cache und Snapshots
vLLM v0.31 führt 2 neue CLI-Befehle ein:-
vllm preloadstartet einen persistenten Gewichts-Cache-Daemon, der Modellgewichte zwischen Server-Neustarts im GPU-Speicher hält. Statt bei jedem Neustart ein mehrere Gigabyte großes Modell von der Festplatte neu zu laden, verbindet sich der Server mit dem Daemon und verwendet die gecachten Gewichte wieder. Das reduziert die Kaltstartzeit von Minuten auf Sekunden. -
vllm snapshot createerfasst den aktuellen Serverzustand (geladenes Modell, Adapter, Konfiguration) undvllm snapshot restorestellt ihn sofort wieder her. Nützlich zum Zurücksetzen nach einer fehlerhaften Konfigurationsänderung oder zum Replizieren eines bekannten guten Setups über Maschinen hinweg.
Breaking Changes in v0.31
-
--trust-request-mm-kwargsist jetzt erforderlich, wenn Clients multimodale Eingaben (Bilder, Audio) über den Request-Body senden. Ohne dieses Flag weist vLLM multimodale kwargs aus Sicherheit ab. Fügen Sie es hinzu, wenn Ihre Anwendung Bilder oder andere Medien in API-Anfragen sendet. -
--grpcaktiviert gRPC-Serving neben dem HTTP-Server. Wenn Sie gRPC-Clients verwenden, starten Sie vLLM mit diesem Flag, um den gRPC-Endpunkt freizugeben.
Beispielkonfigurationen
Hochdurchsatz-Batchverarbeitung
Für Offline-Batch-Workloads, bei denen Gesamt-Token pro Sekunde wichtiger ist als die Latenz einzelner Anfragen:Latenzarmes interaktives Serving
Für Chat-Anwendungen, bei denen Benutzer auf Antworten warten und TTFT unter 500ms liegen sollte:Multi-Adapter-LoRA-Serving
Für das Serving mehrerer feinabgestimmter Varianten von einem Basismodell:model-Feld. Alle 3 Adapter teilen sich dieselben Basismodell-Gewichte, daher ist der GPU-Speicherverbrauch nahe am Serving des Basismodells allein — jeder LoRA-Adapter fügt nur wenige Megabyte hinzu.
Nach dem Ändern der vLLM-Konfiguration registrieren Sie Ihre Tokios-Deployment erneut, damit der Connector den neuen Upstream-Endpunkt übernimmt. Siehe Register Model.