vLLM-Produktions-Stack: Bereitstellung und Grundkonfiguration für die Produktion
Der vLLM-Produktions-Stack vereinfacht die Bereitstellung leistungsstarker LLM-Inferenz unter Kubernetes. Er besteht aus einer Gruppe von vLLM-Instanzen, die mit einem Router zur Anfragerouting kombiniert werden. Unterstützt OpenAI-kompatible APIs: chat/completions, Embeddings, Tokenisierung, Audio-Transkription und Übersetzung. Testumgebung: 2 Server mit jeweils 8× NVIDIA H200 (141 GB), Astra Linux SE 8, Kubernetes 1.30, vLLM 0.17.0, Production Stack 0.1.10.
Konfigurationsbeispiele werden als YAML-Snippets dargestellt. Vollständige Manifeste enthalten standardmäßige Kubernetes-Felder, die hier aus Platzgründen weggelassen wurden. Parameterkonflikte sind gesondert hervorgehoben.
Unterstützte Modelle und Laden
vLLM unterstützt die meisten aktuellen LLMs. Für neue Modelle sollten nightly Builds verwendet werden. Die Standardquelle für Modelle ist Hugging Face. In offline-Umgebungen kann das Modell über einen PVC gemountet werden:
extraVolumeMounts:
- mountPath: /models/Qwen3-8B
name: model
readOnly: true
extraVolumes:
- name: model
persistentVolumeClaim:
claimName: pvc-qwen3-8b
Einfache Bereitstellung von Qwen3-8B
Bereitstellung von Qwen3-8B mit lokalem Mounting und OpenAI-API-Unterstützung:
servingEngineSpec:
enableEngine: true
modelSpec:
- name: qwen3-8b
repository: vllm-openai
tag: v0.17.0
env:
- name: HF_HUB_OFFLINE
value: "1"
modelURL: /models/Qwen3-8B
extraVolumeMounts:
- mountPath: /models/Qwen3-8B
name: model
readOnly: true
extraVolumes:
- name: model
persistentVolumeClaim:
claimName: pvc-qwen3-8b
replicaCount: 1
requestCPU: 8
requestGPU: 1
requestMemory: 16Gi
vllmConfig:
extraArgs:
- --served-model-name
- Qwen/Qwen3-8B
gpuMemoryUtilization: 0.98
Die Einstellung HF_HUB_OFFLINE=1 deaktiviert alle Aufrufe zum Hugging Face Hub. Port-Forwarding: kubectl port-forward svc/... 9191:9191. Testanfrage:
curl -N http://localhost:9191/v1/chat/completions \
-H "Content-Type: application/json" \
--data-raw '{
"model": "Qwen/Qwen3-8B",
"messages": [
{ "role": "user", "content": "Schreibe: Hallo!" }
]
}'
Modelle im Denkmodus geben einen thinks>...<think>-Block zurück.
Tool-Aufruf und Denkmodus
Aktivieren serverseitiger Optionen für Tool-Aufrufe:
extraArgs:
- --enable-auto-tool-choice
- --tool-call-parser
- qwen3_coder
Ohne diese Einstellungen scheitern Agent-Workflows. Denkmodus aktivieren/deaktivieren über --default-chat-template-kwargs:
extraArgs:
- --default-chat-template-kwargs
- '{"enable_thinking": false}'
Clientseitige chat_template_kwargs überschreiben serverseitige Einstellungen. Für DeepSeek: {"thinking": false}.
Multimodale Modelle und CPU-Backend
Multimodale Modelle erfordern ein benutzerdefiniertes Image:
FROM vllm/vllm-openai:v0.17.0
RUN uv pip install --system "vllm[audio]==0.17.0" && \
uv pip install --system "vllm[video]==0.17.0"
Erhöhen Sie shmSize: "32Gi" für mm_processor_cache. Setzen Sie tensorParallelSize: 1. Für Qwen3-Omni-30B verwenden Sie --limit-mm-per-prompt.
CPU-only-Inferenz für Embedding-Modelle (Qwen3-Embedding-0.6B):
env:
- name: VLLM_CPU_KVCACHE_SPACE
value: "48"
vllmConfig:
extraArgs:
- --served-model-name
- Qwen3-Embedding-0.6B
VLLM_CPU_KVCACHE_SPACE muss mit Speicherpuffer konfiguriert werden.
Wichtige Laufzeitparameter
| Parameter | Zweck | Wann kritisch |
|----------|---------|---------------|
| enablePrefixCaching | Gemeinsamen Präfix-KV-Cache speichern | Wiederholte Prompt-Anfänge |
| enableChunkedPrefill | Lange Pre-fill-Phasen aufteilen | Lange Eingaben, gemischte Workloads |
| maxModelLen | Maximale Kontextlänge | Speichersparen, lange Kontexte |
| dtype | Gewicht-Datentyp | Präzisionssteuerung |
| tensorParallelSize | GPU-Partitionierung | Große Modelle |
| maxNumSeqs | Max. Sequenzen pro Batch | Parallelität, Latenz |
| gpuMemoryUtilization | GPU-Speicherausnutzung | OOM-Optimierung |
gpuMemoryUtilization=0.98 reserviert Platz für KV-Cache. maxModelLen begrenzt den Kontext zur Speichersparnis. enablePrefixCaching beschleunigt wiederholte Präfixe.
Wichtige Erkenntnisse
- Der vLLM-Produktions-Stack ist eine sofort einsatzbereite Kubernetes-Schicht mit integriertem Router und Observability.
- Für Offline-Betrieb: Modelle über PVC mounten und HF_HUB_OFFLINE=1 setzen.
- Tool-Aufrufe erfordern --enable-auto-tool-choice und modellspezifischen Parser.
- Multimodale Modelle: benutzerdefiniertes Image + shmSize 32Gi + tensorParallelSize.
- CPU-Modus: VLLM_CPU_KVCACHE_SPACE mit Puffer.
— Editorial Team
Noch keine Kommentare.