Cuantización de LLMs
La cuantización es el proceso que reduce la precisión numérica de los pesos (y a veces de las activaciones) de una red neuronal. En la práctica, convierte valores representados en formatos de alta precisión como FP32 / FP16 a formatos de menor precisión como INT8, INT4 o incluso INT2.
Cuantizar = comprimir un modelo para que ocupe menos memoria y se ejecute más rápido, asumiendo una pérdida mínima de calidad.
1. ¿Para qué sirve?
Es la principal herramienta para la economía de la inferencia y la democratización del uso de modelos potentes.
- Tamaño
- Velocidad
- Energía
- Fine-tuning
Reducción drástica del tamaño
Un modelo de 70B parámetros puede comprimirse así:
| Formato | VRAM necesaria |
|---|---|
| FP32 (original) | ~280 GB |
| 4 bits | ~21 GB |
➡️ Permite que quepa en una RTX 4090 u otra tarjeta de consumo.
Aceleración de la inferencia
- Datos más pequeños ⇒ menos movimiento de información.
- Se aprovechan instrucciones de hardware optimizadas (núcleos INT8).
- Resultado: respuestas más rápidas.
Eficiencia energética
- Menos cálculos + menos accesos a memoria = menor consumo.
- Vital para dispositivos móviles y edge computing.
Permite el ajuste fino eficiente (QLoRA)
Gracias a la cuantización a 4 bits es posible hacer fine-tuning en hardware con poca memoria, algo que de otro modo sería imposible.
2. El compromiso: precisión vs. recursos
Reducir los bits implica una pérdida de información, pero las técnicas modernas han logrado que esta pérdida sea mínima para la mayoría de tareas.
| Bits | Calidad | Pérdida de precisión | Cuándo usarlo |
|---|---|---|---|
| 8 bits | Excelente | Prácticamente imperceptible | Cuando tienes memoria de sobra |
| 4 bits ⭐ | Muy buena | Solo 1-3% en benchmarks, imperceptible en conversaciones generales | Punto ideal (sweet spot) |
| 2 bits | Aceptable | 5-15% notable | Solo en casos de extrema limitación de memoria |
Para uso general en local, elige 4 bits: ahorras hasta un ~87% de memoria con una pérdida de calidad casi nula.
3. Formatos y técnicas más importantes
Existen diversos métodos para cuantizar un modelo, cada uno optimizado para un propósito diferente.
- GGUF
- GPTQ
- AWQ
- EXL2
GGUF
- Diseñado por el equipo de llama.cpp.
- El más versátil.
- Permite repartir la carga entre CPU y GPU.
- Ideal para ordenadores personales y Macs con Apple Silicon.
GPTQ
- Usa gradientes para minimizar el error de cuantización.
- Muy optimizado para GPUs NVIDIA.
- Enfocado en velocidad de inferencia.
AWQ
- Protege los canales de activación más importantes del modelo.
- Suele ofrecer precisión ligeramente superior a GPTQ en 4 bits.
EXL2
- Formato ultra-rápido para GPUs NVIDIA.
- Permite control granular de los bits por peso (p. ej. cuantizar a 2.55 bits).
4. Resumen comparativo
| Formato | Motor | Hardware ideal | Fortaleza |
|---|---|---|---|
| GGUF | llama.cpp | CPU + GPU / Apple Silicon | Versatilidad y compatibilidad |
| GPTQ | GPU NVIDIA | NVIDIA (inferencia) | Velocidad |
| AWQ | GPU NVIDIA | NVIDIA (4 bits) | Precisión en 4 bits |
| EXL2 | GPU NVIDIA | NVIDIA (alto rendimiento) | Flexibilidad de bits por peso |
La cuantización es lo que permite que la tecnología de los grandes modelos de lenguaje —antes reservada a centros de datos masivos— pueda ejecutarse hoy en dispositivos locales y de bajo consumo.