QLoRA (Quantized Low-Rank Adaptation) es una extensión natural y revolucionaria de LoRA, presentada en el artículo “QLoRA: Efficient Finetuning of Quantized LLMs” (Dettmers et al., Universidad de Washington & MBZUAI, 2023). Mientras que LoRA reduce el número de parámetros entrenables, QLoRA va un paso más allá: reduce la precisión numérica de los pesos del modelo base para adaptarse a GPUs con poca memoria manteniendo un rendimiento casi al nivel del ajuste fino completo.
QLoRA permite entrenar modelos de hasta 70 mil millones de parámetros en una sola GPU de 48GB, y modelos de 30-40B en GPUs de 24GB. Además, modelos de 7B-13B pueden entrenarse en GPUs de 16GB — como las ofrecidas gratuitamente por Google Colab.
La cuantización es una técnica de compresión que reduce la precisión de los números que representan los pesos de las redes neuronales. En lugar de almacenar cada peso como un número de punto flotante de 32 bits (FP32) o 16 bits (FP16/BF16), se almacenan como enteros de 8 bits (INT8) o incluso enteros de 4 bits (INT4).
Por ejemplo:
Esto significa que un modelo de 7 mil millones de parámetros se reduce de ~28 GB en FP32 a solo ~3.5 GB en INT4 — una reducción de 8 veces.
QLoRA no utiliza una cuantización arbitraria. Emplea técnicas avanzadas para minimizar la pérdida de precisión:
QLoRA introduce un nuevo tipo de datos: 4-bit NormalFloat (NF4). A diferencia del INT4 estándar, que usa una distribución uniforme, NF4 está optimizado para datos que siguen una distribución normal (como los pesos de las redes neuronales). Esto permite una representación más fiel de los valores cercanos a cero, donde reside la mayor parte de la información útil.
QLoRA aplica cuantización a dos niveles:
Esto ahorra aproximadamente 0.375 bits por parámetro, equivalente a un ahorro adicional de 315 MB en un modelo de 7B.
QLoRA utiliza optimizadores "paginados" que gestionan la memoria de manera más eficiente, evitando errores de Memoria Insuficiente (OOM) al procesar secuencias largas o lotes grandes. Esto es especialmente útil en entornos con restricciones de memoria.
QLoRA combina tres componentes clave:
Este enfoque garantiza:
bitsandbytes ≥ 0.41.0 (biblioteca que implementa la cuantización de 4 bits).transformers ≥ 4.30.0.accelerate y peft.bitsandbytes y AutoModelForCausalLM.