Fine-tuning muda como o modelo se comporta — quase nunca é como você ensina fatos novos

Apostila completa de Fine-tuning e Customização de Modelos

Afinar um modelo é a última alavanca, não a primeira. Esta apostila cobre o quadro de decisão (prompt → few-shot → RAG → fine-tune), os tipos de customização, por que os dados decidem tudo, PEFT com LoRA e QLoRA, preference tuning com DPO, as ferramentas e o loop de treino, como avaliar de verdade um modelo afinado, distillation para SLMs especializados, e o que muda em produção — servir adapters, versionar, re-treinar, segurança e licença.

10 módulosLoRA · QLoRA · PEFTSFT · DPO · distillationdados > tudoeval próprio · regressãoExercícios com gabarito
MÓDULO 01 · BÁSICO

Quando customizar um modelo

Objetivo: o quadro de decisão prompt → few-shot → RAG → fine-tune, o que o fine-tuning muda e o que não muda, e por que ele vem por último.

1.1 A escada de customização

  1. Prompt engineering — instruções claras, papel, restrições, formato. Grátis, instantâneo, reversível.
  2. Few-shot — 2–8 exemplos no prompt. Ensina formato e estilo sem treinar.
  3. RAG — dar ao modelo os documentos certos em tempo de execução. É assim que se "adiciona conhecimento" (ver IA Generativa & RAG).
  4. Fine-tuning — ajustar os pesos com exemplos da sua tarefa. Muda comportamento de forma persistente.
  5. Continued pre-training / treinar do zero — raro; caríssimo; para domínios muito distintos ou fundações próprias.

Suba a escada só quando o degrau anterior não resolve. A maioria dos "problemas de modelo" some com prompt melhor, few-shot ou RAG.

1.2 O que o fine-tuning muda

1.3 O que o fine-tuning NÃO muda de forma confiável

💡 A regra que organiza a apostila

Fine-tune para "como", RAG para "o quê". Se o problema é o modelo não sabe uma informação → RAG. Se o problema é o modelo sabe fazer, mas não do jeito certo / no formato certo / no estilo certo / com consistência → aí fine-tuning pode valer. E mesmo então: só depois de esgotar prompt e few-shot, e só com dados bons (Módulo 3).

💼 Mercado de trabalho

Perguntas de abertura: "Prompt, RAG ou fine-tuning — como você decide?" (suba a escada; RAG para conhecimento, fine-tune para comportamento/formato/estilo/tarefa estreita), "Fine-tuning ensina fatos novos?" (não de forma confiável — isso é RAG; fine-tune muda o "como"), "Quando fine-tuning vale a pena?" (formato/estilo/consistência/tarefa estreita e barata, depois de esgotar prompt e few-shot, com dados bons).

✏️ Exercício 1 — Escolha a alavanca

Para cada caso, diga prompt, few-shot, RAG, fine-tune, ou combinação — e por quê: (a) o assistente responde perguntas sobre a política de RH da empresa; (b) o modelo às vezes não devolve JSON válido; (c) você quer respostas no tom da sua marca (informal, direto, sem "Claro! Aqui está..."); (d) classificar tickets em 20 categorias específicas do seu produto, 100 mil/mês; (e) o modelo não sabe gírias e termos do setor agropecuário brasileiro.

Gabarito (uma boa resposta): (a) RAG — a política é conhecimento que muda; nunca fine-tune. (b) prompt + saída estruturada (grammar/structured output) primeiro; se ainda falhar em casos difíceis, um fine-tune leve de formato ajuda. (c) few-shot primeiro; se precisa ser consistente em escala e reduzir o prompt, fine-tune de estilo (SFT com exemplos no tom). (d) fine-tune de um SLM (LoRA) — tarefa estreita, alto volume; um modelo pequeno afinado bate um grande genérico em custo/latência (Módulo 8); RAG opcional se as categorias dependem de contexto. (e) continued pre-training num corpus do domínio + SFT; ou, mais barato, RAG com um glossário e few-shot — testar se resolve antes de treinar.

MÓDULO 02 · BÁSICO

Tipos de customização

Objetivo: distinguir continued pre-training, SFT, preference tuning (RLHF/DPO), distillation, embedding fine-tuning e classifier heads — e qual usar para qual objetivo.

