Calculadora de VRAM para LLM locales
Un modelo de 7B a 4 bits necesita unos 3,3 GiB para los pesos, y uno tipo Llama 3.1 8B suma cerca de 1 GiB de caché KV por cada 8.192 tokens de contexto.
Cómo se usa
- Elige un modelo predefinido para rellenar parámetros, capas, cabezas KV y dimensión de cabeza, o elige Personalizado y escribe los valores del config.json del modelo.
- Indica los bits de cuantización de los pesos (4 para Q4, 16 para FP16) y la precisión de la caché KV.
- Escribe la longitud de contexto en tokens y el tamaño de lote, es decir, cuántas secuencias se procesan a la vez.
- Lee el total y el desglose en pesos, caché KV y sobrecarga. La tabla indica en qué tamaños de GPU habituales cabe.
Cómo se calcula
Memoria de los pesos = parámetros × bits ÷ 8 bytes. Un modelo de 7 mil millones de parámetros a 4 bits ocupa 7.000.000.000 × 0,5 = 3,5 GB, o sea 3,26 GiB. A 16 bits son 14 GB, lo que coincide con la regla de 2 GB por cada mil millones de parámetros en bfloat16 de la guía de Hugging Face "Optimizing LLMs for Speed and Memory".
Caché KV = 2 × capas × cabezas KV × dimensión de cabeza × longitud de contexto × tamaño de lote × bytes por valor. El 2 es por claves y valores. Hugging Face da la forma por token, 2 × 2 × capas × cabezas KV × dimensión de cabeza para valores de 16 bits, en la entrada de blog "Unlocking Longer Generation with Key-Value Cache Quantization".
La sobrecarga se introduce como porcentaje de pesos más caché KV. Representa el contexto CUDA, los búferes de activación y la fragmentación de memoria. El 10 % por defecto es una suposición, no un valor medido.
Todos los resultados están en GiB (1 GiB = 1.073.741.824 bytes). Los fabricantes de GPU escriben "24 GB" para una tarjeta de 24 GiB, así que la tabla compara el total directamente con 8, 12, 16, 24, 48 y 80. Es una estimación. El consumo real cambia según el framework (llama.cpp, vLLM, Ollama, Transformers), los kernels y cómo se reserva la caché.
Qué llena la VRAM
Dos cosas dominan. Los pesos son fijos una vez elegidos el modelo y la cuantización. La caché KV crece con cada token del contexto y con cada secuencia del lote, así que con contextos largos o muchos usuarios en paralelo un modelo que "cabía" deja de caber de golpe.
Los modelos con atención de consulta agrupada (GQA) tienen menos cabezas KV que cabezas de atención, lo que reduce la caché varias veces. Por eso el campo de cabezas KV importa más que el número de cabezas de atención. Consulta num_key_value_heads en el config.json del modelo.
Tamaño de los pesos por mil millones de parámetros
| Bits por peso | GiB por 1B de parámetros | Ejemplo: modelo de 8B |
|---|---|---|
| 16 (FP16 / BF16) | 1,86 | 14,90 GiB |
| 8 (INT8 / Q8) | 0,93 | 7,45 GiB |
| 6 (Q6) | 0,70 | 5,59 GiB |
| 5 (Q5) | 0,58 | 4,66 GiB |
| 4 (Q4) | 0,47 | 3,73 GiB |
| 3 (Q3) | 0,35 | 2,79 GiB |
| 2 (Q2) | 0,23 | 1,86 GiB |
Origen de los modelos predefinidos
- config.json de cada repositorio: huggingface.co/Qwen/Qwen2.5-{7B,14B,32B,72B}, huggingface.co/Qwen/Qwen3-{8B,32B}, huggingface.co/mistralai/Mistral-7B-v0.3, huggingface.co/mistralai/Mistral-Nemo-Base-2407, huggingface.co/microsoft/phi-4.
- Llama 3.1 8B y 70B: los config.json de Meta requieren aprobación en Hugging Face, así que los valores salen de la Tabla 3 del artículo de Meta "The Llama 3 Herd of Models" (arXiv 2407.21783). Gemma 2 9B y 27B: Tabla 1 del informe de Google "Gemma 2" (arXiv 2408.00118).
- El número de parámetros es el total de safetensors que muestra la API de Hugging Face para cada repositorio. Si el config.json no tiene head_dim, se usa hidden_size ÷ cabezas de atención.
Preguntas frecuentes
¿Cuánta VRAM necesita un modelo de 7B a 4 bits?
Unos 3,3 GiB solo para los pesos. Con un contexto de 8.192 tokens en un modelo tipo Llama 3.1 8B, la caché KV suma cerca de 1 GiB, así que cuenta con unos 5 GiB con la sobrecarga. Una tarjeta de 8 GB lo ejecuta y sobra margen para más contexto.
¿Puede una tarjeta de 24 GB ejecutar un modelo de 32B?
A 4 bits, sí. Qwen2.5 32B tiene unos 32.760 millones de parámetros, así que los pesos ocupan unos 15,3 GiB. Con 8.192 tokens de contexto la caché KV es de 2 GiB, y con un 10 % de sobrecarga el total ronda los 19 GiB.
¿Por qué mi consumo real difiere de la estimación?
Los frameworks tienen distinta sobrecarga. vLLM reserva de antemano la mayor parte de la GPU para su caché KV y expulsa peticiones cuando se agota ese espacio, llama.cpp reserva la caché del contexto completo desde el inicio, y las K-quants de GGUF guardan valores de escala extra, por lo que sus bits efectivos son más altos que el número nominal. Sube los bits o la sobrecarga si ves errores de memoria.
¿Sirve para modelos de mezcla de expertos?
Los pesos tienen que caber igualmente en memoria, así que introduce el total de parámetros, no los activos. La caché KV depende solo de las capas de atención, así que usa las capas y las cabezas KV del config. Los modelos predefinidos aquí son densos.
Gemma 2 usa ventana deslizante. ¿La estimación es menor?
Gemma 2 alterna capas locales con ventana de 4.096 tokens y capas globales. La herramienta cuenta el contexto completo en todas las capas, así que da un máximo para Gemma 2 cuando el contexto supera la ventana.