Pular para o conteúdo principal

Guia de Datasets

Seu dataset é o fator mais importante no sucesso do treinamento. Um dataset pequeno e de alta qualidade supera um massivo e ruidoso sempre.

O Problema do Tamanho do Dataset

Isso é crítico: Modelos pequenos + Datasets grandes = Overfitting
Tamanho do ModeloTamanho Recomendado do DatasetTamanho Máximo do Dataset
270M - 500M1.000 - 5.00010.000
1B - 3B5.000 - 20.00050.000
7B - 13B20.000 - 100.000500.000
30B+100.000+Sem limite prático

Por Que Isso Acontece?

Pense assim:
  • Modelo pequeno = Cérebro pequeno = Só pode memorizar tanto
  • Dataset grande = Muita informação
  • Resultado = Modelo apenas memoriza exemplos em vez de aprender padrões
Exemplo: Treinando gemma-3-270m no dataset completo do Alpaca (52k exemplos):
  • Modelo memoriza: “Quando perguntado sobre a capital da França, diga Paris”
  • Mas não aprende: “Como responder perguntas de geografia em geral”

Como Corrigir

Use --max-samples no assistente:
Maximum samples (optional, for testing/debugging): 5000
Ou na CLI:
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path tatsu-lab/alpaca \
  --max-samples 5000 \
  ...

Formatos de Dataset

O assistente detecta automaticamente o formato do seu dataset.

Formato Alpaca (Mais Comum)

{
  "instruction": "Write a poem about the ocean",
  "input": "",
  "output": "The waves crash upon the shore..."
}
Colunas: instruction, input (opcional), output Bom para: Seguir instruções, Q&A, conclusão de tarefas

Formato ShareGPT / Conversação

{
  "conversations": [
    {"from": "human", "value": "Hello! How are you?"},
    {"from": "gpt", "value": "I'm doing well, thank you!"},
    {"from": "human", "value": "Can you help me with Python?"},
    {"from": "gpt", "value": "Of course! What do you need help with?"}
  ]
}
Bom para: Chatbots, conversas multi-turno

Formato Messages (estilo OpenAI)

{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is 2+2?"},
    {"role": "assistant", "content": "2+2 equals 4."}
  ]
}
Bom para: Treinamento estilo API, system prompts

Formato Q&A

{
  "question": "What is the capital of France?",
  "answer": "The capital of France is Paris."
}
Colunas: question/query/prompt + answer/response Bom para: Questionamento simples

Formato DPO (Treinamento de Preferência)

{
  "prompt": "Explain quantum physics",
  "chosen": "Quantum physics is a branch of science that studies...",
  "rejected": "idk its like small particles or something lol"
}
Obrigatório para: Trainers DPO, ORPO

Texto Simples

{
  "text": "This is a document about machine learning. It covers various topics..."
}
Bom para: Pré-treinamento contínuo, adaptação de domínio

Detecção Automática de Formato

O assistente analisa seu dataset e sugere conversão:
🔄 Dataset Format Analysis:
✓ 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): y

O Que a Conversão Faz

  1. Normaliza seus dados para um formato padrão
  2. Aplica o template de chat correto para seu modelo
  3. Lida com tokens especiais adequadamente
Exemplo: Alpaca → Messages para Gemma Antes:
{"instruction": "Translate to French", "input": "Hello", "output": "Bonjour"}
Depois:
<start_of_turn>user
Translate to French

Hello<end_of_turn>
<start_of_turn>model
Bonjour<end_of_turn>

Usando Dados Locais

Arquivos CSV

Crie um CSV com seus exemplos:
instruction,input,output
"Write a poem about cats","","Soft paws, gentle eyes..."
"Translate to Spanish","Hello","Hola"
"Summarize this","Long article text here","Brief summary"
Depois no assistente:
Dataset (number, HF ID, or command): ./my_data/training.csv

Arquivos JSON/JSONL

