Stack de production vLLM : déploiement et configuration de base
Le stack de production vLLM simplifie le déploiement d'inference haute performance pour les LLM sur Kubernetes. Il se compose d'une série d'instances vLLM associées à un routeur pour gérer le routage des requêtes. Compatible avec les API OpenAI : chat/completions, embeddings, tokenisation, transcription audio et traduction. Environnement de test : 2 serveurs équipés de 8× NVIDIA H200 (141 Go), Astra Linux SE 8, Kubernetes 1.30, vLLM 0.17.0, Stack de production 0.1.10.
Les exemples de configuration sont présentés sous forme de snippets YAML. Les manifests complets incluent des champs standard Kubernetes, omis ici pour plus de concision. Les conflits de paramètres sont signalés séparément.
Modèles pris en charge et chargement
vLLM prend en charge la majorité des LLM actuels. Utilisez les builds nightly pour les nouveaux modèles. Les modèles sont téléchargés depuis Hugging Face par défaut. Dans les environnements hors ligne, montez via PVC :
extraVolumeMounts:
- mountPath: /models/Qwen3-8B
name: model
readOnly: true
extraVolumes:
- name: model
persistentVolumeClaim:
claimName: pvc-qwen3-8b
Déploiement basique de Qwen3-8B
Déployez Qwen3-8B avec montage local et prise en charge de l'API OpenAI :
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
La configuration HF_HUB_OFFLINE=1 désactive toutes les requêtes vers Hugging Face Hub. Pour le port forwarding : kubectl port-forward svc/... 9191:9191. Testez la requête :
curl -N http://localhost:9191/v1/chat/completions \
-H "Content-Type: application/json" \
--data-raw '{
"model": "Qwen/Qwen3-8B",
"messages": [
{ "role": "user", "content": "Écris : Bonjour !" }
]
}'
Les modèles en mode réflexion renvoient un bloc thinks>...<think>.
Appel d'outils et modes de réflexion
Activez les options côté serveur pour l'appel d'outils :
extraArgs:
- --enable-auto-tool-choice
- --tool-call-parser
- qwen3_coder
Sans ces paramètres, les workflows d'agents échouent. Activez/désactivez le mode réflexion via --default-chat-template-kwargs :
extraArgs:
- --default-chat-template-kwargs
- '{"enable_thinking": false}'
Les paramètres chat_template_kwargs côté client remplacent les réglages serveur. Pour DeepSeek : {"thinking": false}.
Modèles multimodaux et backend CPU
Les modèles multimodaux nécessitent une image personnalisée :
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"
Augmentez shmSize: "32Gi" pour mm_processor_cache. Définissez tensorParallelSize: 1. Pour Qwen3-Omni-30B : utilisez --limit-mm-per-prompt.
Inférence uniquement CPU pour les modèles d'embeddings (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 doit être défini avec une mémoire tampon.
Paramètres clés au runtime
| Paramètre | Objectif | Quand critique |
|----------|---------|---------------|
| enablePrefixCaching | Mettre en cache le KV-cache partagé | Débuts de prompt répétés |
| enableChunkedPrefill | Fractionner les phases de pré-remplissage longues | Entrées longues, charges mixtes |
| maxModelLen | Longueur maximale du contexte | Économie de mémoire, grands contextes |
| dtype | Type de données des poids | Contrôle de précision |
| tensorParallelSize | Partitionnement GPU | Modèles volumineux |
| maxNumSeqs | Nombre maximal de séquences par lot | Parallélisme, latence |
| gpuMemoryUtilization | Utilisation de la mémoire GPU | Optimisation OOM |
gpuMemoryUtilization=0.98 réserve de l'espace pour le KV-cache. maxModelLen limite le contexte pour économiser de la mémoire. enablePrefixCaching accélère les préfixes répétés.
Points clés
- Le stack de production vLLM est une couche prête à l'emploi sur Kubernetes, avec routeur intégré et observabilité.
- En mode hors ligne, montez les modèles via PVC et définissez HF_HUB_OFFLINE=1.
- L'appel d'outils nécessite --enable-auto-tool-choice et un parser spécifique au modèle.
- Modèles multimodaux : image personnalisée + shmSize 32Gi + tensorParallelSize.
- Mode CPU : VLLM_CPU_KVCACHE_SPACE avec tampon.
— Editorial Team
Aucun commentaire pour le moment.