TécnicaO que fazQuando
Continued pre-trainingcontinua o pré-treino (prever o próximo token) num corpus do seu domíniodomínio/idioma muito distinto do treino original; precisa de muito texto
SFT / instruction tuningtreina em pares instrução → resposta desejadao caso mais comum: formato, estilo, tarefa, aderência a instruções
Preference tuning (RLHF, DPO, ORPO, KTO)treina com pares resposta boa vs resposta ruimquando o modelo precisa aprender o que não fazer; alinhar a preferências sutis que exemplos positivos não capturam (Módulo 5)
Distillationum modelo "professor" (grande) gera dados/rótulos que treinam um "aluno" (pequeno)ter a qualidade do grande numa tarefa, com o custo/latência do pequeno (Módulo 8)
Embedding fine-tuningajusta um modelo de embeddings para o seu domíniomelhorar retrieval do seu RAG (as consultas e os documentos do seu jargão)
Classifier headcongela o modelo e treina só uma "cabeça" de classificação por cimaclassificação pura, muito eficiente, quando não precisa gerar texto

Um projeto pode combinar: continued pre-training (domínio) → SFT (tarefa/formato) → DPO (polir preferências). A maioria dos casos práticos é só SFT com LoRA.

💼 Mercado de trabalho

Perguntas: "Diferença entre SFT e preference tuning?" (SFT: pares instrução→resposta boa, ensina o "faça assim"; preference: pares bom vs ruim, ensina o "não faça isso" e preferências sutis), "O que é distillation?" (professor grande gera dados para ensinar um aluno pequeno numa tarefa), "Quando um classifier head em vez de gerar texto?" (classificação pura — muito mais eficiente), "Como você melhora o retrieval do seu RAG por treino?" (embedding fine-tuning).

✏️ Exercício 2 — Que técnica

Para cada objetivo, escolha a técnica: (a) um SLM que só responde "spam / não-spam"; (b) o modelo tende a ser prolixo e "puxa saco" — você quer respostas diretas e honestas; (c) o RAG recupera trechos irrelevantes porque as consultas usam gírias internas; (d) você quer um modelo de 3B que resume contratos tão bem quanto um modelo de fronteira; (e) o modelo escreve português de Portugal e você quer PT-BR.

Gabarito: (a) classifier head (ou SFT pequeno) — classificação binária, eficiência. (b) preference tuning (DPO) — o problema é comportamental e sutil ("menos bajulação, mais franqueza"); pares chosen/rejected capturam isso melhor que exemplos positivos. (c) embedding fine-tuning com pares (consulta interna, documento relevante). (d) distillation: usar o modelo de fronteira para gerar milhares de (contrato → resumo) de alta qualidade e treinar o 3B com SFT. (e) SFT num corpus PT-BR (ou continued pre-training se a diferença for grande), com exemplos no registro certo.

MÓDULO 03 · BÁSICO

Dados: o ativo que decide tudo

Objetivo: quantidade e qualidade, os formatos, as fontes (logs de produção, dados sintéticos, anotação), limpeza, contaminação e licença.

3.1 Quantidade × qualidade

3.2 Formatos

// SFT — formato de chat (JSONL, uma linha por exemplo)
{"messages": [
  {"role": "system", "content": "Você é um extrator. Responda só com JSON."},
  {"role": "user", "content": "Fatura: ...texto..."},
  {"role": "assistant", "content": "{\"numero\": \"123\", \"total\": 19990}"}
]}

// Preference (DPO) — chosen vs rejected para o mesmo prompt
{"prompt": "...", "chosen": "resposta melhor", "rejected": "resposta pior"}

3.3 Fontes de dados

3.4 Higiene dos dados

3.5 Licença e consentimento

⚠️ O que estraga um fine-tune

Poucos exemplos ruins > muitos exemplos ruins. Formato inconsistente (o modelo aprende a inconsistência). Contaminação treino/eval (números falsos). Dataset desbalanceado (colapso numa classe). Dados sintéticos não filtrados (herda os erros do professor). PII no treino (o modelo pode regurgitar). Ignorar a licença dos dados e do modelo base. "Jogar a base de conhecimento" num SFT esperando que vire memória.

💼 Mercado de trabalho

Perguntas: "Quantos exemplos para um LoRA de SFT?" (dezenas a poucos milhares; qualidade > quantidade; diversidade cobrindo os casos reais), "Qual a melhor fonte de dados?" (logs de produção com correção humana — o par entrada→resposta certa; com consentimento), "Riscos de dados sintéticos?" (propaga viés e erros do professor — filtrar e revisar), "O que é contaminação treino/eval e por que importa?".

✏️ Exercício 3 — Monte o dataset

Você quer afinar um modelo para escrever respostas de suporte no tom da empresa (empático, direto, sem jargão). Descreva: quantos exemplos, de onde tirar, o formato, e 4 verificações de qualidade antes de treinar.

