Capítulo 1: ¿Qué es QLoRA?
Adaptación de Bajo Rango Cuantizada
QLoRA combina cuantización de 4 bits con LoRA para reducir drásticamente los requisitos de memoria mientras mantiene la calidad.
La innovación de QLoRA
Comparación de memoria
| Modelo | FT completo | LoRA | QLoRA |
|---|---|---|---|
| 7B | ~80GB | ~14GB | ~6GB |
| 13B | ~160GB | ~26GB | ~10GB |
| 70B | ~600GB | ~140GB | ~48GB |
¿Cómo funciona QLoRA?
- Cargar el modelo base en 4 bits (formato NF4)
- Agregar adaptadores LoRA en mayor precisión (bf16/fp16)
- Entrenar solo los parámetros de LoRA
- Los gradientes fluyen a través de los pesos des-cuantizados
from transformers import BitsAndBytesConfig, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
# 4-bit configuration
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
# Load quantized model
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
device_map="auto",
)
# Add LoRA on top
lora_config = LoraConfig(r=16, lora_alpha=32, ...)
model = get_peft_model(model, lora_config)
Componentes clave
NF4 (NormalFloat de 4 bits)
Formato de cuantización diseñado para pesos con distribución normal:
- Igual número de valores en cada segmento
- Mejor para pesos de redes neuronales que la cuantización uniforme
Doble cuantización
Cuantiza las constantes de cuantización:
- Ahorra aproximadamente ~0.4 bits adicionales por parámetro
- ~11% más ahorro de memoria
Optimizadores paginados
Gestiona picos de memoria durante el entrenamiento:
- Pagina los estados del optimizador a la CPU cuando es necesario
- Previene errores de falta de memoria (OOM)
Compromiso entre calidad y memoria
| Método | Memoria | Calidad (relativa) |
|---|---|---|
| FT completo | 100% | 100% |
| LoRA | 18% | 99% |
| QLoRA | 8% | 98% |
QLoRA logra aproximadamente el 98% de la calidad del fine-tuning completo con aproximadamente el 8% de la memoria.
Cuándo usar QLoRA
✅ Use QLoRA cuando:
- La GPU tiene < 24GB de VRAM
- Entrenando modelos de 7B+ en hardware de consumo
- El costo es una preocupación principal
- Se requiere experimentar e iterar rápidamente
❌ Considere LoRA/FT completo cuando:
- La máxima calidad es crítica
- Se dispone de abundante memoria GPU
- Se va a desplegar el modelo fusionado (sobrecarga de fusión)
Puntos clave
✅ QLoRA = cuantización de 4 bits + LoRA
✅ Reduce la memoria en ~60% comparado con LoRA
✅ Pérdida de calidad mínima (~1-2%)
✅ Permite entrenar modelos de 70B en 48GB
✅ Utiliza formato NF4 y doble cuantización