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

# Guía de Datasets

> Entendiendo datasets, formatos y qué funciona mejor para tu modelo

# Guía de Datasets

Tu dataset es el factor más importante en el éxito del entrenamiento. Un dataset pequeño y de alta calidad supera a uno masivo y ruidoso siempre.

## El Problema del Tamaño del Dataset

<Warning>
  **Esto es crítico**: Modelos pequeños + Datasets grandes = Overfitting

  | Tamaño del Modelo | Tamaño Recomendado del Dataset | Tamaño Máximo del 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+                       | Sin límite práctico       |
</Warning>

### ¿Por Qué Sucede Esto?

Piénsalo así:

* **Modelo pequeño** = Cerebro pequeño = Solo puede memorizar tanto
* **Dataset grande** = Mucha información
* **Resultado** = El modelo solo memoriza ejemplos en lugar de aprender patrones

**Ejemplo**: Entrenando `gemma-3-270m` en el dataset completo de Alpaca (52k ejemplos):

* El modelo memoriza: "Cuando se pregunta sobre la capital de Francia, di París"
* Pero no aprende: "Cómo responder preguntas de geografía en general"

### Cómo Corregirlo

Usa `--max-samples` en el asistente:

```
Maximum samples (optional, for testing/debugging): 5000
```

O en la CLI:

```bash theme={null}
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path tatsu-lab/alpaca \
  --max-samples 5000 \
  ...
```

## Formatos de Dataset

El asistente detecta automáticamente el formato de tu dataset.

### Formato Alpaca (Más Común)

```json theme={null}
{
  "instruction": "Write a poem about the ocean",
  "input": "",
  "output": "The waves crash upon the shore..."
}
```

**Columnas**: `instruction`, `input` (opcional), `output`

**Bueno para**: Seguir instrucciones, Q\&A, completar tareas

### Formato ShareGPT / Conversación

```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?" }
  ]
}
```

**Bueno para**: Chatbots, conversaciones 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." }
  ]
}
```

**Bueno para**: Entrenamiento estilo API, system prompts

### Formato Q\&A

```json theme={null}
{
  "question": "What is the capital of France?",
  "answer": "The capital of France is Paris."
}
```

**Columnas**: `question`/`query`/`prompt` + `answer`/`response`

**Bueno para**: Preguntas y respuestas simples

### Formato DPO (Entrenamiento de Preferencia)

```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"
}
```

**Requerido para**: Trainers DPO, ORPO

### Texto Plano

```json theme={null}
{
  "text": "This is a document about machine learning. It covers various topics..."
}
```

**Bueno para**: Preentrenamiento continuo, adaptación de dominio

## Detección Automática de Formato

El asistente analiza tu dataset y sugiere conversión:

```
🔄 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
```

### Qué Hace la Conversión

1. **Normaliza** tus datos a un formato estándar
2. **Aplica** el template de chat correcto para tu modelo
3. **Maneja** tokens especiales adecuadamente

**Ejemplo**: Alpaca → Messages para Gemma

Antes:

```json theme={null}
{ "instruction": "Translate to French", "input": "Hello", "output": "Bonjour" }
```

Después:

```
<start_of_turn>user
Translate to French

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

## Usando Datos Locales

### Archivos CSV

Crea un CSV con tus ejemplos:

```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"
```

Luego en el asistente:

```
Dataset (number, HF ID, or command): ./my_data/training.csv
```

### Archivos JSON/JSONL

Crea un archivo `.jsonl` (un objeto JSON por línea):

```jsonl theme={null}
{"instruction": "Write a poem", "output": "..."}
{"instruction": "Translate", "input": "Hello", "output": "Hola"}
```

### Estructura de Carpeta

Coloca todos tus archivos en una carpeta:

```
my_data/
  train.jsonl
  validation.jsonl  (optional)
```

Luego:

```
Dataset (number, HF ID, or command): ./my_data
```

## Consejos de Calidad de Dataset