Gabarito (uma boa resposta): Quantidade: ~200–500 pares (ticket do cliente → resposta ideal), cobrindo os tipos de pergunta mais comuns + casos difíceis (cliente irritado, pedido fora de escopo, reembolso). Estilo puro rende com menos; começar com 150 e iterar. Fontes: respostas reais de agentes seniores bem avaliadas (com consentimento e PII redigida); curadoria manual das melhores; alguns exemplos escritos do zero para os casos raros; opcionalmente dados sintéticos revisados para aumentar variedade. Formato: JSONL de chat, com um system prompt fixo que descreve o papel, o ticket como user, a resposta ideal como assistant. Verificações: (1) todas as respostas realmente seguem o tom-alvo (revisão por 2 pessoas, rubrica); (2) formato e comprimento consistentes; (3) dedup e nenhum exemplo contraditório; (4) separar 15% para eval antes e checar que não há sobreposição; (5) PII zero; (6) balanceamento entre tipos de ticket (não 80% "como faço login").

MÓDULO 04 · INTERMEDIÁRIO

PEFT: LoRA e QLoRA

Objetivo: o conceito de fine-tuning eficiente em parâmetros, os hiperparâmetros de LoRA, o que QLoRA adiciona, a VRAM necessária, e adapters.

4.1 O conceito

Full fine-tuning atualiza todos os pesos — precisa de muita VRAM (o modelo + gradientes + estados do otimizador) e produz uma cópia inteira do modelo por tarefa. PEFT (parameter-efficient fine-tuning) treina só uma fração minúscula:

PEFT venceu para a maioria dos casos: mais barato, mais rápido, os adapters são pequenos (MBs), dá para ter muitos e trocá-los.

4.2 Os hiperparâmetros que importam

ParâmetroO que éPonto de partida
rank (r)a "capacidade" do adapter; maior = aprende mais, ocupa mais, arrisca overfit8–32 (formato/estilo: 8–16; tarefa mais complexa: 32–64)
alphaescala do adapter; costuma-se usar alpha = 2×r (ou = r)16–32
target modulesquais matrizes adaptar (só as de atenção q,v, ou também k,o e as MLP)começar com q_proj, v_proj; "all-linear" rende mais, custa mais
learning rateo mais sensível; LoRA aceita LR maior que full FT1e-4 a 2e-4 (SFT); menor para datasets pequenos
epochsquantas passadas pelos dados1–3; datasets pequenos overfitam rápido — 1–2
batch size / grad accumulationefetivo = batch × accumulation; limitado pela VRAMo maior que couber; usar accumulation para simular batch maior
max seq lengthtamanho máximo dos exemplos; corta ou custa memóriao suficiente para os seus exemplos; packing para eficiência

4.3 VRAM

4.4 Adapters

💼 Mercado de trabalho

Perguntas: "O que é LoRA e por que se usa em vez de full fine-tuning?" (treina matrizes de baixo rank, congela o resto — ~1% dos parâmetros; mais barato, adapters pequenos e trocáveis), "O que QLoRA adiciona?" (base quantizada 4-bit → afinar modelos grandes em pouca VRAM), "Que hiperparâmetros importam?" (rank, alpha, target modules, learning rate, epochs — datasets pequenos overfitam, use 1–2 epochs), "Quanta VRAM para afinar um 7B?" (~20 GB LoRA, ~8–10 GB QLoRA).

✏️ Exercício 4 — Configure o treino

Você tem 300 exemplos de SFT (estilo + formato de resposta), um modelo base de 8B, e uma GPU de 24 GB. Proponha a configuração de LoRA/QLoRA e justifique cada escolha; diga como você saberia que está overfitando.

Gabarito (uma boa resposta): Método: QLoRA (4-bit) — cabe folgado em 24 GB e sobra para batch maior e contexto. rank: 16 (estilo/formato não pede muita capacidade; rank alto com 300 exemplos overfita). alpha: 32. target modules: q_proj, k_proj, v_proj, o_proj (atenção); adicionar MLP só se o resultado ficar aquém. learning rate: ~1e-4 (dataset pequeno → conservador), scheduler cosine com warmup. epochs: 2 (com 300 exemplos, 3+ já arrisca decorar). batch efetivo: 16–32 via grad accumulation. max seq len: o percentil 95 dos seus exemplos; packing ligado. Reservar ~45 exemplos para eval. Overfitting: a loss de treino cai e a de validação para de cair ou sobe; o modelo começa a repetir frases exatas dos exemplos de treino; regride em prompts fora da distribuição do treino (perde capacidade geral); no eval próprio, melhora nos casos "parecidos com o treino" mas piora nos diferentes. Mitigar: menos epochs, rank menor, mais/melhores dados, early stopping pela loss de validação.

