SFT (Supervised Fine-Tuning): básico e prático
⏱ 13 min·⭐ 55 XP
Pré-requisitos (0/1)0%
- ⬜🎯 Quando fine-tune vs RAG vs prompt engineering(Fine-tuning & Customização de LLMs)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Dataset format
{"messages": [
{"role": "system", "content": "You are a helpful assistant that extracts invoices."},
{"role": "user", "content": "Extract total from: Invoice #123 Total: $456.78"},
{"role": "assistant", "content": "{\"invoice_id\": \"123\", \"total\": 456.78}"}
]}
{"messages": [...]}
{"messages": [...]}Dados
Conjunto curadoentrada e saída ideal, consistentes
Divisãotreino, validação e reservado — deduplicado ANTES
Treino
Modelo basecongelado
Adaptação de posto baixopoucos pesos treináveis
Perda de validaçãosobe quando começa a decorar
Decisão
Comparação com o basea pergunta é se o ajuste valeu
Valeupublica e monitora
Não valeufica com o base e um prompt melhor
- Conceito de arquitetura
- Compute
A seta pontilhada para "não valeu" é a mais importante do desenho. Ajuste fino só se justifica contra uma linha de base medida — e boa parte dos projetos descobre que precisava de um prompt melhor.
- 1 · O formato é conversa, não par solto. Instrução, entrada e resposta ideal. O modelo aprende a FORMA da resposta — consistência entre exemplos importa mais que quantidade.
- 2 · Deduplicar antes de dividir, sempre. Duplicata separada entre treino e validação é contaminação por construção: o modelo já viu aquele exemplo e você o usa para avaliar.
- 3 · Adaptar poucos pesos preserva o que o base sabia. O modelo original fica congelado e as matrizes adicionais são treinadas. Isso reduz custo e reduz o esquecimento do que ele já fazia bem.
- 4 · A perda de validação subindo é o sinal de parada. Enquanto a de treino continua caindo e a de validação sobe, o modelo está decorando. Continuar dali só piora.
- 5 · A comparação com o base é obrigatória. Pontuação alta isolada pode ser só a capacidade que o base já tinha — e aí todo o custo do treino foi desnecessário.
- 6 · "Não valeu" é resultado legítimo. Concluir que o ganho não paga o custo de treinar, servir e manter é engenharia, não fracasso: economiza meses de manutenção.
OpenAI FT via API
from openai import OpenAI
client = OpenAI()
# 1. Upload dataset
file = client.files.create(
file=open('train.jsonl', 'rb'),
purpose='fine-tune'
)
# 2. Create FT job
job = client.fine_tuning.jobs.create(
training_file=file.id,
model='gpt-4o-mini-2024-07-18',
hyperparameters={'n_epochs': 3},
)
# 3. Poll status
while True:
job = client.fine_tuning.jobs.retrieve(job.id)
if job.status in ['succeeded', 'failed']:
break
time.sleep(60)
# 4. Use model
resp = client.chat.completions.create(
model=job.fine_tuned_model, # "ft:gpt-4o-mini:org::abc123"
messages=[{'role': 'user', 'content': 'Extract total from...'}]
)Quiz rápido
Qual é o formato do dado para ajuste supervisionado?
Hugging Face TRL (open models)
from trl import SFTTrainer
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3-8B')
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-3-8B')
dataset = load_dataset('json', data_files='train.jsonl')
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset['train'],
max_seq_length=2048,
args={'num_train_epochs': 3, 'learning_rate': 2e-5, ...},
)
trainer.train()
trainer.save_model('./llama3-ft')💡
TRL (Transformer Reinforcement Learning) library Hugging Face automatiza SFT, DPO, PPO. Integrate com PEFT (próximo módulo) pra LoRA-based FT eficiente.
Perguntas frequentes
❓ O que é ajuste fino supervisionado, na prática?
É mostrar pares de entrada e saída desejada e treinar o modelo a imitá-los. O que decide o resultado não é a quantidade e sim a CONSISTÊNCIA: exemplos que se contradizem ensinam a média deles, e o modelo sai pior que o original. Curadoria é a maior parte do trabalho.
❓ Quantos exemplos são suficientes?
Dezenas a centenas de pares consistentes já movem o comportamento em modelo pré-treinado. O sinal de que faltam não é a nota baixa e sim a variância alta entre execuções. Antes de coletar mais, verifique se os que você tem concordam entre si — geralmente não concordam.
❓ Como evitar que o modelo esqueça o que sabia?
Com taxa de aprendizado baixa, poucas épocas e mistura de exemplos genéricos no conjunto. Treinar demais em domínio estreito produz modelo que acerta o formato e perde capacidade geral — o esquecimento catastrófico. Avaliar em conjunto fora do domínio é como se detecta.
Fixando
Dado
Coletapares entrada → saída desejada
Curadoriadedup, contradição, contaminação
Divisão
Treino
Avaliaçãoseparada por ORIGEM, não por sorteio
Treino
Modelo basecongelado quando é adaptador
Treinotaxa baixa, poucas épocas
Adaptadorpequeno e trocável
Portão
Base vs ajustadono mesmo conjunto
Fora do domíniodetecta esquecimento
- → referência
- Conceito de arquitetura
- Segurança e identidade
O portão de saída é comparação contra o modelo base, no mesmo conjunto, mais uma medida fora do domínio. Sem os dois, "o ajuste fino melhorou" é impressão.
- Consistência antes de quantidade. Exemplos que se contradizem ensinam a média deles, e o modelo sai pior que o original. Mil contraditórios valem menos que cem coerentes.
- Separar por origem, não por sorteio. Sorteio aleatório deixa paráfrase do mesmo caso nos dois lados e infla a nota. Separar por documento ou por cliente é o que dá medição honesta.
- Treinar pouco e devagar. Taxa baixa e poucas épocas. Treinar demais em domínio estreito produz modelo que acerta o formato e perde capacidade geral.
- Comparar contra o próprio base. A pergunta não é "a nota é boa" — é "melhorou em relação ao base no mesmo conjunto". Sem essa comparação, o projeto não pode afirmar nada.
- Medir fora do domínio detecta o esquecimento. É o passo mais pulado. Sem ele, celebra-se ganho no domínio sem notar que o modelo piorou em tudo mais.
Quiz rápido
Qual característica do conjunto importa mais que o volume?
Quiz rápido
O que costuma dar errado ao avaliar um modelo ajustado?
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…