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).

Sommaire

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.

GPU stylisé avec blocs VRAM et graphiques de style benchmark

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 :

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.