MÓDULO 05 · INTERMEDIÁRIO

Preference tuning (DPO)

Objetivo: por que SFT não basta, o que é RLHF, por que DPO virou o padrão prático, e como montar o dataset de preferência.

5.1 Por que SFT não basta

SFT ensina "responda assim" com exemplos positivos. Mas há coisas que exemplos positivos não capturam bem: o que não fazer (não inventar, não ser prolixo, não bajular, não sair do escopo), e preferências sutis entre duas respostas plausíveis ("esta é boa, mas aquela é melhor"). Preference tuning treina com pares comparativos.

5.2 RLHF → DPO

5.3 O dataset de preferência

{"prompt": "<pergunta ou instrução>",
 "chosen":   "<a resposta que preferimos>",
 "rejected": "<uma resposta pior para o MESMO prompt>"}

5.4 Riscos

💼 Mercado de trabalho

Perguntas: "Por que SFT não basta?" (exemplos positivos não ensinam o "não faça" nem preferências sutis entre respostas plausíveis), "RLHF vs DPO?" (RLHF: reward model + PPO, poderoso mas complexo/instável; DPO: otimiza direto nos pares chosen/rejected, simples e estável — o padrão), "Como montar um dataset de preferência?" (pares chosen/rejected para o mesmo prompt; chosen claramente melhor pelo motivo-alvo; rejected plausível), "Riscos do preference tuning?" (reward hacking, alignment tax, sobre-recusa).

✏️ Exercício 5 — DPO para franqueza

Seu assistente é bajulador e evasivo ("Ótima pergunta! Depende de muitos fatores..."). Você quer respostas diretas e honestas, inclusive dizer "não sei" ou "isso é uma má ideia". Descreva o dataset de preferência, o cuidado para não quebrar o modelo, e como você mediria o resultado.

Gabarito (uma boa resposta): Dataset: ~500 pares. Para prompts variados (perguntas técnicas, pedidos de opinião, ideias ruins, coisas fora do conhecimento do modelo), o rejected é a resposta bajuladora/evasiva típica do modelo atual; o chosen é uma versão direta — vai ao ponto, dá a resposta ou diz "não tenho essa informação", e quando cabe diz "não recomendo isso, porque...". Cobrir também casos onde ser direto não significa ser rude — para não ensinar grosseria. Incluir pares onde o chosen admite incerteza. Cuidado: fazer DPO depois de um SFT (ou sobre um modelo já bom), beta moderado para não se afastar demais do base; incluir no dataset alguns pares "controle" onde a resposta boa é elaborada (para não ensinar "sempre curto"); poucas epochs. Medir: um eval set com prompts que provocam bajulação/evasão + prompts normais; LLM-as-judge com rubrica (direto? honesto sobre incerteza? ainda educado? ainda completo quando precisa?) comparando base vs DPO; checar regressão em tarefas gerais (o modelo ficou pior em código/raciocínio/seguir instruções?); A/B com usuários reais medindo satisfação e taxa de "resposta útil".

MÓDULO 06 · INTERMEDIÁRIO

Ferramentas e o loop de treino

Objetivo: as bibliotecas, o fluxo (dados → config → treino → avaliação → iterar), o hardware, o logging, e os sinais de overfitting.

6.1 As ferramentas

FerramentaPerfil
Hugging Face TRLas libs de referência: SFTTrainer, DPOTrainer, ORPOTrainer, integra com PEFT e Accelerate
Axolotlconfig em YAML sobre TRL — o "jeito fácil" de rodar SFT/DPO/QLoRA sem escrever muito código
Unslothkernels otimizados: 2× mais rápido, menos VRAM; ótimo em GPU única
LLaMA-FactoryUI + CLI, muitos métodos e modelos suportados
torchtuneoficial do PyTorch, receitas limpas
MLX-LMLoRA em Apple Silicon (Mac) — ver IA Local & SLMs
Serviços gerenciadosos fine-tune dos provedores de modelo, ou plataformas — você manda o JSONL, recebe o modelo/endpoint; zero infra

6.2 O loop

  1. Preparar os dados (Módulo 3): JSONL limpo, dedup, split treino/eval sem contaminação.
  2. Baseline: medir o modelo base (e prompt+RAG) no seu eval — o número a bater.
  3. Configurar (Módulo 4/5): método, hiperparâmetros de partida.
  4. Treinar: acompanhar a loss de treino e de validação; salvar checkpoints.
  5. Avaliar (Módulo 7): no eval próprio, contra o baseline, checando regressão.
  6. Iterar: ajustar dados (o que mais rende), depois hiperparâmetros. Mudar uma coisa por vez.

