IA local y open source · Septiembre 2026

Cuantización sin mitos: qué ganas, qué pierdes y qué medir

La cuantización es lo que permite correr un modelo de 27B en una sola tarjeta gráfica y uno de 120B en una sola GPU de servidor. No es gratis, y su costo casi nunca aparece en los promedios de los benchmarks. Esto dicen las mediciones a septiembre de 2026 y así decidimos.

4,58 GiB Llama 3.1 8B en Q4_K_M (14,96 GiB en F16)99 % del puntaje BF16, como mínimo, conservado en FP8 (Llama 3.1)-16,6 % en francés según evaluadores humanos (103B, 4 bits)
En resumen

La cuantización guarda los pesos de un modelo con menos bits (8, 5, 4, a veces 2) en lugar de 16. La memoria baja casi en proporción y, como la generación está limitada por el ancho de banda de memoria, la velocidad sube: Llama 3.1 8B pasa de 14,96 GiB y 29 tokens por segundo en F16 a 4,58 GiB y 72 en Q4_K_M.

El costo en calidad depende del método, del tamaño del modelo y de la tarea: 8 bits es prácticamente sin pérdida, de 4 a 6 bits un buen trato y menos de 4 bits un riesgo, sobre todo en modelos pequeños, agentes y textos que no están en inglés. Nuestra regla: el formato que tu hardware acelera, versiones nativas o QAT cuando existan y validación en español y francés.

Qué hace la cuantización, con un ejemplo

Un modelo son miles de millones de pesos; en BF16 cada uno ocupa 16 bits, es decir 2 bytes. Cuantizar es guardar cada peso con menos bits (con 4 bits, uno de 16 valores posibles) más una escala compartida por cada bloque pequeño de pesos. Los formatos difieren en el bloque, las escalas y las capas que conservan más bits.

memoria de pesos (GB) ≈ parámetros (miles de millones) × bits por peso ÷ 8
 8B en BF16:     8 × 16 ÷ 8  = 16 GB
 8B en Q4_K_M:   8 × 4,9 ÷ 8 ≈ 4,9 GB
70B en Q4_K_M:  70 × 4,9 ÷ 8 ≈ 43 GB

Cuadra con llama.cpp: Q4_K_M promedia 4,89 bits por peso y Llama 3.1 70B queda en 43,1 GB. Con un solo usuario, leer los pesos de la memoria es el cuello de botella, así que la velocidad sigue al tamaño: de 29 a 72 tokens por segundo entre F16 y Q4_K_M. A la fórmula le faltan la caché KV y la calidad.

El mapa de formatos: qué corre dónde

Tu motor y tu hardware eligen el formato antes que cualquier clasificación.

Formatos en uso en septiembre de 2026; bits por peso en promedio de archivo completo.
FormatoBits por pesoDónde correPara qué
GGUF k-quants (Q4_K_M, Q5_K_M, Q6_K, Q8_0)3 a 8,5llama.cpp, Ollama, LM Studio en CPU, Apple Silicon, NVIDIA, AMDPortátiles, estaciones de trabajo
GGUF i-quants con imatrix (IQ1_S a IQ4_XS)2 a 4,5Los mismos motoresModelos grandes en poca memoria
GPTQ, AWQ (W4A16)4 más escalasvLLM, SGLang, TransformersServidores GPU, pocos usuarios
EXL3FraccionarioExLlamaV3, TabbyAPI (NVIDIA)Calidad por bit en una GPU de consumo
bitsandbytes (int8, NF4)8 o 4Transformers, PEFTAjuste fino con QLoRA
FP8 (W8A8)8vLLM, SGLang en Ada, Hopper, Blackwell, AMD MI300XProducción multiusuario
NVFP4, MXFP44,5 y 4,25Blackwell; AMD MI355X (MXFP4); llama.cpp lee ambosServidores nuevos, modelos FP4 nativos

Los nombres son recetas: Q4_K_M es una mezcla "medium" de 4 bits que da 6 bits a algunos tensores sensibles, y los i-quants con matriz de importancia (imatrix) usan texto de calibración para decidir dónde duele más el redondeo. En GPU, los archivados AutoGPTQ y AutoAWQ dieron paso a GPTQModel y a llm-compressor de vLLM (v7.5.0 y v0.14.0, septiembre de 2026); ExLlamaV3 (v1.5.2) reemplazó a ExLlamaV2, aunque su servidor, TabbyAPI, se define como un proyecto de hobby.

Cuánta calidad se pierde: la evidencia

La perplejidad dice poco; la divergencia frente al original y las respuestas que cambian dicen más.

