Pour références, consultez la documentation officielle de Triton Inference Server et les guides de performance.
Déploiement avec le backend vLLM
Étapes d'installation
Téléchargez l'image Docker contenant le backend vLLM depuis le catalogue NVIDIA NGC.
docker run -it --name triton_vllm_container --ipc=host --network=host --entrypoint /bin/bash --gpus=all -v /chemin/données/:/modeles/ tritonserver:25.01-vllm-python-py3
Préparez l'arborescence des fichiers de modèle comme suit :
./modeles/
└── llm_backend
├── 1
│ └── configuration.json
└── config.pbtxt
Exemple de fichier configuration.json :
{
"chemin_modele": "/MonModele-LLM-7B",
"desactiver_journaux": true,
"utilisation_memoire_gpu": 0.85,
"execution_eager": true,
"longueur_max_modele": 8192,
"taille_parallele_tenseurs": 2
}
Contenu de config.pbtxt :
backend: "vllm"
instance_group [
{
count: 2
kind: KIND_MODEL
}
]
Lancez le serveur d'inférence :
tritonserver --model-repository=./modeles/
Envoyez une requête de test à l'endpoint de génération :
curl -X POST localhost:8000/v2/models/llm_backend/generate \
-d '{"texte_entree": "Expliquez le concept d apprentissage profond en français.", "parametres": {"flux": false, "temperature": 0.1, "exclure_entree_sortie": true, "tokens_max": 300}}'
Résultat attendu (exemple simplifié) :
{"nom_modele":"llm_backend","version_modele":"1",
"texte_sortie":"L'apprentissage profond est une branche de l'intelligence artificielle..."}
Pour visualiser les métriques de performance, accédez à l'endpoint de métriques :
curl localhost:8002/metrics
Exemple de sortie de métriques (valeurs interprétées) :
nv_inference_count{model="llm_backend",version="1"} 15
nv_inference_exec_count{model="llm_backend",version="1"} 15
nv_inference_request_duration_us{model="llm_backend",version="1"} 5200
nv_inference_queue_duration_us{model="llm_backend",version="1"} 380
nv_inference_compute_input_duration_us{model="llm_backend",version="1"} 750
nv_inference_compute_infer_duration_us{model="llm_backend",version="1"} 3950
nv_inference_compute_output_duration_us{model="llm_backend",version="1"} 50
Ces indicateurs révèlent que la phase de calcul d'inférence (nv_inference_compute_infer_duration_us) consomme environ 76% du temps total, marquant un point de contention majeur.
Déploiement d'une interface compatible OpenAI
Utilisez le module frontend OpenAI disponible dans le dépôt de Triton Inference Server.
Cloner le code et démarrer le service :
git clone https://github.com/triton-inference-server/server.git
python3 server/python/openai/openai_frontend/main.py \
--model-repository ./modeles/ \
--tokenizer /Chemin/Vers/Tokenizer/
Exemple d'appel via cURL :
NOM_MODELE="llm_backend"
curl -s http://localhost:9000/v1/chat/completions -H 'Content-Type: application/json' -d '{
"model": "'${NOM_MODELE}'",
"messages": [{"role": "user", "content": "Bonjour, quel est votre rôle?"}]
}'
Intégration dans un script Python :
from openai import OpenAI
client_interface = OpenAI(
base_url="http://localhost:9000/v1",
cle_api="vide",
)
nom_modele = "llm_backend"
reponse = client_interface.chat.completions.create(
model=nom_modele,
messages=[
{
"role": "system",
"content": "Vous êtes un assistant technique.",
},
{"role": "user", "content": "Décrivez les avantages de Triton Server."},
],
tokens_max=200,
)
print(reponse.choices[0].message.content)
Tests de performance
Utilisez l'outil genai-perf pour mesurer les métriques de latence et de débit.
genai-perf profile \
-m llm_backend \
--tokenizer /Chemin/Vers/Tokenizer \
--service-kind openai \
--endpoint-type chat \
--url localhost:9000 \
--synthetic-input-tokens-mean 150 \
--synthetic-input-tokens-stddev 10 \
--output-tokens-mean 80 \
--output-tokens-stddev 5 \
--streaming \
--request-count 40 \
--warmup-request-count 8 \
--concurrency 5
Les résultats incluront des indicateurs tels que le temps de réponse du premier token et le débit global, permettant d'optimiser le déploiement en production.