Avancé 20 minvLLM

Déployer vLLM en production

vLLM est le moteur d'inférence de référence pour servir des LLM à l'échelle d'une équipe ou d'une entreprise. Là où Ollama excelle en usage personnel, vLLM bat tout le monde dès que plusieurs utilisateurs tapent en parallèle : le PagedAttention rend le batching 5 à 10x plus efficace. Ce guide installe, configure et expose un endpoint OpenAI-compatible prêt pour la prod.

Par Mohamed Meguedmi·Màj 2026-03-12·Testé sur Windows, macOS, Linux

#Qu'est-ce que vLLM ?

Un serveur d'inférence open source développé à Berkeley, optimisé pour servir des LLM à haut débit. Il gère le batching continu (continuous batching), la gestion de la mémoire par pages (PagedAttention), et expose une API OpenAI-compatible. Il est écrit en Python + CUDA, et ne supporte que les GPU NVIDIA (et AMD via ROCm, récent).

i
Conçu pour le throughput
Une requête seule sur Ollama et vLLM donnent des perfs similaires. 20 requêtes simultanées : vLLM peut en traiter 15 en parallèle via le batching continu, quand Ollama les met en file.

#Quand choisir vLLM plutôt qu'Ollama

Plus de 3 utilisateurs simultanés
Le throughput écrase Ollama dès que les requêtes se chevauchent.
Modèle identique servi à tous
vLLM charge un modèle et le sert à N requêtes. Pas idéal pour switcher entre 5 modèles à la demande.
Besoin de métriques Prometheus
Métriques natives : latence, TTFT, requêtes/s, VRAM used.
Environnement Kubernetes
Image Docker officielle, helm charts communautaires, observabilité de série.

#1. Installation

Via pip
# Python 3.10-3.12 recommandé
python3 -m venv venv
source venv/bin/activate

pip install --upgrade pip
pip install vllm
Privilégiez Docker en prod
vLLM a des dépendances CUDA complexes. L'image officielle vllm/vllm-openai élimine les problèmes de compatibilité entre versions.

#2. Lancer le serveur

CLI
python -m vllm.entrypoints.openai.api_server \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype auto \
  --gpu-memory-utilization 0.90 \
  --max-model-len 8192

Au premier lancement, vLLM télécharge les poids depuis Hugging Face (~15 Go pour un 7B non-quantifié en FP16). Prévoyez du disque.

Vérifier
curl http://localhost:8000/v1/models

curl http://localhost:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model":"mistralai/Mistral-7B-Instruct-v0.3",
    "messages":[{"role":"user","content":"Hi"}]
  }'

#3. Via Docker / systemd

Docker (GPU NVIDIA)
docker run --runtime nvidia --gpus all \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -p 8000:8000 \
  --ipc=host \
  -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN \
  vllm/vllm-openai:latest \
  --model mistralai/Mistral-7B-Instruct-v0.3
/etc/systemd/system/vllm.service
[Unit]
Description=vLLM OpenAI API
After=network.target

[Service]
Type=simple
User=vllm
ExecStart=/opt/vllm/bin/python -m vllm.entrypoints.openai.api_server \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --port 8000
Restart=always

[Install]
WantedBy=multi-user.target

#4. Paramètres clés

--quantization awq / gptq
Charge un modèle quantifié. -4x VRAM, perte qualité minimale. Modèles disponibles sur TheBloke.
--gpu-memory-utilization 0.90
Pourcentage de VRAM réservé. 0.95 en prod, 0.85 en dev pour garder de la marge.
--max-model-len 8192
Contexte maximum. Plus c'est haut, plus de VRAM consommée pour le KV cache.
--tensor-parallel-size 2
Répartit le modèle sur 2 GPU. Indispensable pour un 70B.
--enable-prefix-caching
Cache les préfixes identiques (ex : system prompt commun). +30 % de throughput sur des workloads répétitifs.

#5. Benchmarker

Script officiel
python benchmarks/benchmark_serving.py \
  --backend openai \
  --base-url http://localhost:8000 \
  --dataset-name sharegpt \
  --num-prompts 500 \
  --request-rate 10

Mesurez : TTFT (time to first token), tokens/s par requête, tokens/s agrégés. Sur une RTX 4090 + Mistral 7B AWQ, attendez 2000+ tokens/s agrégés avec 20 req/s.

#Sécurité et exposition

Pas d'auth native
vLLM écoute sans authentification. Mettez une clé API via --api-key, ou mieux, un reverse proxy (Caddy, Traefik) avec JWT.
Jamais directement sur Internet
Derrière un VPN ou un WAF. Les LLM servis ouvertement sont scannés et abusés en quelques heures.
Rate limiting
À mettre côté proxy. vLLM ne limite pas par utilisateur nativement.
Logs
Toujours logguer qui a prompté quoi. Utile pour debug et audit.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.