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.
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.
| Formato | Bits por peso | Dónde corre | Para qué |
|---|---|---|---|
| GGUF k-quants (Q4_K_M, Q5_K_M, Q6_K, Q8_0) | 3 a 8,5 | llama.cpp, Ollama, LM Studio en CPU, Apple Silicon, NVIDIA, AMD | Portátiles, estaciones de trabajo |
| GGUF i-quants con imatrix (IQ1_S a IQ4_XS) | 2 a 4,5 | Los mismos motores | Modelos grandes en poca memoria |
| GPTQ, AWQ (W4A16) | 4 más escalas | vLLM, SGLang, Transformers | Servidores GPU, pocos usuarios |
| EXL3 | Fraccionario | ExLlamaV3, TabbyAPI (NVIDIA) | Calidad por bit en una GPU de consumo |
| bitsandbytes (int8, NF4) | 8 o 4 | Transformers, PEFT | Ajuste fino con QLoRA |
| FP8 (W8A8) | 8 | vLLM, SGLang en Ada, Hopper, Blackwell, AMD MI300X | Producción multiusuario |
| NVFP4, MXFP4 | 4,5 y 4,25 | Blackwell; AMD MI355X (MXFP4); llama.cpp lee ambos | Servidores 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.
| Tipo | Tamaño | KLD | Lectura |
|---|---|---|---|
| Q8_0 | 7,96 GiB | 0,0014 | Prácticamente sin pérdida |
| Q6_K | 6,14 GiB | 0,0055 | Casi sin pérdida |
| Q5_K_M | 5,33 GiB | 0,0108 | Casi sin pérdida |
| Q4_K_M (imatrix) | 4,58 GiB | 0,0282 | El equilibrio habitual |
| Q3_K_M (imatrix) | 3,74 GiB | 0,0844 | Pérdida visible |
| Q2_K | 2,96 GiB | 0,4451 | Pérdida fuerte |
| IQ1_S (imatrix) | 1,88 GiB | 2,2546 | Inservible 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.
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.
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.
| Hardware | Empieza con | Evita |
|---|---|---|
| Portátil o PC: GPU de 8 a 16 GB o 16 a 32 GB de memoria unificada | 4B a 14B en Q4_K_M o QAT; Q5_K_M o Q6_K si cabe | IQ2 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 bits | Un 70B comprimido a 2 bits |
| Mac con 64 a 512 GB de memoria unificada | GGUF o MLX en 4 bits; MXFP4 nativo como gpt-oss | Esperar 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/s | 70B densos: 2,7 tokens/s en FP8 |
| Servidor Ampere (A100), pocos usuarios | W4A16 (AWQ, GPTQ); INT8 W8A8 si crece la concurrencia | Contar con cálculo en FP8 |
| Servidor Ada o Hopper (H100, H200), muchos usuarios | FP8 W8A8 más caché KV en FP8 | Pesos en 4 bits sin probar bajo carga alta |
| Servidor Blackwell (B200, B300, RTX PRO 6000) | NVFP4 o FP8; los checkpoints FP4 del fabricante | Recuantizar 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.
- 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).
- Define una referencia: el mismo modelo en BF16 o FP8, o la versión nativa, con decodificación greedy.
- 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.
- Lee el español y el francés a mano: tildes, concordancia, registro (tú o usted, vous), saltos al inglés.
- Prueba las llamadas a herramientas y el JSON con la plantilla de chat de producción, validando cada salida contra su esquema.
- 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
- llama.cpp quantize tool: README (types, sizes, speeds)
- llama.cpp perplexity tool: README and KLD scoreboards
- "Give Me BF16 or Give Me Death"? Accuracy-Performance Trade-Offs in LLM Quantization
- Accuracy is Not All You Need
- How Does Quantization Affect Multilingual LLMs?
- Quantization Hurts Reasoning? An Empirical Study on Quantized Reasoning Models
- Introducing NVFP4 for Efficient and Accurate Low-Precision Inference
- FP8 W8A8 quantization
- gpt-oss-120b model card
- Quantization-aware training (QAT) checkpoints for Gemma 4
- Unsloth Dynamic GGUFs (Dynamic 2.0 and 3.0)
- Ollama FAQ: K/V cache quantization and concurrency
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.
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.
Más análisis para seguir
IA local en 2026: qué hardware comprar y qué corre en cada uno
RTX 5090, RTX PRO 6000, DGX Spark, Ryzen AI Max+ y Mac Studio M5: cálculo de memoria, qué modelo cabe dónde, comprar o alquilar y opciones por tamaño de equipo.
IA local y open sourceDel portátil al servidor: Ollama, llama.cpp, vLLM y SGLang
Qué motor para una persona, un equipo o producción, las técnicas que multiplican el rendimiento, cómo asegurarlo y medirlo, y cuándo sale más barata una API.
Agentes e ingenieríaEvals: cómo probar un sistema con LLM
Por qué probar a ojo falla: set de oro en español y francés, jueces LLM calibrados, gates de regresión en CI, herramientas y cuánto cuesta evaluar.
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.