La comunidad de IA local lleva semanas comentando el hito: investigadores de Nvidia han conseguido meter un modelo de 74.000 millones de parámetros (74B) en una GPU con 24 GB de VRAM, como la RTX 3090 o 4090. A primera vista, la cifra rompe las calculadoras habituales: en precisión FP16 (16 bits), un 74B requiere unos 148 GB solo para pesos. Incluso en INT4 (4 bits), la línea base teórica ronda los 37 GB. ¿Cómo lo han hecho?

La respuesta corta es cuantización extrema (probablemente 3 bits o 2 bits con técnicas como AWQ o GPTQ) combinada con offloading parcial a RAM de sistema. Pero la noticia real, y el titular de Towards AI acierta al señalarlo, no es el modelo en sí. Es el número que casi ninguna guía de "cómo correr LLMs en local" menciona: el consumo de memoria de la caché KV (Key-Value Cache).

El elefante en la VRAM: La caché de atención Cuando generamos texto, el mecanismo de atención necesita almacenar las claves y valores de todos los tokens previos para procesar el siguiente. Esta caché crece linealmente con la longitud del contexto (sequence length), el número de capas, las cabezas de atención y el tamaño del batch. Para un 74B (aprox. 80 capas, 64 cabezas, head_dim 128), la fórmula es brutal: 2 * capas * cabezas * head_dim * contexto * bytes_por_parámetro * batch.

En FP16 (o BF16), un contexto de 4.096 tokens en batch 1 consume ~16 GB solo de caché KV. Si el modelo cuantizado a 3 bits pesa unos 20-22 GB, la suma supera los 36-38 GB. No cabe en 24 GB. Por eso tu modelo local "olvida" a los dos pasos: si no configuras bien el context window o usas técnicas de compresión de caché, la VRAM peta y el proceso muere o hace offloading a CPU a velocidad de tortuga.

La solución invisible: FlashAttention, PagedAttention y Quantización KV Lo que Nvidia (y frameworks como TensorRT-LLM, vLLM o la última versión de llama.cpp) están implementando no es magia, es ingeniería de sistemas agresiva:

  1. Quantización de la Caché KV (KV Cache Quantization): Almacenar claves y valores en INT8 o incluso INT4/FP8. Ahorra 2x-4x de VRAM en la caché con pérdida de calidad mínima (a diferencia de cuantizar pesos).
  2. PagedAttention / Paged KV Cache: Gestión de memoria tipo SO (paginación) para la caché. Elimina la fragmentación y permite batching continuo sin reservar bloques contiguos máximos.
  3. FlashAttention-2/3: Kernel fusionado que evita escribir/leer la matriz de atención completa en HBM, reduciendo drásticamente el ancho de banda y la memoria intermedia.

¿Por qué importa a un desarrollador hoy? Porque la diferencia entre un chatbot juguete y un agente útil (RAG, análisis de código, long-context) es exactamente esa gestión de memoria. Si estás montando un pipeline RAG local con llama.cpp u ollama y te quejas de que el modelo "alucina" o pierde el hilo tras 3 interacciones, revisa tus flags: --ctx-size, --cache-type-k q8_0 (o fp8), --mlock.

El paper de Nvidia (probablemente referido a optimizaciones en TensorRT-LLM para arquitectura Hopper/Blackwell o backports a Ada Lovelace) demuestra que el cuello de botella ya no son los pesos del modelo, sino la memoria de activación dinámica.

Conclusión: Deja de mirar solo los parámetros La próxima vez que veas un benchmark de "modelo X cabe en GPU Y", pregunta: ¿A qué longitud de contexto? ¿Con qué cuantización de caché KV? ¿Con qué throughput? Un 74B en 24 GB a 1 token/segundo con contexto 1k es un adorno de escritorio. El mismo modelo a 30 tok/s con contexto 32k gracias a KV-cache INT4 + PagedAttention es una herramienta de producción. La carrera de 2024-2025 no es por parámetros, es por eficiencia de memoria en inferencia larga.