KV Cache: la memoria que hace posible conversar con un LLM — y por qué es el cuello de botella silencioso de la IA

Cada token que genera un LLM requiere recomputar toda la atención sobre todos los tokens anteriores. El KV cache es la técnica que evita ese desperdicio masivo de compute. Te explicamos cómo funciona por dentro y por qué determina si un modelo es viable en producción.

Cuando le preguntas a ChatGPT una frase y te responde con un párrafo entero, parece mágico. Lo que realmente ocurre por dentro es una operación que se repite token a token: el modelo recalcula qué importancia tiene cada palabra previa respecto a la siguiente. Eso es el mecanismo de atención, y sin una optimización llamada KV cache, cada token nuevo costaría tanto como procesar toda la conversación desde cero.

La 'K' y la 'V' de KV cache significan Key y Value: las dos matrices que el mecanismo de atención proyecta a partir de cada token de entrada. Cuando un LLM genera el token 1, calcula sus vectores K y V. Cuando genera el token 2, sin cache tendría que recalcular K y V del token 1 Y del token 2. Con KV cache, el modelo simplemente recupera los K y V previamente calculados y solo computa el token nuevo. El resultado es un aumento de velocidad dramático — típicamente entre 3x y 10x dependiendo de la longitud del contexto.

El precio de esa velocidad es memoria. Cada capa del Transformer guarda sus propios K y V. En un modelo de 70B parámetros corriendo en precisión FP16, cada token ocupa aproximadamente 1.4 MB en el KV cache. En una conversación de 4.000 tokens, eso son 5.6 GB por usuario. Si tu servidor atiende 100 usuarios simultáneos, necesitas 560 GB solo para los caches. Eso explica por qué el hardware de inferencia de IA se mide más en ancho de banda de memoria que en FLOPS.

Esta arquitectura tiene implicaciones directas para la seguridad. El KV cache de un usuario anterior puede filtrarse si el aislamiento entre sesiones no está bien implementado a nivel de hardware. En 2024 ya se documentaron ataques de canal lateral en implementaciones de Hugging Face Transformers que extraían contenido de conversaciones anteriores a través del cache compartido. Cuando despliegas un LLM en producción, el aislamiento del KV cache entre usuarios no es opcional — es un requisito de seguridad.

Hay una segunda fase en la inferencia que a menudo se ignora: el prefill. Antes de que el modelo genere el primer token de respuesta, necesita procesar toda la entrada del usuario — tu mensaje, el historial de la conversación, las instrucciones del system prompt. Ese prefill es secuencial y Memory-bound, lo que significa que la velocidad depende de cuánto tiempo tarda en leer datos de la VRAM, no de cuánto puede calcular. Para prompts largos, el tiempo de prefill puede superar al de generación. Esto es especialmente relevante en agentes de IA que manipulan grandes contextos, documentos de miles de tokens o bases de código enteras.

Los proveedores de infraestructura han respondido con arquitecturas específicas: NVIDIA H200 con 4.8 TB/s de ancho de banda de memoria HBM3e; el chip Trainium2 de AWS con una arquitectura de memoria que prioriza el acceso secuencial típico del KV cache; y las GPU Apple Silicon en Mac Studio que, gracias a la unificación de memoria CPU-GPU, pueden mantener caches activos sin copias intermedias. Ninguna de estas opciones es accidental: todas están diseñadas alrededor del mismo cuello de botella.

La próxima frontera son los caches de contexto distribuido. En lugar de mantener todo el KV cache en una sola GPU, sistemas como los de Grok 4.6 o Gemini Enterprise distribuyen el estado de atención entre clusters de máquinas. El problema es que la comunicación entre nodos introduce latencia en cada paso de generación. La solución que están explorando equipos como el de vLLM y TensorRT-LLM se llama PagedAttention: gestionan el KV cache como si fuera memoria virtual, asignando páginas de cache bajo demanda y compartiendo las páginas readonly entre solicitudes que tienen prefijos comunes. Esto maximiza la utilización de la VRAM y reduce el coste por token en producción.

Entender el KV cache no es solo un ejercicio académico. Si estás evaluandoinfraestructura para desplegar modelos, el ancho de banda de memoria y la capacidad de VRAM importan más que el número de cores CUDA. Si estás auditando un servicio de IA, verificar el aislamiento de cache entre sesiones debería estar en tu checklist. Y si estás diseñando un agente que trabaja con contextos largos, saber que cada token tiene un coste de memoria fijo te ayuda a estimar budgets de inferencia realistas. El cuello de botella nunca fue el modelo. Fue cómo le das memoria.