6.3 Hardware

6.4 Logging e checkpoints

6.5 Sinais de overfitting

💼 Mercado de trabalho

Perguntas: "Que ferramentas você usaria para um LoRA?" (TRL, ou Axolotl/Unsloth para facilidade e velocidade; serviço gerenciado se sem infra), "Descreva o loop de fine-tuning" (dados → baseline → config → treinar → avaliar contra baseline e checar regressão → iterar mudando uma coisa por vez), "Como você escolhe o melhor checkpoint?" (pela loss de validação e pelo eval próprio, não o último passo), "Sinais de overfitting?".

✏️ Exercício 6 — Plano de treino de ponta a ponta

Você recebeu a tarefa: "faça o modelo classificar tickets em 20 categorias do nosso produto, melhor que o prompt atual". Descreva o plano completo, do dado ao "vai/não vai para produção".

Gabarito (uma boa resposta): (1) Dados: exportar tickets históricos com a categoria correta (rótulo humano); ~50–200 por categoria, balanceado; separar 20% para eval antes, sem contaminação; limpar rótulos ambíguos. (2) Baseline: rodar o eval com o prompt atual (few-shot) e um modelo bom — anotar accuracy por categoria e a matriz de confusão. (3) Escolha: um SLM (3–8B) com QLoRA (tarefa estreita, alto volume → quer barato/rápido — ver IA Local & SLMs); saída forçada ao enum das 20 categorias. (4) Config: rank 16, LR 1e-4, 2 epochs, target atenção; Axolotl/Unsloth; W&B. (5) Treinar, escolher checkpoint pela loss de validação. (6) Avaliar: accuracy geral e por categoria no eval próprio vs baseline; olhar a matriz de confusão (quais categorias ele troca); checar que não colapsou nas categorias raras. (7) Decisão: vai para produção se bate o baseline com margem e o custo/latência do SLM afinado compensa; senão, tentar mais/melhores dados ou rank maior. (8) Produção: shadow mode comparando com o humano, monitorar drift, plano de re-treino quando surgirem categorias novas (Módulo 9).

MÓDULO 07 · AVANÇADO

Avaliar um modelo fine-tunado

Objetivo: o eval set próprio, comparar contra o base e contra prompt+RAG no mesmo eval, detectar regressão de capacidade geral, e decidir se vale a pena.

7.1 Nunca só benchmark

7.2 Comparar no mesmo eval

Rode, no mesmo eval set: (a) o modelo base com o seu prompt; (b) base + few-shot; (c) base + RAG se aplicável; (d) o modelo fine-tunado. Só assim você sabe se o fine-tune ganhou de alternativas mais baratas — muitas vezes um bom prompt+RAG empata com o fine-tune e não custa treino nem manutenção.

7.3 Regressão de capacidade (catastrophic forgetting)

7.4 Formato, estilo, segurança

7.5 "Vale a pena?"

O fine-tune só se justifica se o ganho no eval próprio supera o custo total: dados (coleta, anotação, curadoria), GPU/treino, avaliação, e — o maior — a manutenção: cada vez que o modelo base evolui ou os dados mudam, você re-treina e re-avalia. Se prompt+RAG chega perto, fique com prompt+RAG.

💼 Mercado de trabalho

Perguntas: "Como você avalia um modelo fine-tunado?" (eval set próprio, checagem automática + LLM-as-judge; comparar no mesmo eval contra base, few-shot e RAG; checar regressão de capacidade geral e segurança), "O que é catastrophic forgetting e como detectar?" (afinar degrada outras tarefas — um eval de regressão antes/depois), "Como você decide se o fine-tune valeu a pena?" (ganho no eval > custo de dados + treino + avaliação + manutenção; se prompt+RAG empata, não fine-tune).

✏️ Exercício 7 — Ele "melhorou"?

Seu LoRA de resumo de contratos subiu a "qualidade do resumo" (LLM-as-judge) de 3.9 para 4.4 no eval próprio. O que mais você checaria antes de dizer que valeu e mandar para produção?

