LoRA, QLoRA e PEFT: fine-tuning eficiente
⏱ 14 min·⭐ 60 XP
Pré-requisitos (0/1)0%
- ⬜📚 SFT (Supervised Fine-Tuning): básico e prático(Fine-tuning & Customização de LLMs)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Código PEFT + LoRA
| Método | O que treina | Memória exigida | Quando escolher |
|---|---|---|---|
| Ajuste completo | Todos os pesos | Muito alta | Raramente — só com dado e orçamento abundantes |
| Adaptação de posto baixo | Duas matrizes pequenas por camada | Moderada | O padrão hoje |
| A mesma, com base quantizada | Idem, sobre modelo comprimido | Baixa — cabe em placa de consumo | Quando o hardware é o limite |
| Ajuste só do prefixo | Vetores acrescentados à entrada | Muito baixa | Tarefas próximas do que o modelo já faz |
| Nenhum: prompt com exemplos | Nada | Nenhuma | Sempre a primeira tentativa — e frequentemente suficiente |
MétodoAjuste completo
O que treinaTodos os pesos
Memória exigidaMuito alta
Quando escolherRaramente — só com dado e orçamento abundantes
MétodoAdaptação de posto baixo
O que treinaDuas matrizes pequenas por camada
Memória exigidaModerada
Quando escolherO padrão hoje
MétodoA mesma, com base quantizada
O que treinaIdem, sobre modelo comprimido
Memória exigidaBaixa — cabe em placa de consumo
Quando escolherQuando o hardware é o limite
MétodoAjuste só do prefixo
O que treinaVetores acrescentados à entrada
Memória exigidaMuito baixa
Quando escolherTarefas próximas do que o modelo já faz
MétodoNenhum: prompt com exemplos
O que treinaNada
Memória exigidaNenhuma
Quando escolherSempre a primeira tentativa — e frequentemente suficiente
from peft import LoraConfig, get_peft_model, TaskType
from transformers import AutoModelForCausalLM
from trl import SFTTrainer
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3-8B')
lora_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=16, # rank
lora_alpha=32, # scaling
lora_dropout=0.05,
target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj'], # attention matrices
bias='none',
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# Output: trainable params: 20M || all params: 8B || trainable%: 0.25%
# Train com TRL
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
max_seq_length=2048,
args={...},
)
trainer.train()
# Save adapter (pequeno)
model.save_pretrained('./llama3-lora') # ~50MB
# Merge opcional
merged = model.merge_and_unload()
merged.save_pretrained('./llama3-merged')QLoRA setup
from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type='nf4', # NormalFloat4
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Llama-3-70B',
quantization_config=bnb_config,
device_map='auto',
)
# Base model em 4-bit (35GB vs 140GB full precision)
# + LoRA adapter normal em bf16✅
Result: FT Llama-3-70B em single A100 80GB. Impensável em 2022. Democratization real de FT de LLMs grandes.
Quiz rápido
O que a adaptação de baixo posto faz, conceitualmente?
Perguntas frequentes
❓ O que LoRA muda em relação ao ajuste fino completo?
Ele treina matrizes pequenas acopladas ao modelo congelado, em vez de atualizar todos os pesos — o que derruba a memória necessária de forma drástica e permite treinar em GPU modesta. A qualidade fica próxima na maioria das tarefas de comportamento, e o adaptador resultante é pequeno e trocável.
❓ QLoRA vale a perda de precisão?
Vale quando a alternativa é não treinar: quantizar o modelo base para treinar o adaptador permite ajustar modelo grande em uma GPU só. A perda existe e costuma ser pequena para tarefa de comportamento. Como sempre, quem decide é o seu conjunto de avaliação, não a recomendação genérica.
❓ Dá para ter vários adaptadores no mesmo modelo?
Dá, e é uma das vantagens práticas: um modelo base servido com adaptadores diferentes por cliente ou por tarefa, carregados sob demanda. É o que torna o ajuste fino viável em produto multi-inquilino — com ajuste completo, cada variante seria um modelo inteiro para servir.
Fixando
Quiz rápido
Qual vantagem operacional os adaptadores trazem além do custo de treino?
Quiz rápido
O que a variante quantizada acrescenta?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…