Benchmarks LLM avec 16 Go de VRAM utilisant 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 tournant sur un 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 avec des fenêtres de contexte de 19K, 32K et 64K tokens.

GPU stylisé avec des blocs VRAM et des graphiques de type 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.3 Go 93%/100% 136.4 14.6 Go 93%/100% 138.5 14.9 Go 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-27B-IQ4_XS.gguf 15.0 14.6 49/406 20.5 14.7 37/465 17.4 14.7 23/533 13.3
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
Qwen3.5-122B-A10B-UD-IQ3_S 46.5 14.7 25/516 19.4 14.7 24/516 19.5 14.7 24/516 19.6
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 sont les tailles de contexte.

La charge ci-dessus est une Charge GPU. Si vous voyez un nombre faible dans cette colonne, cela signifie que le modèle s’exécute principalement sur le CPU et ne peut pas obtenir une vitesse décente sur ce matériel. Ce schéma correspond à ce que les gens observent lorsque trop peu du modèle tient sur le GPU ou lorsque le contexte repousse le travail 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 importants pour la VRAM et les tokens par seconde (taille de contexte, batch, -ngl), commencez par llama.cpp Quickstart avec CLI et Server.

Pour une vue d’ensemble plus large des performances (débit par rapport à la latence, limites de VRAM, requêtes parallèles et comment les benchmarks s’articulent entre le matériel et les environnements d’exécution), consultez Performances des LLM en 2026 : Benchmarks, Goulottes et Optimisation.

La qualité de la réponse est analysée dans d’autres articles, par exemple :

J’ai également effectué 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 grandit et la pression sur la VRAM augmente. Certaines lignes montrent une forte baisse des tokens par seconde à 64K tandis que d’autres restent stables, ce qui est le signal pour réviser les quantifications, les limites de contexte ou l’offloading de 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 destinés à être exécutés par moi-même afin de voir s’ils offrent un bon gain en termes de rapport coût/bénéfice sur cet équipement ou non. Donc, pas de quantifications q8 ici avec un contexte de 200k :) …

GPU/CPU est une charge, mesurée par nvitop.

Lorsque llama.cpp configure automatiquement les couches pour les décharger vers le 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 ajustant le nombre de couches déchargées.

Matériel de test et configuration llama.cpp

J’ai testé la vitesse des LLM sur un PC avec cette configuration :

  • CPU i-14700
  • RAM 64 Go 6000Hz (2x32 Go)
  • GPU RTX-4080
  • Ubuntu avec pilotes NVidia
  • llama.cpp/llama-cli, aucune couche déchargée spécifiée
  • VRAM initiale utilisée, avant de démarrer llama-cli : 300 Mo

Lancers supplémentaires à 128K de contexte (Qwen3.5 27B et 122B)

Modèle Charge 128K 128K T/s
Qwen3.5-27B-UD-IQ3_XXS 16/625 9.6
Qwen3.5-122B-A10B-UD-IQ3_XXS 27/496 19.2

Lancers avec réglage fin (Finetuned Runs)

Pour certains modèles et quantifications intéressants, j’ai essayé de trouver des paramètres de ligne de commande llama-cpp spécifiques pour mieux utiliser la VRAM. Voici ce que j’ai pu obtenir :

Modèle Contexte Couches sur GPU Charge CPU/CPU Vitesse
Qwen3.5-27B-IQ4_XS.gguf 18k 65 98%/100% 38.0
Qwen3.5-27B-IQ4_XS.gguf 64k 53 33%/488% 15.7

Principales conclusions pour les builds 16 Go VRAM

  • Mon favori actuel Qwen3.5-27B-UD-IQ3_XXS se comporte bien sur son point optimal de contexte 50k (je obtiens environ 36t/s)
  • Qwen3.5-122B-A10B-UD-IQ3_XXS dépasse en termes de performances le Qwen3.5 27B sur les contextes supérieurs à 64K.
  • Je peux pousser Qwen3.5-35B-A3B-UD-IQ3_S à gérer un contexte de 100k tokens, et il tient dans la VRAM, donc pas de baisse 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 tout de même tester pour confirmer le soupçon.