Arquitectura y Análisis de Memoria
¿Qué es el KV Cache? Cálculo, Fórmulas y Tamaño de VRAM
Comprende cómo el almacenamiento en caché de Claves y Valores acelera la generación autorregresiva, por qué satura la VRAM en contextos largos y cómo reducir su consumo entre un 50% y un 75%.
Calculadora Interactiva de Memoria KV Cache
Ajusta la longitud de contexto, el tamaño de lote y la arquitectura de atención para observar el consumo exacto de VRAM en tiempo real.
32 capas · 32 cabezas query · 8 cabezas KV (Grupo GQA 4:1)
Los servidores multiusuario (como vLLM) multiplican la caché KV según las peticiones activas en paralelo.
Fórmula: 2 (claves + valores) × 32 capas × 8 cabezas KV × 128 dimensión de cabeza × 32,768 tokens × 2 bytes
Como este modelo usa GQA (relación 8:1), esta caché KV es 4 veces menor que con el MHA tradicional (que habría necesitado 16.0 GiB).
1. Por Qué la Generación Autorregresiva Requiere KV Cache
Durante la inferencia en transformers, las palabras se predicen de forma secuencial, token por token. Para predecir el token N, el modelo debe prestar atención a los N-1 tokens previos. Sin un caché KV, las matrices de claves y valores tendrían que recalcularse por completo en cada paso, derivando en un coste computacional cuadrático O(N²).
Al guardar los vectores de Clave (Key) y Valor (Value) calculados en VRAM, la complejidad se mantiene lineal O(N) por paso. Sin embargo, esto intercambia cómputo por memoria: cada nuevo token añadido incrementa el peso del caché en VRAM.
2. La Fórmula Matemática Exacta
El factor 2 corresponde a la separación entre Claves y Valores. n_capas es la profundidad de capas, n_cabezas_kv el número de cabezas KV, dim_cabeza la dimensión interna y long_secuencia la longitud del contexto activo.
Ejemplo: Llama 3 8B con GQA (8 cabezas KV, dimensión 128, 32 capas) a 16k tokens en precisión FP16 (2 bytes): 2 x 32 x 8 x 128 x 16,384 x 1 x 2 = 2.15 GB de VRAM para una sola conversación.
3. Evolución de Arquitecturas: MHA vs GQA vs MLA
4. Cómo Cuantizar el KV Cache (Ahorro del 50% al 75%)
Por defecto, los motores de inferencia guardan el caché en precisión FP16 (2 bytes por valor). Al cuantizar el caché a FP8 (1 byte) o INT4 (0.5 bytes), se reduce el espacio consumido en un 50% o 75% sin alterar los pesos del modelo.
En vLLM, añade el parámetro --kv-cache-dtype fp8. En llama.cpp, utiliza -ctk q8_0 -ctv q8_0 o -ctk q4_0 -ctv q4_0 para liberar gigabytes de VRAM en contextos de más de 32k tokens.
Preguntas Frecuentes
¿Qué ocurre cuando el KV Cache agota la VRAM libre?
¿El tamaño del KV Cache depende del prompt o del texto generado?
¿Es seguro cuantizar el KV Cache a FP8 en modelos de razonamiento como DeepSeek-R1?
¿Cómo escala el KV Cache con múltiples usuarios concurrentes?
¿Por qué es tan eficiente la arquitectura MLA de DeepSeek para contextos largos?
Calcula el consumo exacto de tu KV Cache
Utiliza nuestra Calculadora VRAM para proyectar consumos con diferentes contextos y tamaños de lote en cientos de modelos.
Conocimiento y análisis profundos
Centro de Conocimiento sobre VRAM e IA Local
Guías técnicas exhaustivas, análisis de arquitecturas y manuales de hardware para configurar y ejecutar modelos de lenguaje locales con total precisión.