Voltar
#ia#machine-learning#fine-tuning#llm#destilacao#70b#32b

Destilação de Modelos de IA: Do Zero ao 70B

Como transferir conhecimento de um modelo grande para um menor (70B ou 32B) de forma eficiente

por Caio Explica
👋

Preparei isso pra você, @pamonha1233!

Espero que esse conteúdo te ajude, pamonha! Se tiver dúvidas, me chama no X.

Ver tweet original
0:00
0:00

Ouça a narração completa

Fala, pamonha! Boa pergunta — destilação de modelos é um dos tópicos mais avançados (e práticos) de fine-tuning hoje. Montei esse guia completo pra te ajudar a escolher a melhor abordagem pra seu caso. 🎖️

O que é Destilação de Modelos?

Knowledge Distillation é o processo de transferir o 'conhecimento' de um modelo grande (teacher) para um modelo menor (student). O objetivo: manter ao máximo a qualidade do modelo grande, mas com muito menos parâmetros — e consequentemente, menos VRAM e latência menor na inferência.

Exemplos reais: o Llama 3.1 8B da Meta foi parcialmente destilado do 70B. Os modelos Phi da Microsoft são famosos por destilação agressiva com dados sintéticos de modelos muito maiores.

70B único vs 2x32B: A escolha depende do uso. 70B = mais coerente e um único checkpoint. 2x32B = pode especializar cada modelo em domínios diferentes (ex: um pro código, outro pra análise), e o footprint por GPU é menor.

Abordagem 1: SFT com Dados Sintéticos (Mais Simples e Eficiente)

A abordagem mais popular hoje — e provavelmente a melhor pra começar:

1. Use o modelo teacher (seu modelo grande) pra gerar um dataset de treinamento: pares de perguntas e respostas de alta qualidade.

2. Fine-tune o modelo student (70B ou 32B) nesse dataset usando SFT (Supervised Fine-Tuning).

Por quê funciona? Porque o modelo grande já 'sabe' como responder. Você está essencialmente extraindo esse conhecimento em forma de texto e ensinando o modelo menor a replicar.

Quantidade de dados: Para um 70B generalista, mínimo de 10k a 50k pares de alta qualidade. Para especialização em domínio específico, 5k já resolve.

Formatos populares: ShareGPT, Alpaca, ChatML.

Abordagem 2: KD Loss (Knowledge Distillation Loss Real)

Essa é a destilação 'verdadeira' no sentido técnico: ao invés de só aprender com as respostas do teacher, o student aprende a imitar a DISTRIBUIÇÃO DE PROBABILIDADE completa do teacher (os logits).

Vantagem: O student aprende não só 'o que' o teacher diz, mas também 'como ele pensa' — capturando incertezas e nuances.

Desvantagem: Requer acesso open-source ao teacher para extrair os logits. Não funciona com GPT-4, Claude, Gemini, etc. Só com modelos como Llama, Qwen, Mistral.

Como implementar: TRL (Hugging Face) tem suporte nativo a KD Loss desde 2024. O processo é mais pesado computacionalmente — precisa rodar teacher e student em paralelo durante o treino.

Abordagem 3: LoRA/QLoRA Fine-tuning

LoRA (Low-Rank Adaptation) não é destilação em si, mas é o método de treino mais usado JUNTO com as abordagens acima para economizar VRAM drasticamente:

  • Ao invés de atualizar todos os bilhões de parâmetros, você treina apenas pequenos adaptadores (rank matrices) inseridos nas camadas do transformer.
  • QLoRA = LoRA + quantização 4-bit. Permite treinar um modelo 70B em hardware que normalmente não suportaria.
  • Com QLoRA, você reduz o consumo de VRAM em ~4x comparado ao treino full.

Recomendação: Para 70B com QLoRA 4-bit, precisa de pelo menos 2x A100 40GB ou 1x A100 80GB. Para 32B com QLoRA, uma A100 40GB já resolve.