Gabarito (uma boa resposta): (1) Comparar com alternativas no mesmo eval: base + prompt melhorado + few-shot; base + RAG das cláusulas relevantes — quanto disso é o fine-tune e quanto seria só um prompt melhor? (2) Regressão: rodar o eval de capacidade geral (seguir instruções, raciocínio, outro idioma, segurança) antes/depois — o modelo ficou pior em algo? (3) Por fatia: o ganho é em todos os tipos de contrato ou só nos parecidos com o treino? Piorou em algum? (4) Formato/factualidade: o resumo continua fiel (não inventa cláusula)? o formato é consistente? (5) Overfitting: ele repete trechos literais dos exemplos de treino? (6) Custo/latência: qual o custo de servir esse LoRA vs o baseline, e vs manter isso atualizado quando o modelo base mudar? (7) Robustez do juiz: 3.9→4.4 é significativo ou ruído? rodar o eval algumas vezes, checar o intervalo. (8) Produção: um A/B (ou shadow) com avaliação humana amostral antes de confiar 100%.

MÓDULO 08 · AVANÇADO

Distillation e SLMs especializados

Objetivo: usar um modelo grande para "ensinar" um pequeno a fazer uma tarefa muito bem, o pipeline de distillation, e quando o SLM afinado bate o modelo de fronteira.

8.1 A ideia

Distillation: um modelo "professor" forte (de fronteira, ou um grande aberto) gera dados de alta qualidade para a sua tarefa; você treina (SFT/LoRA) um modelo "aluno" pequeno nesses dados. O aluno aprende a fazer aquela tarefa quase tão bem, mas com o custo, a latência e a privacidade de um SLM (ver IA Local & SLMs).

8.2 Quando o SLM afinado ganha do modelo de fronteira

8.3 O pipeline de distillation

  1. Definir a tarefa e o formato de saída com precisão.
  2. Gerar com o professor: milhares de exemplos (entrada → saída), com prompts variados cobrindo os casos reais; usar entradas reais quando possível (não só sintéticas).
  3. Filtrar: descartar as saídas do professor que estão erradas (validação automática, um segundo modelo como juiz, amostragem humana). Lixo do professor = lixo no aluno.
  4. Treinar o aluno (SFT/LoRA) nos dados filtrados.
  5. Avaliar (Módulo 7) contra o professor e contra o SLM base sem afinar, no seu eval.
  6. Iterar: os casos onde o aluno erra viram novos exemplos.

Licença: alguns provedores proíbem usar as saídas do modelo deles para treinar um modelo concorrente — leia os termos antes de destilar (ver IA Local & SLMs, Módulo 2).

8.4 Frota de especialistas

💼 Mercado de trabalho

Perguntas: "O que é distillation e para que serve?" (professor grande gera dados; aluno pequeno aprende a tarefa com o custo/latência/privacidade de um SLM), "Quando um SLM afinado bate um modelo de fronteira?" (tarefa estreita e repetitiva, volume alto, latência, privacidade — não em tarefas abertas/raciocínio difícil), "Qual o passo mais importante do pipeline de distillation?" (filtrar as saídas do professor — lixo do professor vira lixo no aluno), "Que cuidado de licença?" (alguns termos proíbem treinar com as saídas).

✏️ Exercício 8 — Destile um roteador

Você quer um modelo minúsculo que decida, para cada mensagem de um chatbot, se ela deve ir para o fluxo "FAQ", "abrir chamado", "falar com humano" ou "fora de escopo". Hoje isso é feito por um modelo grande caro. Descreva o pipeline de distillation e como validaria.

Gabarito (uma boa resposta): (1) Tarefa: classificação em 4 rótulos; saída forçada ao enum. (2) Gerar: pegar mensagens reais do histórico do chatbot (milhares, variadas) e rotular cada uma com o modelo grande (o professor) com um prompt cuidadoso e few-shot; para os casos ambíguos, um segundo prompt/modelo ou um humano. (3) Filtrar: descartar rótulos de baixa confiança do professor; rotular manualmente uma amostra para medir a qualidade dos rótulos do professor (se o professor erra 8%, o teto do aluno é ~92%); balancear os 4 rótulos. (4) Treinar: um SLM de 0.5–3B (ou um classifier head) com LoRA nos dados filtrados. (5) Avaliar: um eval set com ~400 mensagens reais rotuladas por humanos (não pelo professor, para não herdar o viés dele); accuracy geral e por rótulo, matriz de confusão; comparar aluno vs professor vs SLM base sem afinar; medir latência e custo por 1k. (6) Decisão: se o aluno chega perto do professor com uma fração do custo/latência, vai para produção com fallback ao modelo grande nos casos de baixa confiança; monitorar drift (mensagens novas que não se encaixam) e re-treinar periodicamente.

MÓDULO 09 · MUITO AVANÇADO