Tabla de llama.cpp para LLaMA 3 8B sobre Wikitext. La KLD mide cuánto se aleja la distribución del siguiente token respecto a FP16 (0 = idéntica).
TipoTamañoKLDLectura
Q8_07,96 GiB0,0014Prácticamente sin pérdida
Q6_K6,14 GiB0,0055Casi sin pérdida
Q5_K_M5,33 GiB0,0108Casi sin pérdida
Q4_K_M (imatrix)4,58 GiB0,0282El equilibrio habitual
Q3_K_M (imatrix)3,74 GiB0,0844Pérdida visible
Q2_K2,96 GiB0,4451Pérdida fuerte
IQ1_S (imatrix)1,88 GiB2,2546Inservible en un modelo pequeño

Los promedios esconden el daño: en Accuracy is Not All You Need (Microsoft Research, 2024), esquemas que movían la precisión entre 0 % y 2 % cambiaban hasta el 13,6 % de las respuestas. El tamaño también pesa: en el estudio de ACL 2025 Give Me BF16 or Give Me Death?, los pesos en 4 bits conservaban el 99,5 % del puntaje de un modelo de razonamiento de 32B, pero el 93,5 % en uno de 1,5B.

Para nosotros, el idioma es lo que más pesa. El estudio de Cohere sobre modelos multilingües cuantizados (Findings of EMNLP 2024) encontró que, en un modelo de 103B con 4 bits, las métricas automáticas mostraban una caída del 0,3 % en francés y los evaluadores humanos, del 16,6 %.

Por debajo de 4 bits la curva se quiebra, y Unsloth desaconseja 1 bit para agentes: entran en bucle y rompen las llamadas a herramientas. A igual memoria, un modelo más grande en 4 o 5 bits suele ganar: en las pruebas de Unsloth, Gemma 3 27B en Q4_K_M (15,4 GB) marca 71,2 % en MMLU, frente a 67,2 % de Gemma 3 12B en BF16 (unos 24 GB).

FP8, FP4 y los modelos que ya vienen cuantizados

En las GPU recientes el formato está en el silicio, y cada vez más modelos se entrenan para él.

FP8 es la opción segura en servidores: el mismo estudio de ACL 2025 (más de 500.000 evaluaciones sobre Llama 3.1) lo encontró prácticamente sin pérdida en todos los tamaños, con INT8 perdiendo entre 1 % y 3 %. vLLM habla de la mitad de memoria y hasta 1,6 veces más rendimiento, pero calcular en FP8 exige Ada, Hopper o Blackwell; una A100 solo corre checkpoints FP8 como pesos de 8 bits.

MXFP4 y NVFP4 son formatos de coma flotante de 4 bits: MXFP4 comparte una escala potencia de dos entre 32 valores (4,25 bits por peso) y NVFP4, de NVIDIA, una escala FP8 más fina cada 16 (4,5 bits). NVIDIA reporta una degradación de 1 % o menos al pasar DeepSeek-R1-0528 de FP8 a NVFP4. Solo Blackwell acelera NVFP4; MXFP4 también se acelera en la MI355X de AMD.

Las versiones nativas cambian las reglas. OpenAI publicó gpt-oss (5 de agosto de 2025) con los pesos de expertos en MXFP4, así que el 120b cabe en una GPU de 80 GB, y sus puntajes publicados son los del modelo cuantizado. Kimi K2 Thinking usa INT4 nativo, DeepSeek-V4 (abril de 2026) trae expertos en FP4 y la versión de Gemma 4 con entrenamiento consciente de la cuantización (QAT, 5 de junio de 2026) lleva el 31B de 69,9 GB a 17,5 GB.

Regla práctica

Si el fabricante publica un checkpoint nativo o QAT de pocos bits, úsalo tal cual. Recuantizarlo suma error: convertir a Q4_K los expertos MXFP4 de DeepSeek-V4-Flash casi triplicó la KLD en las mediciones de Unsloth (0,029 frente a 0,010).

La caché KV: la memoria que nadie presupuesta

Con contextos largos, la memoria de trabajo de la conversación puede pesar más que el modelo.

Cada token del contexto guarda claves y valores en cada capa de atención; el tamaño sale del config.json del modelo:

KV por token = 2 × capas × cabezas KV × dimensión de cabeza × bytes por valor
Qwen3-32B, 16 bits: 2 × 64 × 8 × 128 × 2 B = 256 KiB
32.768 tokens ≈ 8 GiB, 131.072 tokens ≈ 32 GiB (por petición)

La arquitectura cambia el resultado: gpt-oss-120b, con capas de ventana deslizante, necesita 36 KiB por token, y Qwen3.8-27B, con capas de atención lineal, 64 KiB. Cada petición en paralelo lleva su propia caché, así que la memoria crece con los slots en paralelo multiplicados por el contexto, como advierte Ollama.

