Benchmarks de LLM con 16 GB de VRAM en llama.cpp (velocidad y contexto)

Velocidad de tokens de llama.cpp en 16 GB de VRAM (tablas).

Índice

Aquí estoy comparando la velocidad de varios LLMs ejecutándose en una GPU con 16 GB de VRAM y eligiendo el mejor para autoalojamiento.

He ejecutado estos LLMs en llama.cpp con ventanas de contexto de 19K, 32K y 64K tokens.

Stylized GPU with VRAM blocks and benchmark-style charts

En este artículo registro mis intentos de exprimir el máximo rendimiento posible en términos de velocidad.

Tabla de comparación de velocidad de LLM (tokens por segundo y VRAM)

Modelo Tamaño 19K VRAM 19K GPU/CPU 19K T/s 32K VRAM 32K Carga 32K T/s 64K VRAM 64K Carga 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 y 64K son los tamaños de contexto.

La carga anterior es una Carga de GPU. Si ves un número bajo en esta columna, significa que el modelo se ejecuta principalmente en la CPU y no puede obtener una velocidad decente en este hardware. Ese patrón coincide con lo que la gente ve cuando demasiado poco del modelo cabe en la GPU o cuando el contexto empuja el trabajo de vuelta al host.

Sobre llama.cpp, rendimiento de LLM, OpenCode y otras comparaciones

Si quieres rutas de instalación, ejemplos de llama-cli y llama-server, y las banderas que importan para VRAM y tokens por segundo (tamaño de contexto, batching, -ngl), comienza con llama.cpp Quickstart con CLI y Server.

Para el panorama general del rendimiento (rendimiento versus latencia, límites de VRAM, solicitudes paralelas y cómo encajan las pruebas de rendimiento entre hardware y entornos de ejecución), consulta LLM Performance in 2026: Benchmarks, Bottlenecks & Optimization.

La calidad de la respuesta se analiza en otros artículos, por ejemplo:

También ejecuté pruebas similares para LLMs en Ollama: Mejores LLMs para Ollama en GPU con 16GB VRAM.

Por qué la longitud del contexto cambia los tokens por segundo

A medida que pasas de 19K a 32K o 64K tokens, la caché KV crece y la presión sobre la VRAM aumenta. Algunas filas muestran una gran caída en los tokens por segundo a 64K mientras que otras se mantienen estables, lo cual es una señal para revisar los cuantizados, los límites de contexto o la descarga de capas en lugar de asumir que el modelo es “lento” en general.

Los modelos y cuantizados que he elegido para probar son para ejecutarlos yo mismo y ver si ofrecen una buena ganancia en términos de coste/beneficio en este equipo o no. Así que aquí no hay cuantizados q8 con contexto de 200k :) …

GPU/CPU es una carga, medida por nvitop.

Cuando llama.cpp configura automáticamente las capas para descargarlas a la GPU, intenta mantener 1GB libre. Especificamos manualmente este parámetro a través del parámetro de línea de comandos -ngl, pero no estoy haciendo un ajuste fino aquí, solo necesito entender que si hay una caída significativa de rendimiento al aumentar el tamaño de la ventana de contexto de 32k a 64k, podemos intentar aumentar la velocidad en 64k ajustando el número de capas descargadas.

Hardware de prueba y configuración de llama.cpp

Probé la velocidad de los LLMs en un PC con esta configuración:

  • CPU i-14700
  • RAM 64GB 6000Hz (2x32GB)
  • GPU RTX-4080
  • Ubuntu con controladores NVidia
  • llama.cpp/llama-cli, sin capas descargadas especificadas
  • VRAM utilizada inicialmente, antes de iniciar llama-cli: 300MB

Ejecuciones adicionales en contexto de 128K (Qwen3.5 27B y 122B)

Modelo 128K Carga 128K: T/s
Qwen3.5-27B-UD-IQ3_XXS 16/625 9.6
Qwen3.5-122B-A10B-UD-IQ3_XXS 27/496 19.2

Conclusiones para configuraciones con 16 GB VRAM

  • Mi favorito actual Qwen3.5-27B-UD-IQ3_XXS se ve bien en su punto óptimo de 50k de contexto (obtengo aprox 36t/s).
  • Qwen3.5-122B-A10B-UD-IQ3_XXS supera en rendimiento al Qwen3.5 27B en contextos superiores a 64K.
  • Puedo impulsar Qwen3.5-35B-A3B-UD-IQ3_S para manejar contexto de 100k tokens, y cabe en la VRAM, por lo que no hay caída de rendimiento.
  • No usaré gemma-4-31B en 16GB VRAM, pero gemma-4-26B podría ser medianamente bueno…, hay que probarlo.
  • Necesito probar lo bien que funcionan Nemotron cascade 2 y GLM-4.7 Flash REAP 23B. ¿Serán mejores que Qwen3.5-35B q3? Lo dudo, pero aun así, probaré para confirmar la sospecha.