Produção

Objetivo: servir adapters, versionar modelo+dados+config, quando re-treinar, o custo real, a segurança e a licença.

9.1 Servir

9.2 Versionar

9.3 Quando re-treinar

9.4 O custo real

Além da GPU do treino (relativamente barato para LoRA): coleta e curadoria de dados (o maior), anotação, construção e manutenção do eval, o tempo de engenharia a cada iteração, e o re-treino a cada troca de base. Compare honestamente com "prompt+RAG que a gente ajusta em minutos".

9.5 Segurança

9.6 Licença

💼 Mercado de trabalho

Perguntas: "Como você serve muitos modelos fine-tunados sem explodir a memória?" (adapters LoRA sobre um base compartilhado — vLLM multi-adapter), "O que versionar para reproduzir um fine-tune?" (base + dataset + config + código + seed, no registry, com o eval junto), "Qual o custo escondido do fine-tuning?" (curadoria de dados + eval + engenharia + re-treino a cada novo modelo base), "O fine-tune pode afetar a segurança?" (sim — pode remover guardrails; re-testar; risco de regurgitar dados de treino e de envenenamento).

✏️ Exercício 9 — Plano de operação

Sua empresa tem 5 clientes, cada um com um LoRA de estilo próprio sobre o mesmo modelo base de 8B. Descreva: como servir, como versionar, quando re-treinar, e 3 riscos de segurança/compliance com mitigação.

Gabarito (uma boa resposta): Servir: um vLLM com o base 8B (quantizado) e os 5 adapters LoRA carregados; roteamento por cliente escolhe o adapter; um adapter por cliente mantém a memória baixa (o base é compartilhado); fallback ao base puro se um adapter falha. Versionar: para cada adapter, um registro com {base (nome+hash+quantização), dataset do cliente (versão+hash), config de treino (hiperparâmetros+seed), commit do código, resultados do eval do cliente}. Promover um adapter novo só com o eval passando e um A/B. Re-treinar: por cliente, quando (a) drift detectado no monitoramento (qualidade caiu), (b) o cliente forneceu mais exemplos/correções, ou (c) trocamos o modelo base — aí re-treinar os 5 adapters sobre o novo base e re-avaliar todos antes de cortar. Riscos: (1) o LoRA de um cliente removeu guardrails → re-testar segurança (prompts de OWASP LLM) a cada treino, e manter um filtro de saída independente do modelo; (2) o adapter regurgita dados de treino de um cliente → não treinar com PII/segredos, testar com prompts de extração, e isolar por tenant; (3) dados de treino de um cliente vêm de logs manipuláveis → validar proveniência, revisar amostra, e ter o eval como rede. Compliance: cada cliente é um contexto isolado; contratos definindo o uso dos dados para treino.

MÓDULO 10 · CARREIRA

Mercado de trabalho: roadmap, entrevistas e portfólio

Objetivo: converter o conteúdo dos módulos em contratação — onde a habilidade é usada, um plano de estudo, um banco de perguntas e projetos que geram entrevista.

10.1 Onde essa habilidade pesa

10.2 Roadmap de estudo (5–7 semanas)

SemanasFocoPrática
1A escada de customização e os tipos (Módulos 1–2)Para 5 problemas reais, decidir prompt/RAG/fine-tune e justificar
2Dados (Módulo 3)Montar um dataset de SFT de ~200 exemplos para uma tarefa, com split limpo e verificações
3LoRA/QLoRA (Módulo 4)Rodar um QLoRA (Unsloth/Axolotl) num 7–8B; variar rank/LR/epochs e observar
4Avaliação (Módulo 7)Eval set próprio; comparar fine-tune vs base vs few-shot vs RAG; eval de regressão
5DPO (Módulo 5)Um dataset de preferência pequeno e um DPO sobre o SFT anterior; medir o efeito e a regressão
6Distillation e serving (Módulos 8–9)Destilar um SLM para uma tarefa; servir adapters multi-tenant no vLLM; relatório de custo/latência
7PortfólioPublicar os projetos com os números e o raciocínio de decisão

10.3 Banco de perguntas (com a resposta que aprova)

Júnior/pleno — "Fine-tuning ou RAG?"

Fine-tune para "como" (formato, estilo, tom, uma tarefa estreita, consistência, reduzir o prompt); RAG para "o quê" (conhecimento, fatos que mudam). Fine-tuning não ensina fatos de forma confiável. E fine-tune vem por último — depois de esgotar prompt e few-shot, e só com dados bons.

Pleno — "O que é LoRA e por que se usa?"

