?
GuideavancéVérifié le 2025-05

vLLM : servir des modèles à haute performance

Configurer vLLM pour de l'inférence rapide avec PagedAttention et batching continu.

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 8000

Utilisation 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 4

Quantization

vLLM supporte AWQ et GPTQ nativement :

python -m vllm.entrypoints.openai.api_server \
    --model TheBloke/Llama-3.3-70B-AWQ \
    --quantization awq

Paramè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 2

Kubernetes

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

Sources

vLLMinférenceperformance