Key Takeaways
- LoRA adiciona camadas adaptadoras pequenas (0,4% dos pesos) em vez de retreinar o modelo completo.
- QLoRA = LoRA quantizado em 4 bits. Fine-tuning do Llama 3.3 8B em 8 GB VRAM, 1–2 horas com Unsloth.
- Unsloth é 4× mais rápido que o treinamento padrão HuggingFace com a mesma qualidade.
- Mínimo 500 exemplos para fine-tuning utilizável; 5.000+ para qualidade de produção.
- Escolha LoRA sobre RAG quando precisar de mudanças de comportamento permanentes no modelo.
O que é LoRA (Low-Rank Adaptation)?
LoRA é uma técnica de fine-tuning eficiente que adiciona matrizes adaptadoras de baixa classificação às camadas do transformador — em vez de atualizar todos os pesos do modelo.
Em vez de treinar todos os ~8 bilhões de parâmetros de um modelo 8B, LoRA treina apenas ~0,4% (cerca de 32 milhões de parâmetros). Os pesos originais do modelo permanecem congelados.
Os adaptadores LoRA são arquivos pequenos (~100MB para um modelo 8B). Você pode combinar diferentes adaptadores com o mesmo modelo base para diferentes tarefas.
O que é QLoRA?
QLoRA = fine-tuning LoRA em um modelo quantizado em 4 bits. Reduz o uso de VRAM em 75% — tornando possível o fine-tuning de modelos 7B–13B em GPUs de 8 GB.
QLoRA mantém 99% da qualidade do LoRA padrão com uma fração do uso de memória.
Unsloth implementa QLoRA com acelerações adicionais — 4× mais rápido que o treinamento HuggingFace padrão.
Quando fazer fine-tuning vs RAG?
Use este critério:
- Use RAG se: seus documentos mudam frequentemente, você precisa de atribuição de fontes, ou tem menos de 100K documentos.
- Use LoRA se: quer mudar o estilo, tom ou comportamento do modelo permanentemente, ou precisa de inferência mais rápida (modelos com fine-tuning são mais rápidos que RAG).
- Combine os dois: Faça fine-tuning para comportamento do domínio + RAG para fatos atualizados.
Configuração do Unsloth (6 passos)
# 1. Instalar Unsloth
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install --no-deps trl peft accelerate bitsandbytes
# 2. Carregar modelo quantizado em 4 bits
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/llama-3.2-8b",
max_seq_length=2048,
dtype=None,
load_in_4bit=True, # QLoRA
)
# 3. Adicionar adaptadores LoRA
model = FastLanguageModel.get_peft_model(
model,
r=16, # rank LoRA
lora_alpha=16,
lora_dropout=0,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
)
# 4. Preparar dataset
from datasets import load_dataset
dataset = load_dataset("json", data_files="meus_dados.json")["train"]
# 5. Treinar
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
max_seq_length=2048,
)
trainer.train()
# 6. Salvar e exportar para GGUF (para Ollama)
model.save_pretrained_gguf("meu_modelo", tokenizer, quantization_method="q4_k_m")Perguntas frequentes sobre fine-tuning LoRA
Quantos dados preciso para fine-tuning com LoRA?
Mínimo 500–1.000 exemplos para um modelo utilizável; 5.000+ para qualidade de produção. A qualidade dos dados importa mais que a quantidade — 1.000 exemplos de alta qualidade superam 50.000 de baixa qualidade.
LoRA é melhor que RAG para personalização de LLM?
Depende do caso de uso. Use RAG quando seus documentos mudam frequentemente e você precisa de atribuição de fontes. Use LoRA quando quiser mudar o estilo, tom ou comportamento do modelo permanentemente.
Posso usar LoRA para treinar em português?
Sim. Use dados de treinamento em português. Modelos multilíngues (Aya, Qwen) são melhores pontos de partida para fine-tuning em PT-BR do que modelos treinados principalmente em inglês.