<AccordionGroup>
  <Accordion title="Calidad > Cantidad">
    500 ejemplos de alta calidad superan 50,000 mediocres. Cada ejemplo debe ser:

    * Preciso y correcto
    * Bien formateado
    * Representativo de lo que quieres que el modelo haga
  </Accordion>

  {" "}

  <Accordion title="La diversidad importa">
    Incluye ejemplos variados: - Diferentes temas - Diferentes longitudes -
    Diferentes estilos - Casos extremos
  </Accordion>

  {" "}

  <Accordion title="Combina con tu caso de uso">
    Si quieres un bot de soporte al cliente, entrena en conversaciones de soporte
    al cliente. Si quieres un asistente de código, entrena en ejemplos de código.
    No entrenes en datos generales y esperes habilidades específicas.
  </Accordion>

  {" "}

  <Accordion title="Limpia tus datos">
    Elimina: - Duplicados - Ejemplos rotos - Formato inconsistente - Respuestas de
    baja calidad
  </Accordion>

  <Accordion title="Balancea tus clases">
    Si tienes categorías, trata de tener números similares de cada una.
    1000 ejemplos de categoría A + 50 ejemplos de categoría B = el modelo ignora B.
  </Accordion>
</AccordionGroup>

## Datasets Populares

### Para Aprendizaje/Pruebas

| Dataset                           | Tamaño | Formato      | Mejor Para                       |
| --------------------------------- | ------ | ------------ | -------------------------------- |
| `tatsu-lab/alpaca`                | 52k    | Alpaca       | Seguir instrucciones general     |
| `databricks/databricks-dolly-15k` | 15k    | Alpaca       | Tareas de negocio/profesionales  |
| `OpenAssistant/oasst1`            | 10k+   | Conversación | Comportamiento de asistente útil |

### Para Tareas Específicas

| Dataset                               | Tamaño | Formato      | Mejor Para            |
| ------------------------------------- | ------ | ------------ | --------------------- |
| `sahil2801/CodeAlpaca-20k`            | 20k    | Alpaca       | Generación de código  |
| `WizardLM/WizardLM_evol_instruct_70k` | 70k    | Alpaca       | Razonamiento complejo |
| `timdettmers/openassistant-guanaco`   | 9k     | Conversación | Chat útil             |

### Para Entrenamiento de Preferencia (DPO/ORPO)

| Dataset                                       | Tamaño | Formato | Mejor Para             |
| --------------------------------------------- | ------ | ------- | ---------------------- |
| `Anthropic/hh-rlhf`                           | 170k   | DPO     | Útil e inofensivo      |
| `argilla/ultrafeedback-binarized-preferences` | 60k    | DPO     | Preferencias generales |

## Splits de Entrenamiento/Validación

### Qué Son

* **Train split**: Datos de los que el modelo aprende
* **Validation split**: Datos para verificar si el modelo está aprendiendo (no memorizando)

### Cuándo Usar Validación

Usa un split de validación si:

* Tienes 1,000+ ejemplos
* Quieres detectar overfitting
* Estás experimentando con hiperparámetros

Omite validación si:

* Tienes \< 500 ejemplos (cada ejemplo importa)
* Estás haciendo una ejecución de prueba rápida
* Evaluarás por separado después del entrenamiento

### Configurando Splits en el Asistente

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

Validation split name (optional) [validation]:
```

## Limitando el Tamaño del Dataset

Para pruebas o para prevenir overfitting:

```
Maximum samples (optional, for testing/debugging): 1000
```

Esto es especialmente útil cuando:

1. **Primera ejecución de entrenamiento**: Usa 100-500 muestras para verificar que todo funciona
2. **Modelo pequeño**: Limita a 1,000-5,000 para modelos de 270M-1B
3. **Iteración rápida**: Prueba diferentes configuraciones con datos más pequeños

## Mapeo de Columnas

Si tu dataset tiene nombres de columnas no estándar, el asistente pregunta:

```
📝 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
```

### Columnas Requeridas 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 Pasos

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

  <Card title="Referencia de Formatos de Dataset" href="/foundations/datasets-and-formats" icon="file-code">
    Especificaciones detalladas de formatos
  </Card>
</CardGroup>
