vLLM optimise le débit des modèles génératifs et fournit une API compatible OpenAI. Le modèle doit être compatible avec votre GPU, sa VRAM et la version de vLLM.
Vérifier et installer
~~~bash nvidia-smi python -m venv .venv source .venv/bin/activate pip install -U vllm openai ~~~
Suivez la matrice CUDA officielle si les roues précompilées ne correspondent pas au pilote.
Servir
~~~bash export VLLM_API_KEY='une-cle-longue' vllm serve organisation/modele-instruct \ --host 0.0.0.0 --port 8000 \ --dtype auto \ --max-model-len 8192 \ --gpu-memory-utilization 0.90 \ --api-key "$VLLM_API_KEY" ~~~
Une fenêtre plus courte libère du cache KV et permet davantage de requêtes simultanées.
Tester
~~~python import os from openai import OpenAI
client = OpenAI(base_url='http://127.0.0.1:8000/v1', api_key=os.environ['VLLM_API_KEY']) response = client.chat.completions.create( model='organisation/modele-instruct', messages=[{'role':'user','content':'Réponds en français : que fait vLLM ?'}], max_tokens=150, ) print(response.choices[0].message.content) ~~~
Mesurer
Testez la distribution réelle des longueurs et de la concurrence. Suivez temps au premier token, tokens par seconde, file, cache KV et erreurs mémoire. Un modèle qui tient au repos peut échouer sous charge.
Production
Placez un proxy TLS authentifié devant vLLM, bloquez le port interne et ajoutez quotas. Épinglez image et révision du modèle, montez un cache durable et utilisez un readiness check avec petite génération. Vérifiez licence et provenance.
FAQ
Pourquoi une erreur de contexte ?
Entrée plus sortie dépasse max-model-len servi. Tronquez explicitement ou redimensionnez après test.
Plusieurs workers sur un GPU ?
Évitez de charger plusieurs copies. Laissez vLLM gérer le batching ou utilisez des réplicas par GPU.
Lancer le serveur et valider l’API
~~~bash python -m venv .venv source .venv/bin/activate pip install vllm vllm serve Qwen/Qwen2.5-7B-Instruct \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 ~~~
~~~bash curl -fsS http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model":"Qwen/Qwen2.5-7B-Instruct", "messages":[{"role":"user","content":"Réponds seulement OK"}], "max_tokens":8 }' ~~~
Commencez sur une interface privée. Contrôlez modèle, révision, dtype, mémoire GPU et longueur de contexte dans les logs. Ajoutez une sonde, une limite de concurrence et un test de charge mesurant p50/p95, débit et erreurs d’allocation. Protégez l’endpoint par authentification ou passerelle avant toute exposition réseau.