Pular para o conteúdo principal

Treinando Seu Primeiro LLM com SFT

Este tutorial leva você através de cada etapa do assistente para treinar um modelo de linguagem usando Supervised Fine-Tuning (SFT). SFT é a forma mais comum de ensinar um modelo a seguir instruções.

Antes de Começar

Certifique-se de ter:
  • AITraining instalado (pip install aitraining)
  • Pelo menos 8GB de RAM (16GB recomendado)
  • Uma GPU é útil mas não obrigatória (Apple Silicon funciona muito bem!)

Etapa 0: Iniciar o Assistente

aitraining
Você verá o banner de boas-vindas e instruções.

Etapa 1: Escolher Tipo de Trainer

📋 Step 0: Choose Trainer Type

Available trainer types:
   1. Large Language Models (LLM) - text generation, chat, instruction following
   2. Text Classification - categorize text into labels
   3. Token Classification - NER, POS tagging
   ...

Select trainer type [1-10, default: 1]:
Digite 1 e pressione Enter para selecionar treinamento LLM.
Digite :help para ver explicações detalhadas do que cada tipo de trainer faz.

Etapa 2: Escolher Método de Treinamento

📋 Step 1: Choose Training Type

Available trainers:
  1. sft             - Supervised Fine-Tuning (most common)
  2. dpo             - Direct Preference Optimization
  3. orpo            - Odds Ratio Preference Optimization
  4. ppo             - Proximal Policy Optimization (RL)
  5. reward          - Reward model training
  6. distillation    - Knowledge distillation
  7. default         - Generic training (same as SFT)

Select trainer [1-7, default: 1]:
Digite 1 e pressione Enter para selecionar SFT.
default e sft são idênticos - eles usam o mesmo código de treinamento. default é apenas o fallback se nenhum trainer for especificado.

O Que Isso Significa?

TrainerQuando Usar
SFT / defaultEnsinar o modelo a seguir instruções. Você tem exemplos de boas respostas. Comece aqui!
DPOVocê tem pares de respostas boas vs ruins para o mesmo prompt
ORPOComo DPO mas funciona com menos dados
PPOAvançado: usando um modelo de recompensa para pontuar respostas
RewardTreinar um modelo de recompensa para pontuar saídas (usado com PPO)
DistillationTransferir conhecimento de um modelo professor maior para um estudante menor

Etapa 3: Nome do Projeto

📋 Step 2: Basic Configuration

Project name [my-llm-project]:
Digite um nome para seu projeto, como my-first-chatbot ou pressione Enter para aceitar o padrão.
Se uma pasta com esse nome existir, o assistente oferece criar um nome versionado (ex.: my-project-v2).

Etapa 4: Seleção de Modelo

Esta é a etapa mais importante. O assistente mostra modelos em alta do HuggingFace:
📋 Step 3: Model Selection

Popular models (trending):
  Sort: [T]rending [D]ownloads [L]ikes [R]ecent
  Filter size: [A]ll [S]mall(<3B) [M]edium(3-10B) [L]arge(>10B) (current: all)

  1. google/gemma-3-270m (270M)
  2. google/gemma-2-2b (2B)
  3. meta-llama/Llama-3.2-1B (1B)
  4. meta-llama/Llama-3.2-3B (3B)
  5. mistralai/Mistral-7B-v0.3 (7B)
  ...

Model (number, HF ID, or command):

Escolhendo o Tamanho Correto do Modelo

Use /filter depois S para modelos pequenos.Recomendado: google/gemma-3-270m ou meta-llama/Llama-3.2-1BEstes treinarão em 15-30 minutos no Apple Silicon.
Use /filter depois S ou M.Recomendado: google/gemma-2-2b ou meta-llama/Llama-3.2-3BHabilite quantização depois para modelos maiores.
Qualquer modelo até 10B funciona bem.Recomendado: meta-llama/Llama-3.2-8B ou mistralai/Mistral-7B-v0.3
Vá em frente!Recomendado: meta-llama/Llama-3.1-70B com quantização

Modelo Base vs Instruction-Tuned

Ao selecionar um modelo, você verá dois tipos:
Nome do ModeloTipoQuando Usar
google/gemma-2-2bBase (pré-treinado)Propósito geral, aprende seu estilo específico
google/gemma-2-2b-itInstruction-tuned (IT)Já segue instruções, ajuste fino adicional
meta-llama/Llama-3.2-1BBaseTela limpa para seu caso de uso
meta-llama/Llama-3.2-1B-InstructInstruction-tunedJá útil, refine-o
Regra geral: Use modelos base se quiser controle total. Use instruction-tuned (-it, -Instruct) se quiser uma vantagem inicial.

Selecionando Seu Modelo

Opção A: Digite um número para selecionar da lista:
Model (number, HF ID, or command): 1
✓ Model: google/gemma-3-270m
Opção B: Digite um ID do HuggingFace diretamente:
Model (number, HF ID, or command): google/gemma-2-2b
✓ Model: google/gemma-2-2b
Opção C: Busque modelos específicos:
Model (number, HF ID, or command): /search llama