Cuantizar la caché es la siguiente palanca: q8_0 o q4_0 en Ollama (OLLAMA_KV_CACHE_TYPE) y llama-server (--cache-type-k, --cache-type-v), FP8 en vLLM (--kv-cache-dtype). Un estudio de COLM 2025 halló sin pérdida una caché de 4 bits en modelos de 14B y 32B, pero una de 3 bits costaba más del 5 % en los de 1,5B y 7B, y recomienda 8 bits; Unsloth vio degradarse las respuestas con 4 bits.

Nuestra regla

Calcula la caché con tu contexto p95 real por las peticiones que esperas al mismo tiempo, y empieza con q8_0 o FP8 si falta memoria. Usa q4_0 solo después de probar tus documentos reales más largos.

Qué formato para qué hardware

Nuestros puntos de partida a septiembre de 2026; decide tu propia evaluación.

Recomendación de Slash AI Lab. Velocidades del DGX Spark: pruebas de llama.cpp (febrero de 2026) y LMSYS (octubre de 2025).
HardwareEmpieza conEvita
Portátil o PC: GPU de 8 a 16 GB o 16 a 32 GB de memoria unificada4B a 14B en Q4_K_M o QAT; Q5_K_M o Q6_K si cabeIQ2 e IQ1 en modelos pequeños
Una GPU de 24 a 32 GB (RTX 3090, RTX 5090)27B a 32B en Q4_K_M o Q5_K_M, o EXL3 de 4 a 5 bitsUn 70B comprimido a 2 bits
Mac con 64 a 512 GB de memoria unificadaGGUF o MLX en 4 bits; MXFP4 nativo como gpt-ossEsperar el rendimiento de un servidor GPU
DGX Spark (128 GB a 273 GB/s)MoE nativos en MXFP4 o NVFP4: gpt-oss-120b a unos 61 tokens/s70B densos: 2,7 tokens/s en FP8
Servidor Ampere (A100), pocos usuariosW4A16 (AWQ, GPTQ); INT8 W8A8 si crece la concurrenciaContar con cálculo en FP8
Servidor Ada o Hopper (H100, H200), muchos usuariosFP8 W8A8 más caché KV en FP8Pesos en 4 bits sin probar bajo carga alta
Servidor Blackwell (B200, B300, RTX PRO 6000)NVFP4 o FP8; los checkpoints FP4 del fabricanteRecuantizar FP4 nativo

Las filas de servidor siguen el estudio de ACL 2025: 4 bits rinde más cuando pocos usuarios esperan y 8 bits gana con batching continuo. En Mac y DGX Spark manda el ancho de banda, así que los modelos de mezcla de expertos (MoE) con pocos parámetros activos corren mucho más rápido. Más en hardware para IA local en 2026 y del portátil al servidor.

Cómo validar un cuantizado con tus propias tareas

Medio día de pruebas evita semanas de fallas silenciosas.

  1. Fija un set de evaluación con trabajo real y respuestas esperadas. En Slash usamos 30 prompts fijos por cliente en español, inglés y francés (método en nuestra guía de evaluaciones de LLM).
  2. Define una referencia: el mismo modelo en BF16 o FP8, o la versión nativa, con decodificación greedy.
  3. Mide la KLD y las respuestas que cambian sobre tus textos, por tarea y por idioma, no sobre el texto de calibración: Unsloth advierte que eso infla la calidad.
  4. Lee el español y el francés a mano: tildes, concordancia, registro (tú o usted, vous), saltos al inglés.
  5. Prueba las llamadas a herramientas y el JSON con la plantilla de chat de producción, validando cada salida contra su esquema.
  6. Prueba el contexto largo con la caché KV de producción, y registra hash, tipo de cuantizado, versión del motor y plantilla para repetir todo cuando algo cambie.

Cinco errores comunes

  • La plantilla de chat equivocada. Un GGUF trae su propia plantilla Jinja, que llama-server aplica por defecto. Si no corresponde al formato de entrenamiento, las respuestas se degradan sin error visible y las llamadas a herramientas fallan primero. Una plantilla también puede esconder instrucciones (Pillar Security, 2025): revísala como código.
  • Cuantizar de más los modelos pequeños. IQ1_S lleva la perplejidad de Llama 3 8B de 6,2 a 60,7. Por debajo de 8B, quédate en 4 bits o más.
  • Olvidar el contexto por defecto. Según Ollama, con menos de 24 GiB de VRAM usa 4K tokens: un documento largo no cabe hasta que lo subas.
  • Recuantizar lo ya cuantizado: pesos nativos MXFP4 o INT4, o un GGUF hecho desde un checkpoint cuantizado en vez del BF16. Y deja el proyector de visión (mmproj) en BF16 o Q8, como aconseja llama.cpp.
  • Confiar en el número de otro. Una perplejidad medida con otro texto y otro motor dice poco de tu caso. Para elegir primero el modelo, mira los modelos de pesos abiertos en 2026.

