laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Si vous développez une application avec plusieurs utilisateurs concurrents, Ollama et LM Studio ne suffiront pas. Vous avez besoin d'un moteur d'inférence de niveau entreprise. Vous avez besoin de vLLM.
Introduction
vLLM est un moteur de service LLM à haut débit et à mémoire optimisée. Il utilise une technique appelée PagedAttention pour gérer efficacement les clés et valeurs d'attention, offrant un débit 2 à 4 fois supérieur à celui des Transformers HuggingFace standard.
Ce guide suppose que vous exécutez un serveur Linux équipé d'au moins un GPU NVIDIA haut de gamme (par exemple, RTX 3090, 4090 ou A100).
Step 1 Prérequis
vLLM nécessite Python et CUDA. Nous recommandons vivement l'utilisation d'un environnement virtuel tel que conda ou le venv standard.
Terminal
sudo apt update
sudo apt install python3-pip python3-venv
# Create and activate environment
python3 -m venv vllm-env
source vllm-env/bin/activate
Step 2 Installation de vLLM
Installez vLLM directement depuis PyPI. Cette commande téléchargera automatiquement PyTorch ainsi que les dépendances CUDA nécessaires.
Step 3 Démarrage d'un serveur compatible OpenAI
vLLM supporte nativement le protocole API d'OpenAI. Vous pouvez servir un modèle directement depuis la ligne de commande. Nous utiliserons Llama 3 8B comme exemple.
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-8B-Instruct --dtype auto --api-key your-secret-key --port 8000
Explication des paramètres clés :
- --model : L'identifiant du dépôt HuggingFace. vLLM le téléchargera automatiquement.
- --dtype auto : Utilise automatiquement bfloat16 ou float16 pour des performances maximales.
- --api-key : Sécurise votre point de terminaison afin d'éviter que des utilisateurs tiers ne saturent votre GPU.
Step 4 Connexion à l'API
Vous pouvez désormais interroger ce serveur via le SDK Python standard d'OpenAI, en remplaçant simplement la base_url.
Terminal
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="your-secret-key"
)
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B-Instruct",
messages=[
{"role": "user", "content": "Explain PagedAttention."}
],
)
print(response.choices[0].message.content)
Step 5 Optimisation pour la production
Si vous disposez de plusieurs GPU (par exemple, deux RTX 3090), vous pouvez répartir un grand modèle 70B entre eux grâce au parallélisme tensoriel. Il suffit d'ajouter le flag --tensor-parallel-size :
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 2
Avec vLLM en cours d'exécution, votre serveur Linux est désormais capable de traiter des dizaines de requêtes concurrentes simultanément, sans aucune dégradation de la latence.