Benchmarks de LLM avec 16 Go de VRAM et llama.cpp (vitesse et contexte)
Vitesse de génération de tokens de llama.cpp sur 16 Go de VRAM (tableaux).
Voici, je compare la vitesse de plusieurs LLM (modèles de langage de grande taille) exécutés sur une GPU avec 16 Go de VRAM, et je choisis le meilleur pour l’auto-hébergement.
J’ai exécuté ces LLM avec llama.cpp en utilisant des fenêtres de contexte de 19K, 32K et 64K tokens.

Dans cet article, je consigne mes tentatives pour extraire le maximum de performances en termes de vitesse.
Tableau comparatif de la vitesse des LLM (tokens par seconde et VRAM)
| Modèle | Taille | 19K VRAM | 19K GPU/CPU | 19K T/s | 32K VRAM | 32K Charge | 32K T/s | 64K VRAM | 64K Charge | 64K: T/s |
|---|---|---|---|---|---|---|---|---|---|---|
| Qwen3.5-35B-A3B-UD-IQ3_S | 13.6 | 14.3GB | 93%/100% | 136.4 | 14.6GB | 93%/100% | 138.5 | 14.9GB | 88%/115% | 136.8 |
| Qwen3.5-27B-UD-IQ3_XXS | 11.5 | 12.9 | 98/100 | 45.3 | 13.7 | 98/100 | 45.1 | 14.7 | 45/410 | 22.7 |
| Qwen3.5-122B-A10B-UD-IQ3_XXS | 44.7 | 14.7 | 30/470 | 22.3 | 14.7 | 30/480 | 21.8 | 14.7 | 28/490 | 21.5 |
| nvidia Nemotron-Cascade-2-30B IQ4_XS | 18.2 | 14.6 | 60/305 | 115.8 | 14.7 | 57/311 | 113.6 | 14.7 | 55/324 | 103.4 |
| gemma-4-26B-A4B-it-UD-IQ4_XS | 13.4 | 14.7 | 95/100 | 121.7 | 14.9 | 95/115 | 114.9 | 14.9 | 75/190 | 96.1 |
| gemma-4-31B-it-UD-IQ3_XXS | 11.8 | 14.8 | 68/287 | 29.2 | 14.8 | 41/480 | 18.4 | 14.8 | 18/634 | 8.1 |
| GLM-4.7-Flash-IQ4_XS | 16.3 | 15.0 | 66/240 | 91.8 | 14.9 | 62/262 | 86.1 | 14.9 | 53/313 | 72.5 |
| GLM-4.7-Flash-REAP-23B IQ4_XS | 12.6 | 13.7 | 92/100 | 122.0 | 14.4 | 95/102 | 123.2 | 14.9 | 71/196 | 97.1 |
19K, 32K et 64K désignent les tailles de contexte.
La charge indiquée ci-dessus correspond à la Charge GPU.
Si vous voyez un chiffre bas dans cette colonne, cela signifie que le modèle s’exécute principalement sur le CPU et ne peut atteindre une vitesse correcte sur ce matériel. Ce schéma correspond à ce que les utilisateurs observent lorsque trop peu du modèle tient sur la GPU ou lorsque le contexte pousse le traitement vers l’hôte.
À propos de llama.cpp, des performances des LLM, d’OpenCode et d’autres comparaisons
Si vous souhaitez connaître les chemins d’installation, des exemples pour llama-cli et llama-server, ainsi que les drapeaux (flags) importants pour la VRAM et les tokens par seconde (taille du contexte, batching, -ngl), commencez par llama.cpp Quickstart avec CLI et Server.
Pour une vue d’ensemble plus large sur les performances (débit vs latence, limites VRAM, requêtes parallèles et comment les benchmarks s’articulent selon le matériel et les environnements d’exécution), consultez Performances des LLM en 2026 : Benchmarks, Goulots d’étranglement et Optimisation.
La qualité des réponses est analysée dans d’autres articles, par exemple :
- Meilleurs LLM pour OpenCode - Testés localement. Vous pouvez en savoir plus sur Opencode dans OpenCode Quickstart : Installation, Configuration et Utilisation de l’Agent de Codage IA Terminal.
- Comparaison de la qualité de traduction de page Hugo - LLM sur Ollama.
J’ai également réalisé des tests similaires pour les LLM sur Ollama : Meilleurs LLM pour Ollama sur GPU 16 Go VRAM.
Pourquoi la longueur du contexte change les tokens par seconde
Lorsque vous passez de 19K à 32K ou 64K tokens, le cache KV s’agrandit et la pression sur la VRAM augmente. Certaines lignes montrent une chute importante des tokens par seconde à 64K tandis que d’autres restent stables ; c’est le signal qu’il faut reconsidérer les quantifications, les limites de contexte ou la décharge des couches, plutôt que de supposer que le modèle est « lent » en général.
Les modèles et quantifications que j’ai choisis pour tester sont ceux que je fais tourner moi-même, afin de vérifier s’ils offrent un bon gain en termes de coût/bénéfice sur cet équipement ou non. Donc pas de quantifications q8 ici avec 200k de contexte :) …
GPU/CPU est une charge, mesurée par nvitop.
Lorsque llama.cpp configure automatiquement la décharge des couches vers la GPU, il essaie de garder 1 Go libre.
Nous spécifions manuellement ce paramètre via le paramètre de ligne de commande -ngl, mais je ne le régle pas finement ici ; il suffit de comprendre que s’il y a une baisse significative des performances lors de l’augmentation de la taille de la fenêtre de contexte de 32k à 64k, nous pouvons essayer d’augmenter la vitesse à 64k en affinant le nombre de couches déchargées.
Matériel de test et configuration de llama.cpp
J’ai testé la vitesse des LLM sur un PC avec cette configuration :
- CPU i-14700
- RAM 64 Go 6000 Hz (2x32 Go)
- GPU RTX-4080
- Ubuntu avec pilotes Nvidia
- llama.cpp/llama-cli, aucune couche déchargée spécifiée
- VRAM utilisée initialement, avant le démarrage de llama-cli : 300 Mo
Tests supplémentaires à 128K de contexte (Qwen3.5 27B et 122B)
| Modèle | 128K Charge | 128K: T/s |
|---|---|---|
| Qwen3.5-27B-UD-IQ3_XXS | 16/625 | 9.6 |
| Qwen3.5-122B-A10B-UD-IQ3_XXS | 27/496 | 19.2 |
Points clés pour les configurations 16 Go VRAM
- Mon favori actuel, Qwen3.5-27B-UD-IQ3_XXS, semble excellent sur son point optimal de contexte 50k (je peux atteindre environ 36 t/s).
- Qwen3.5-122B-A10B-UD-IQ3_XXS dépasse les performances de Qwen3.5 27B sur les contextes supérieurs à 64K.
- Je peux pousser Qwen3.5-35B-A3B-UD-IQ3_S pour gérer un contexte de 100k tokens, et il tient dans la VRAM, donc aucune perte de performance.
- Je n’utiliserai pas gemma-4-31B sur 16 Go VRAM, mais gemma-4-26B pourrait être moyen-bien…, il faut tester.
- Il faut tester à quel point Nemotron cascade 2 et GLM-4.7 Flash REAP 23B fonctionnent. Seront-ils meilleurs que Qwen3.5-35B q3 ? J’en doute, mais je vais quand même tester pour confirmer ce soupçon.