Cuánta memoria necesita un LLM local
Antes de descargar un modelo para ejecutarlo en local, hay que saber si cabe en memoria. La estimación suma tres términos y el resultado se compara con lo que la máquina puede ofrecerle realmente al modelo: need = weights + KV cache + overhead fits if need Los números de abajo siguen la estimación

Antes de descargar un modelo para ejecutarlo en local, hay que saber si cabe en memoria. La estimación suma tres términos y el resultado se compara con lo que la máquina puede ofrecerle realmente al modelo:
need = weights + KV cache + overhead fits if need <= 0.8 × usable memory Enter fullscreen mode Exit fullscreen mode Los números de abajo siguen la estimación que usa el explorador de modelos locales de la aplicación de escritorio osFoundry, contrastada con lo que muestra la app en un MacBook M3 de 16 GB.
Los pesos son el número de parámetros por los bytes que ocupa cada peso, y esos bytes dependen de la cuantización:
Q4_K_M es 0.56 y no 0.5 porque las K-quants guardan una escala por cada bloque pequeño de pesos, lo que sale a unos 4.5 bits por peso.
Para un modelo de 14B en Q4_K_M: 14 × 10⁹ × 0.56 = 7.84 × 10⁹ bytes, unos 7.3 GiB.
Si no reconoces el nombre de la cuantización, asume FP16. Es la opción pesimista, así que no darás por bueno algo que luego no cabe.
Durante la generación, el modelo guarda las claves y los valores de cada token del contexto. El tamaño es:
2 × layers × kv_heads × head_dim × context_tokens × bytes_per_element Enter fullscreen mode Exit fullscreen mode Qwen2.5 14B tiene 48 capas, 8 cabezas KV (usa grouped-query attention) y una dimensión de cabeza de 128. Con una caché en FP16:
La caché crece de forma lineal con la longitud del contexto, así que un modelo que cabe de sobra con 4K puede dejar de caber con 32K. Una estimación que no indica la longitud de contexto sirve de poco; la de la captura asume 4K.
llama.cpp también necesita buffers de cómputo y espacio temporal. Un margen aproximado es el 10 % de los pesos más unos 200 MB. Para el modelo de 14B son unos 0.9 GB.
Si sumas pesos, caché y overhead, un modelo de 14B en Q4_K_M queda entre 8 y 9 GB. La app muestra 8.4 GB.
En el Mac de 16 GB, eso da: Q4_K_M 8.4 GB (70 %, cabe), Q5_K_M 10.4 GB (87 %, justo), Q6_K 12.3 GB y Q8_0 14.9 GB (se pasan).
Aplicada a varios modelos en Q4_K_M, el corte en esta máquina cae entre 20B (11.9 GB, justo) y 27B (15.9 GB, demasiado grande).
Para generar cada token hay que leer todos los pesos de la memoria una vez, así que el límite superior de velocidad de generación es el ancho de banda de memoria dividido entre el tamaño del modelo. Un M3 base tiene unos 100 GB/s, de modo que un modelo de 8.4 GB llega como máximo a unos 12 tokens por segundo, y uno de 8B de 4.9 GB a unos 20. Los valores reales quedan por debajo, pero la proporción entre modelos se mantiene bastante bien.
Así, la estimación de tamaño responde dos preguntas a la vez: si el modelo llega a cargarse y, de hacerlo, más o menos a qué velocidad escribirá.