Ferramentas Essenciais

  • 🚀 Unsloth — Framework mais otimizado hoje. 2x mais rápido, ~60% menos VRAM que HuggingFace padrão. Suporta Llama 3.x, Qwen 2.5, Mistral, Gemma. Open-source e gratuito para single-GPU. Pro versão suporta multi-GPU. Melhor escolha para começar.
  • ⚙️ Axolotl — Framework via config YAML, mais flexível. Suporta FlashAttention2, DeepSpeed, FSDP para multi-GPU. Ideal quando precisar de mais controle sobre o pipeline de treino. Muito usado em produção.
  • 🔧 TRL (HuggingFace) — Biblioteca oficial para SFT, DPO, RLHF e KD Loss. Integra nativamente com transformers. Menos otimizado que Unsloth mas mais versátil.
  • 📦 llama.cpp — Não é para treino, mas essencial para TESTAR seu modelo destilado. Converta para GGUF e faça inferência local. Também útil para quantização pós-treino (Q4, Q5, Q8).
  • 🏭 LLaMA-Factory — Alternativa popular com interface web opcional. Suporta mais de 100 modelos base. Boa documentação em inglês e chinês.

Hardware Necessário

Essa é a parte que mais assusta — mas tem opções para todo orçamento:

Para 70B:

  • Mínimo viável (QLoRA 4-bit): 2x A100 40GB ou 1x A100 80GB
  • Confortável: 2x A100 80GB ou 4x RTX 3090 com FSDP
  • Não tente em consumer GPU menor — não vai funcionar bem

Para 32B:

  • Mínimo viável (QLoRA 4-bit): 1x A100 40GB ou 2x RTX 3090
  • Com Unsloth + QLoRA 4-bit: uma única A100 40GB resolve bem

Para 2x32B paralelo:

  • Duas máquinas separadas ou servidor com 4x A100 40GB

Onde alugar GPU barata:

  • RunPod.io (mais barato, bom para experimentos)
  • Vast.ai (mercado P2P de GPUs, mais barato ainda)
  • Lambda Labs (mais caro mas estável, bom para treinos longos)
  • Modal.com (pay-per-second, ótimo para testar pipelines)

Custo estimado: treinar um 70B por 1 época em 50k samples = ~8-16 horas em 2x A100. A ~$2/hora no RunPod = $16-32 por rodada de experimento.

Minha recomendação para o seu caso: Comece com SFT + dados sintéticos do modelo grande usando Unsloth + QLoRA no modelo 70B. Se precisar especializar em domínios diferentes, aí vale dividir em 2x32B. O caminho mais eficiente é gerar 20-50k exemplos de alta qualidade, não 1M de exemplos mediocres.

Passo a Passo Prático

  • 1️⃣ DEFINIR OBJETIVO: qual capacidade você quer destilar? Código? Raciocínio? Domínio específico? Isso define o tipo e quantidade de dados.
  • 2️⃣ GERAR DATASET: use o modelo teacher via API (ou local se open-source) para criar pares pergunta-resposta. Ferramentas: Magpie (dataset generation), ou scripts customizados com a API do teacher.
  • 3️⃣ LIMPAR E FILTRAR: remover respostas ruins com um modelo de avaliação. Qualidade > quantidade. Use reward models ou o próprio teacher como juiz.
  • 4️⃣ CONFIGURAR TREINO: Unsloth + QLoRA 4-bit é o setup mais fácil. Clone o repo, configure o YAML com seu dataset, modelo base e hyperparâmetros.
  • 5️⃣ TREINAR E MONITORAR: use WandB para acompanhar loss, learning rate, etc. Checkpointe frequentemente.
  • 6️⃣ AVALIAR: compare com o teacher usando benchmarks (MMLU, HumanEval, etc.) e testes manuais no seu caso de uso específico.
  • 7️⃣ QUANTIZAR e TESTAR: converta para GGUF com llama.cpp, teste em 4-bit, 5-bit, 8-bit e compare qualidade vs velocidade.

Recursos Gratuitos para Aprender

Para se aprofundar mais, esses são os melhores materiais disponíveis gratuitamente:

  • Repositório Unsloth: github.com/unslothai/unsloth — cheio de notebooks prontos para Colab
  • TRL Docs: huggingface.co/docs/trl — documentação oficial com exemplos de KD
  • Axolotl Examples: github.com/axolotl-ai-cloud/axolotl/tree/main/examples
  • SmolLM da HuggingFace: caso de uso real de destilação de modelo pequeno publicado em paper
Compartilhar
🎖️Criado pelo Major • Powered by AI