Crie um arquivo .jsonl (um objeto JSON por linha):
{"instruction": "Write a poem", "output": "..."}
{"instruction": "Translate", "input": "Hello", "output": "Hola"}

Estrutura de Pasta

Coloque todos os seus arquivos em uma pasta:
my_data/
  train.jsonl
  validation.jsonl  (optional)
Depois:
Dataset (number, HF ID, or command): ./my_data

Dicas de Qualidade de Dataset

500 exemplos de alta qualidade superam 50.000 medíocres. Cada exemplo deve ser:
  • Preciso e correto
  • Bem formatado
  • Representativo do que você quer que o modelo faça
Inclua exemplos variados:
  • Diferentes tópicos
  • Diferentes comprimentos
  • Diferentes estilos
  • Casos extremos
Se você quer um bot de suporte ao cliente, treine em conversas de suporte ao cliente. Se você quer um assistente de código, treine em exemplos de código. Não treine em dados gerais e espere habilidades específicas.
Remova:
  • Duplicatas
  • Exemplos quebrados
  • Formatação inconsistente
  • Respostas de baixa qualidade
Se você tem categorias, tente ter números similares de cada uma. 1000 exemplos da categoria A + 50 exemplos da categoria B = modelo ignora B.

Datasets Populares

Para Aprendizado/Testes

DatasetTamanhoFormatoMelhor Para
tatsu-lab/alpaca52kAlpacaSeguir instruções geral
databricks/databricks-dolly-15k15kAlpacaTarefas de negócios/profissionais
OpenAssistant/oasst110k+ConversaçãoComportamento de assistente útil

Para Tarefas Específicas

DatasetTamanhoFormatoMelhor Para
sahil2801/CodeAlpaca-20k20kAlpacaGeração de código
WizardLM/WizardLM_evol_instruct_70k70kAlpacaRaciocínio complexo
timdettmers/openassistant-guanaco9kConversaçãoChat útil

Para Treinamento de Preferência (DPO/ORPO)

DatasetTamanhoFormatoMelhor Para
Anthropic/hh-rlhf170kDPOÚtil e inofensivo
argilla/ultrafeedback-binarized-preferences60kDPOPreferências gerais

Splits de Treino/Validação

O Que São

  • Train split: Dados dos quais o modelo aprende
  • Validation split: Dados para verificar se o modelo está aprendendo (não memorizando)

Quando Usar Validação

Use um split de validação se:
  • Você tem 1.000+ exemplos
  • Você quer detectar overfitting
  • Você está experimentando com hiperparâmetros
Pule validação se:
  • Você tem < 500 exemplos (cada exemplo importa)
  • Você está fazendo uma execução de teste rápida
  • Você vai avaliar separadamente após o treinamento

Configurando Splits no Assistente

✓ Dataset loaded. Splits found: train, test, validation
✓ Using split: train (auto-selected from: train, test, validation)

Validation split name (optional) [validation]:

Limitando o Tamanho do Dataset

Para testes ou para prevenir overfitting:
Maximum samples (optional, for testing/debugging): 1000
Isso é especialmente útil quando:
  1. Primeira execução de treinamento: Use 100-500 amostras para verificar se tudo funciona
  2. Modelo pequeno: Limite a 1.000-5.000 para modelos de 270M-1B
  3. Iteração rápida: Teste configurações diferentes com dados menores

Mapeamento de Colunas

Se seu dataset tem nomes de colunas não-padrão, o assistente pergunta:
📝 Column Mapping:

For instruction tuning (SFT):
• Should contain complete conversations or instruction-response pairs

Text column name [text]: my_instruction_column
✓ text_column: my_instruction_column

Colunas Obrigatórias DPO/ORPO

DPO/ORPO requires three columns:
  • Prompt column: the instruction/question
  • Chosen column: the preferred response
  • Rejected column: the non-preferred response

Prompt column name [REQUIRED] [prompt]: question
Chosen response column [REQUIRED] [chosen]: good_response
Rejected response column [REQUIRED] [rejected]: bad_response

Próximos Passos