vLLM : inférence LLM haute performance
vLLM est un moteur d'inférence open source conçu pour servir des LLMs à haute vitesse. Son innovation principale, PagedAttention, gère la mémoire GPU de manière optimale pour maximiser le débit.
Pourquoi vLLM ?
- PagedAttention : Gestion mémoire inspirée des OS, élimine le gaspillage GPU
- Continuous batching : Traitement dynamique des requêtes sans attente
- Débit élevé : 5-24x plus rapide que Hugging Face Transformers
- API OpenAI compatible : Drop-in replacement pour les applications existantes
- Large support : Llama, Mistral, Qwen, et 100+ architectures
Installation et démarrage
pip install vllm
# Lancer un serveur API
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.3-70B-Instruct \
--tensor-parallel-size 2 \
--max-model-len 4096 \
--port 8000Utilisation de l'API
L'API est compatible OpenAI, donc tout client existant fonctionne :
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")
response = client.chat.completions.create(
model="meta-llama/Llama-3.3-70B-Instruct",
messages=[{"role": "user", "content": "Bonjour !"}],
temperature=0.7
)Configuration avancée
Tensor parallelism
Distribuez le modèle sur plusieurs GPU :
# Llama 70B sur 2 GPU A100
--tensor-parallel-size 2
# Llama 70B sur 4 GPU A40
--tensor-parallel-size 4Quantization
vLLM supporte AWQ et GPTQ nativement :
python -m vllm.entrypoints.openai.api_server \
--model TheBloke/Llama-3.3-70B-AWQ \
--quantization awqParamètres de performance
--max-num-batched-tokens: Tokens max par batch--max-num-seqs: Séquences simultanées max--gpu-memory-utilization: Fraction GPU à utiliser (défaut: 0.9)--enforce-eager: Désactiver CUDA graphs pour le debug
Déploiement production
Docker
docker run --gpus all \
-p 8000:8000 \
vllm/vllm-openai:latest \
--model meta-llama/Llama-3.3-70B-Instruct \
--tensor-parallel-size 2Kubernetes
vLLM fonctionne bien sur GKE, EKS ou AKS avec des GPU nodes. Utilisez un HorizontalPodAutoscaler basé sur les métriques de latence.
Bonnes pratiques
- Utilisez AWQ pour le meilleur ratio performance/qualité
- Configurez
gpu-memory-utilizationà 0.85-0.95 selon votre charge - Monitorez le throughput (tokens/s) et la latence P95
- Utilisez le streaming pour les réponses longues
- Activez les prefix caching pour les prompts système répétitifs