Congela os pesos do modelo e treina, para cada matriz adaptada, um par de matrizes de baixo rank (ΔW = B·A) — ~1% dos parâmetros. Mais barato e rápido que full fine-tuning, o adapter tem poucos MB, dá para ter muitos e trocá-los, e servir vários sobre um base compartilhado. QLoRA carrega o base em 4-bit para afinar modelos grandes em pouca VRAM.

Pleno — "Quantos exemplos e o que importa neles?"

Para SFT/LoRA numa tarefa estreita, dezenas a poucos milhares; formato/estilo puro rende com 50–200. Qualidade > quantidade — exemplos impecáveis, formato consistente, diversidade cobrindo os casos reais e as bordas, balanceado, sem contaminação com o eval. Um exemplo errado ensina o erro.

Pleno — "SFT vs DPO?"

SFT treina em pares instrução→resposta boa (ensina o "faça assim"). DPO treina em pares chosen/rejected para o mesmo prompt (ensina o "não faça isso" e preferências sutis entre respostas plausíveis). DPO é o padrão prático de preference tuning — otimiza direto nos pares, sem o reward model e o RL do RLHF. Faz-se DPO depois de um SFT sólido.

Sénior — "Como você avalia um fine-tune de verdade?"

Eval set próprio (não benchmark), separado do treino, com checagem automática + LLM-as-judge. Comparar, no mesmo eval, o fine-tune contra o base, few-shot e RAG — para saber se ganhou de alternativas mais baratas. Rodar um eval de regressão (tarefas gerais, outro idioma, segurança) antes/depois para detectar catastrophic forgetting. E decidir "vale a pena" pelo ganho vs o custo total, incluindo re-treinar a cada novo modelo base.

Sénior — "Quando um SLM afinado bate um modelo de fronteira?"

Numa tarefa estreita e repetitiva (roteamento, classificação, extração, um estilo), com volume alto, requisito de latência ou de privacidade — o SLM afinado (via distillation de um modelo grande) foca e entrega qualidade próxima com uma fração do custo. Não ganha em tarefas abertas, raciocínio difícil ou contexto muito longo.

Sénior — "Riscos de segurança do fine-tuning?"

Pode remover guardrails do base (re-testar segurança após todo treino). O modelo pode regurgitar exemplos do treino literalmente (não afinar com PII/segredos). Envenenamento se os dados vêm de fonte não confiável. E questões de licença: o base permite fine-tune/redistribuição comercial? as saídas do professor podem ser usadas para treinar?

Armadilha — "Vamos fine-tunar para o modelo saber sobre a nossa empresa"

Fine-tuning não é um jeito confiável de injetar conhecimento — o modelo às vezes lembra, às vezes alucina por cima, e não atualiza quando os fatos mudam. Conhecimento é RAG. Fine-tune muda comportamento, formato e estilo. Confundir os dois é o erro nº 1.

10.4 Projetos de portfólio que geram entrevista

  1. LoRA com ganho medível (âncora): uma tarefa real, um QLoRA que bate o base e o prompt+few-shot+RAG no mesmo eval próprio, com o eval de regressão e o raciocínio de "valeu a pena".
  2. SLM destilado: um modelo pequeno destilado de um grande para uma tarefa (roteamento/extração/classificação), com relatório de accuracy, custo por 1k e latência vs o professor.
  3. DPO a partir de pares de preferência: mover um eixo de comportamento (concisão, honestidade), com a medição do efeito e da regressão.
  4. Estudo "fine-tune vs RAG vs prompt": a mesma tarefa pelas três vias, com números lado a lado e a recomendação.
  5. Serving multi-tenant: vários adapters sobre um base no vLLM, com o versionamento (base+dados+config) e as métricas de custo/latência.

10.5 Fontes para continuar

🏁 Síntese final da apostila

Cinco ideias sustentam a customização de modelos: (1) fine-tune para "como", RAG para "o quê" — e fine-tune vem por último, depois de prompt e few-shot; (2) os dados decidem tudo — dezenas a milhares de exemplos bons, sem contaminação, dos casos reais; logs de produção com correção humana são o ouro; (3) LoRA/QLoRA (PEFT) é o padrão — barato, adapters trocáveis, cabe numa GPU; (4) SFT ensina o "faça assim", DPO ensina o "não faça isso"; distillation dá a um SLM a qualidade de um grande numa tarefa; (5) avalie no seu eval contra base/few-shot/RAG, cheque regressão e segurança, e só mantenha o fine-tune se o ganho supera o custo de re-treinar a cada novo modelo base.