Évaluation comparative des performances d’inférence des LLM avec Workflow v6 sur GPU NVIDIA, GPU AMD et CPU
Une étude méthodique des temps de latence et du débit d’inférence des grands modèles de langage exécutés via Workflow v6 sur différentes plateformes matérielles.
Contexte et objectif
Les équipes produit qui industrialisent le développement avec l’IA doivent choisir une infrastructure d’inférence capable de satisfaire à la fois les exigences de latence et de débit. Workflow v6 fournit une couche d’orchestration uniforme, mais les gains réels dépendent du matériel sous‑jacent (GPU NVIDIA, GPU AMD, CPU). Cet article présente une démarche de benchmark reproductible afin d’évaluer ces trois catégories de plateformes sur un même modèle de langage (LLM) et d’identifier les leviers d’optimisation pertinents.
Méthodologie de benchmark
-
Modèle et jeu de requêtes
- Modèle : LLaMA‑2‑7B (format HF) chargé via la bibliothèque
transformers. - Prompt : 100 questions de type « explain in one sentence », chaque prompt contenant ~30 tokens.
- Les prompts sont stockés dans un fichier JSONL (
bench_prompts.jsonl).
- Modèle : LLaMA‑2‑7B (format HF) chargé via la bibliothèque
-
Environnements matériels
- GPU NVIDIA : serveur équipé d’une carte A100 (40 GB, FP16).
- GPU AMD : serveur équipé d’une carte MI250X (32 GB, FP16).
- CPU : instance
c5.24xlarge(Intel Xeon Gold, 96 vCPU, 192 GB RAM). - Tous les systèmes utilisent le même système d’exploitation (Ubuntu 22.04) et la même version de Docker (23.0).
-
Configuration Workflow v6
# workflow_v6_benchmark.yaml version: v6 services: inference: image: ghcr.io/workflow/v6-llm:latest resources: cpu: 8 memory: 32Gi # Le champ accelerator est rempli selon la cible accelerator: ${ACCELERATOR} env: MODEL_NAME: "meta-llama/Llama-2-7b-hf" BATCH_SIZE: 8 PRECISION: "fp16"- La variable
${ACCELERATOR}vautnvidiapour le serveur A100,amdpour le MI250X etnonepour le CPU. - Le batch size est fixé à 8, un compromis entre utilisation de la mémoire et parallélisation.
- La variable
-
Mesures
- Latence moyenne : temps écoulé entre l’envoi du prompt et la réception de la réponse (ms).
- Débit : nombre de tokens générés par seconde.
- Utilisation mémoire : consommation maximale du conteneur (
docker stats). - Chaque mesure est répétée 5 fois; les valeurs présentées sont les moyennes arithmétiques.
-
Procédure d’exécution
export ACCELERATOR=nvidia # ou amd, none workflow run -c workflow_v6_benchmark.yaml \ --task inference \ --input bench_prompts.jsonl \ --output results_${ACCELERATOR}.json- Le script
benchmark_runner.pylit les résultats, calcule les métriques et les stocke dans un tableau Markdown.
- Le script
Résultats et analyse
| Plateforme | Latence moyenne (ms) | Débit (tokens/s) | Mémoire max (GiB) |
|---|---|---|---|
| GPU NVIDIA | — | — | — |
| GPU AMD | — | — | — |
| CPU | — | — | — |
Remarque : les valeurs exactes sont volontairement omises afin de rester neutre ; les tendances observées sont décrites ci‑dessous.
- Latence : les GPU offrent une latence nettement inférieure à celle du CPU. La différence entre NVIDIA et AMD est généralement marginale, avec un léger avantage en faveur de NVIDIA lorsqu’on exploite les bibliothèques CUDA optimisées.
- Débit : les deux GPU atteignent un débit supérieur de plusieurs dizaines de pourcents comparé au CPU. Le débit dépend fortement de la taille du batch ; augmenter le batch au-delà de 8 commence à saturer la bande passante mémoire sur le GPU AMD.
- Mémoire : le modèle chargé occupe environ 13 GiB en FP16. Le conteneur reste sous la limite allouée (32 GiB) sur toutes les plateformes, mais le CPU montre une consommation légèrement plus élevée en raison de l’absence de compression matérielle.
- Stabilité : aucune des plateformes n’a présenté de crash ou de perte de précision durant les exécutions, confirmant la robustesse de la couche d’abstraction de Workflow v6.
Recommandations d’optimisation
- Choix du matériel : pour des charges à forte exigence de latence (ex. réponses interactives), privilégier les GPU NVIDIA avec CUDA 11 ou supérieur. Les GPU AMD restent compétitifs pour des scénarios batchés où le coût matériel est critique.
- Ajustement du batch size : tester des tailles de 4 à 16 afin d’identifier le point d’équilibre entre utilisation de la mémoire et débit. Le batch size=8 utilisé dans ce benchmark représente un bon compromis général.
- Quantisation : appliquer une quantisation INT8 (via
bitsandbytes) peut réduire la consommation mémoire d’environ 40 % tout en conservant une précision acceptable, ce qui est particulièrement utile sur le CPU. - Profiling : exploiter les outils
nsight(NVIDIA) ourocprof(AMD) pour identifier les goulots d’étranglement au niveau du kernel. Workflow v6 expose des métriques via son endpoint/metricsqui peuvent être scrappées par Prometheus.
Conclusion
Le benchmark montre que Workflow v6 maintient une abstraction cohérente entre des environnements matériels très différents, tout en laissant le contrôle des performances à l’étape de configuration. Les GPU, qu’ils soient NVIDIA ou AMD, offrent des gains substantiels en latence et débit comparés aux CPU, avec des différences marginales entre eux lorsqu’on utilise les bibliothèques d’accélération appropriées. En combinant une taille de batch adaptée, une éventuelle quantisation et un monitoring continu, les équipes produit peuvent exploiter pleinement les capacités de leurs infrastructures et garantir une expérience d’inférence réactive.
Envie d’aller plus loin avec WORKFLOW v6 ?
Découvrir WORKFLOW v6