Etapa 5: Configuração do Dataset

📋 Step 4: Dataset Configuration

Dataset options:
  • Local folder with CSV/JSON/Parquet files (e.g., ./data/my_dataset)
  • HuggingFace dataset ID (e.g., tatsu-lab/alpaca)
  • Choose from popular datasets below

Popular datasets (trending):
  1. tatsu-lab/alpaca — Instruction following dataset (52k)
  2. OpenAssistant/oasst1 — Conversation dataset
  3. HuggingFaceH4/ultrachat_200k — Multi-turn conversations
  ...

Entendendo o Tamanho do Dataset

Crítico: Combine o tamanho do seu dataset com o tamanho do seu modelo!
  • Modelos pequenos (< 1B params): Use 1.000 - 10.000 exemplos no máximo
  • Modelos médios (1-7B params): 10.000 - 100.000 exemplos
  • Modelos grandes (7B+ params): 50.000+ exemplos
Por quê? Modelos pequenos fazem overfitting em datasets grandes. Um modelo de 270M treinando em 52k exemplos do Alpaca vai memorizar, não generalizar.

Opções de Seleção de Dataset

Use um dataset pré-construído (mais fácil):
Dataset (number, HF ID, or command): 1
✓ Dataset: tatsu-lab/alpaca
🔍 Validating dataset...
✓ Dataset loaded. Columns found: instruction, input, output
Use seus próprios dados:
Dataset (number, HF ID, or command): ./my_data
Use um dataset do HuggingFace:
Dataset (number, HF ID, or command): username/my-dataset

Análise de Formato do Dataset

O assistente analisa automaticamente seu dataset:
🔄 Dataset Format Analysis:
  Loading dataset sample from HuggingFace: tatsu-lab/alpaca
✓ Detected dataset format: alpaca
  • Your dataset is in alpaca format
  • This can be converted to the standard messages format for better compatibility

Do you want to analyze and convert your dataset to the model's chat format? (y/N):
Digite y para habilitar conversão automática. Isso garante que seus dados funcionem corretamente com o template de chat do modelo.

Splits de Treino/Validação

Training split name [train]:
Pressione Enter para usar o split padrão train.
Validation split name (optional) [none]:
Se seu dataset tem um split de validação (validation, test), insira aqui. Caso contrário, pressione Enter para pular.

Máximo de Amostras (Teste)

Maximum samples (optional, for testing/debugging):
Para seu primeiro treinamento: Digite 100 ou 500 para fazer uma execução de teste rápida. Uma vez que funcione, remova o limite e treine no dataset completo.

Etapa 6: Configuração Avançada (Opcional)

📋 Step 5: Advanced Configuration (Optional)

Would you like to configure advanced parameters?
  • Training hyperparameters (learning rate, batch size, etc.)
  • PEFT/LoRA settings
  • Model quantization
  • And more...

Configure advanced parameters? [y/N]:
Para seu primeiro treinamento, pressione Enter para pular isso e usar padrões inteligentes.

Quando Configurar Opções Avançadas

SituaçãoO Que Mudar
Treinamento muito lentoHabilite LoRA (peft=True) para reduzir memória
Sem memóriaReduza batch_size ou habilite quantização
Modelo não está aprendendoAjuste lr (taxa de aprendizado)
Quer acompanhar treinamentoHabilite logging W&B

Etapa 7: Revisar e Iniciar

📋 Configuration Summary

Basic Configuration:
  • trainer: sft
  • project_name: my-first-chatbot

Dataset:
  • data_path: tatsu-lab/alpaca
  • train_split: train
  • auto_convert_dataset: ✓

Model & Training:
  • model: google/gemma-3-270m

Logging:
  • log: wandb ✓
  • wandb_visualizer: ✓ (LEET panel will open automatically)

✓ Configuration is valid!

🚀 Start training with this configuration? [Y/n]:
Pressione Enter para iniciar o treinamento!

O Que Acontece Depois

  1. O modelo é baixado (apenas na primeira vez)
  2. O dataset carrega e converte
  3. O treinamento começa com atualizações de progresso
  4. O painel W&B LEET mostra métricas em tempo real (se habilitado)
  5. Seu modelo treinado é salvo na pasta do projeto
Loading model google/gemma-3-270m...
Processing data...
Training started...
Epoch 1/1: loss=2.45, accuracy=0.52
Step 100/500: loss=1.89
Step 200/500: loss=1.42
...
Model saved to ./my-first-chatbot

Testando Seu Modelo

Após o treinamento completar:
aitraining chat
Abra http://localhost:7860/inference e carregue seu modelo de ./my-first-chatbot para testá-lo!

Problemas Comuns

  • Use um modelo menor (filtrar por tamanho)
  • Habilite LoRA nas opções avançadas
  • Reduza o tamanho do batch
  • Habilite quantização (int4)
  • Verifique o formato do seu dataset
  • Tente uma taxa de aprendizado maior
  • Certifique-se de que seus dados têm as colunas corretas
  • Habilite precisão mista (bf16) nas opções avançadas
  • Use um dataset menor primeiro
  • Habilite LoRA

Próximos Passos