> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monostate.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Guia de Datasets

> Entendendo datasets, formatos e o que funciona melhor para seu modelo

# 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

<Warning>
  **Isso é crítico**: Modelos pequenos + Datasets grandes = Overfitting

  | Tamanho do Modelo | Tamanho Recomendado do Dataset | Tamanho Máximo do Dataset |
  | ----------------- | ------------------------------ | ------------------------- |
  | 270M - 500M       | 1.000 - 5.000                  | 10.000                    |
  | 1B - 3B           | 5.000 - 20.000                 | 50.000                    |
  | 7B - 13B          | 20.000 - 100.000               | 500.000                   |
  | 30B+              | 100.000+                       | Sem limite prático        |
</Warning>

### 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:

```bash theme={null}
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)

```json theme={null}
{
  "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

```json theme={null}
{
  "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)

```json theme={null}
{
  "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

```json theme={null}
{
  "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)

```json theme={null}
{
  "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

```json theme={null}
{
  "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:

```json theme={null}
{"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:

```csv theme={null}
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):

```jsonl theme={null}
{"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

<AccordionGroup>
  <Accordion title="Qualidade > Quantidade">
    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
  </Accordion>

  <Accordion title="Diversidade importa">
    Inclua exemplos variados:

    * Diferentes tópicos
    * Diferentes comprimentos
    * Diferentes estilos
    * Casos extremos
  </Accordion>

  <Accordion title="Combine com seu caso de uso">
    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.
  </Accordion>

  <Accordion title="Limpe seus dados">
    Remova:

    * Duplicatas
    * Exemplos quebrados
    * Formatação inconsistente
    * Respostas de baixa qualidade
  </Accordion>

  <Accordion title="Balance suas classes">
    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.
  </Accordion>
</AccordionGroup>

## Datasets Populares

### Para Aprendizado/Testes

| Dataset                           | Tamanho | Formato     | Melhor Para                       |
| --------------------------------- | ------- | ----------- | --------------------------------- |
| `tatsu-lab/alpaca`                | 52k     | Alpaca      | Seguir instruções geral           |
| `databricks/databricks-dolly-15k` | 15k     | Alpaca      | Tarefas de negócios/profissionais |
| `OpenAssistant/oasst1`            | 10k+    | Conversação | Comportamento de assistente útil  |

### Para Tarefas Específicas

| Dataset                               | Tamanho | Formato     | Melhor Para         |
| ------------------------------------- | ------- | ----------- | ------------------- |
| `sahil2801/CodeAlpaca-20k`            | 20k     | Alpaca      | Geração de código   |
| `WizardLM/WizardLM_evol_instruct_70k` | 70k     | Alpaca      | Raciocínio complexo |
| `timdettmers/openassistant-guanaco`   | 9k      | Conversação | Chat útil           |

### Para Treinamento de Preferência (DPO/ORPO)

| Dataset                                       | Tamanho | Formato | Melhor Para         |
| --------------------------------------------- | ------- | ------- | ------------------- |
| `Anthropic/hh-rlhf`                           | 170k    | DPO     | Útil e inofensivo   |
| `argilla/ultrafeedback-binarized-preferences` | 60k     | DPO     | Preferê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

<CardGroup cols={2}>
  <Card title="Tutorial SFT" href="/wizard/sft-walkthrough" icon="play">
    Tutorial completo de treinamento
  </Card>

  <Card title="Referência de Formatos de Dataset" href="/foundations/datasets-and-formats" icon="file-code">
    Especificações detalhadas de formatos
  </Card>
</CardGroup>