Lo esencial

  • La cuantización cambia bits por memoria y velocidad: Llama 3.1 8B pasa de 14,96 GiB en F16 a 4,58 GiB en Q4_K_M y genera unas 2,5 veces más rápido.
  • Q8_0 y FP8 son prácticamente sin pérdida; Q4_K_M es el punto de partida sensato; por debajo de 4 bits la calidad cae rápido.
  • Modelos pequeños, agentes, español y francés sufren más de lo que dicen los promedios: 16,6 % de pérdida en francés para evaluadores humanos, 0,3 % en métricas automáticas.
  • FP8 en Ada, Hopper y Blackwell, FP4 en Blackwell, GGUF en el resto; las versiones nativas y QAT se usan tal cual.
  • Presupuesta la caché KV y valida cada cuantizado con tus prompts, tu JSON y tus llamadas a herramientas.

Fuentes

  1. llama.cpp quantize tool: README (types, sizes, speeds) · ggml-org / llama.cpp, 2026-09
  2. llama.cpp perplexity tool: README and KLD scoreboards · ggml-org / llama.cpp, 2026-09
  3. "Give Me BF16 or Give Me Death"? Accuracy-Performance Trade-Offs in LLM Quantization · arXiv (ACL 2025), 2024-11-04
  4. Accuracy is Not All You Need · Microsoft Research (arXiv), 2024-07-12
  5. How Does Quantization Affect Multilingual LLMs? · Cohere (arXiv, Findings of EMNLP 2024), 2024-07-03
  6. Quantization Hurts Reasoning? An Empirical Study on Quantized Reasoning Models · arXiv (COLM 2025), 2025-04-07
  7. Introducing NVFP4 for Efficient and Accurate Low-Precision Inference · NVIDIA Technical Blog, 2025-06-24
  8. FP8 W8A8 quantization · vLLM documentation, 2026-09
  9. gpt-oss-120b model card · OpenAI (Hugging Face), 2025-08-05
  10. Quantization-aware training (QAT) checkpoints for Gemma 4 · Google, 2026-06-05
  11. Unsloth Dynamic GGUFs (Dynamic 2.0 and 3.0) · Unsloth documentation, 2026-09
  12. Ollama FAQ: K/V cache quantization and concurrency · Ollama documentation, 2026-09-26

Nota editorial: este análisis refleja la información pública disponible en la fecha de revisión. Modelos, precios y normas cambian rápido; cada dato de terceros enlaza a su fuente y nuestras opiniones se presentan como tales. ¿Ves un error? Escríbenos a contact@slash-digital.io.

Preguntas frecuentes

Las preguntas que escuchamos a menudo

¿Cuál es la mejor cuantización para Ollama o LM Studio?

Q4_K_M, la opción por defecto en la biblioteca de Ollama, es el equilibrio habitual. Si te sobra memoria, Q5_K_M y Q6_K son casi sin pérdida y Q8_0 prácticamente sin pérdida. Si el fabricante publica una versión QAT, como el Q4_0 de Gemma, empieza por esa.

¿La cuantización hace más rápido el modelo?

Para un solo usuario, sí: la generación está limitada por el ancho de banda de memoria, así que un archivo más pequeño genera más rápido (de 29 a 72 tokens por segundo entre F16 y Q4_K_M en el ejemplo de llama.cpp). En servidores con muchas peticiones simultáneas, los formatos de 8 bits como FP8 suelen ser más eficientes que los pesos en 4 bits.

¿Puedo correr un modelo de 70B en una GPU de 24 GB?

No con comodidad. En Q4_K_M un 70B necesita unos 43 GB solo para los pesos, así que tendrías que pasar capas a la memoria del sistema, lo que es lento, o bajar de 3 bits, lo que cuesta calidad. Un modelo de 27B a 32B en 4 o 5 bits suele ser mejor opción.

¿FP8 es mejor que AWQ o GPTQ en 4 bits?

Resuelven problemas distintos. FP8 es prácticamente sin pérdida y sirve para atender mucha concurrencia en Ada, Hopper o Blackwell. Los pesos en 4 bits comprimen unas 3,5 veces y sirven cuando manda la latencia y hay pocos usuarios, con una pérdida pequeña que debes medir.

¿La cuantización afecta más al español y al francés que al inglés?

Puede afectarlos más, y los benchmarks automáticos lo esconden: en el estudio de Cohere, un modelo de 103B en 4 bits perdía 0,3 % en francés según métricas automáticas y 16,6 % según evaluadores humanos. Incluye siempre revisión de hablantes nativos en tu validación.

Hablar con Slash

Pongámoslo en producción

Cuéntanos tu reto. Respondemos en menos de 24 horas laborales con una primera lectura honesta: si podemos ayudarte, te diremos cómo; si no, te diremos quién puede.

Contesto personalmente. Sin formularios eternos ni respuestas automáticas.

Escribirle a Esteban