El asesino silencioso de tu VRAM en LLMs locales ⚠️
Cargas un modelo de 7B parámetros. Cabe perfectamente en tu GPU. Las primeras respuestas son rápidas, todo parece ir bien. Diez mensajes después: Out-of-Memory (OOM) y proceso muerto. El problema es que la mayoría de l
Artículo
Una lectura sobre tecnología y sistemas digitales, escrita para ir al punto y dejar claras las ideas principales.
Tema principal
inteligencia artificial aplicada
Fuente
dev.to
Puntos clave
- Cargas un modelo de 7B parámetros. Cabe perfectamente en tu GPU. Las primeras respuestas son rápidas, todo parece ir bien.
- Diez mensajes después: Out-of-Memory (OOM) y proceso muerto.
- El problema es que la mayoría de los ingenieros solo calculan el espacio de los pesos del modelo (costo estático) y olvidan el costo dinámico: el KV Cache.
- El KV Cache es el mecanismo que evita que el modelo recompute cada token anterior en cada paso, transformando una operación O(n²) en algo manejable. El precio a pagar es memoria que crece linealmente con la longitud del
Bloque 1
Cargas un modelo de 7B parámetros. Cabe perfectamente en tu GPU. Las primeras respuestas son rápidas, todo parece ir bien.
Diez mensajes después: Out-of-Memory (OOM) y proceso muerto.
Bloque 2
El problema es que la mayoría de los ingenieros solo calculan el espacio de los pesos del modelo (costo estático) y olvidan el costo dinámico: el KV Cache.
El KV Cache es el mecanismo que evita que el modelo recompute cada token anterior en cada paso, transformando una operación O(n²) en algo manejable. El precio a pagar es memoria que crece linealmente con la longitud del contexto.
Bloque 3
Aquí está el desglose real de tu presupuesto de VRAM:
• Pesos del Modelo: Costo fijo. Se reduce con cuantización (ej. de FP16 a Q4KM), pero no cambia durante la inferencia. • KV Cache: El culpable. Almacena tensores de claves y valores por cada capa y cabeza. A mayor contexto, mayor consumo (puede superar el peso del modelo). • Framework Overhead: El costo oculto. Entre 0.5GB y 2GB que consumen CUDA y el runtime (vLLM, llama.cpp).
Bloque 4
La conclusión es clara: planificar el consumo de memoria basado en el arranque es un error arquitectónico. Debes diseñar para el pico de contexto esperado.
¿Ustedes cómo están calculando el presupuesto de VRAM para sus despliegues de modelos locales?