Capítulo 1: O que é QLoRA?
Adaptação Quantizada de Baixa Ordem
QLoRA combina quantização de 4 bits com LoRA para reduzir drasticamente os requisitos de memória enquanto mantém a qualidade.
A Inovação do QLoRA
Comparação de Memória
| Modelo | Full FT | LoRA | QLoRA |
|---|---|---|---|
| 7B | ~80GB | ~14GB | ~6GB |
| 13B | ~160GB | ~26GB | ~10GB |
| 70B | ~600GB | ~140GB | ~48GB |
Como o QLoRA Funciona
- Carrega o modelo base em 4 bits (formato NF4)
- Adiciona adaptadores LoRA em maior precisão (bf16/fp16)
- Treina apenas os parâmetros LoRA
- Gradientes fluem através dos pesos desquantizados
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 Principais
NF4 (NormalFloat de 4 bits)
Formato de quantização projetado para pesos com distribuição normal:
- Número igual de valores em cada intervalo
- Melhor para pesos de redes neurais do que quantização uniforme
Double Quantization
Quantiza as constantes de quantização:
- Economiza cerca de ~0,4 bits adicionais por parâmetro
- ~11% a mais de economia de memória
Paged Optimizers
Gerencia picos de uso de memória durante o treinamento:
- Pagina os estados do otimizador para a CPU quando necessário
- Evita erros de falta de memória (OOM)
Compromisso entre Qualidade e Memória
| Método | Memória | Qualidade (relativa) |
|---|---|---|
| Full FT | 100% | 100% |
| LoRA | 18% | 99% |
| QLoRA | 8% | 98% |
QLoRA atinge cerca de 98% da qualidade do fine-tuning completo usando apenas cerca de 8% da memória.
Quando Usar QLoRA
✅ Use QLoRA quando:
- A GPU tem < 24GB de VRAM
- Treinando modelos 7B+ em hardware de consumidor
- O custo é uma preocupação principal
- Para experimentar e iterar rapidamente
❌ Considere LoRA/Full FT quando:
- Qualidade máxima é crítica
- Há memória de GPU abundante
- Ao fazer deploy de modelo mesclado (overhead de mesclagem)
Principais Pontos
✅ QLoRA = quantização de 4 bits + LoRA
✅ Reduz a memória em ~60% comparado ao LoRA
✅ Perda de qualidade mínima (~1-2%)
✅ Permite treinar modelos de 70B em 48GB
✅ Utiliza formato NF4 e double quantization