Saltar al contenido principal

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

Esto es crítico: Modelos pequeños + Datasets grandes = Overfitting
Tamaño del ModeloTamaño Recomendado del DatasetTamaño Máximo del Dataset
270M - 500M1,000 - 5,00010,000
1B - 3B5,000 - 20,00050,000
7B - 13B20,000 - 100,000500,000
30B+100,000+Sin límite práctico

¿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:
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)

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

{
  "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)

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

{
  "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)

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

{
  "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:
{ "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:
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):
{"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

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
Incluye ejemplos variados: - Diferentes temas - Diferentes longitudes - Diferentes estilos - Casos extremos
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.
Elimina: - Duplicados - Ejemplos rotos - Formato inconsistente - Respuestas de baja calidad
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.

Datasets Populares

Para Aprendizaje/Pruebas

DatasetTamañoFormatoMejor Para
tatsu-lab/alpaca52kAlpacaSeguir instrucciones general
databricks/databricks-dolly-15k15kAlpacaTareas de negocio/profesionales
OpenAssistant/oasst110k+ConversaciónComportamiento de asistente útil

Para Tareas Específicas

DatasetTamañoFormatoMejor Para
sahil2801/CodeAlpaca-20k20kAlpacaGeneración de código
WizardLM/WizardLM_evol_instruct_70k70kAlpacaRazonamiento complejo
timdettmers/openassistant-guanaco9kConversaciónChat útil

Para Entrenamiento de Preferencia (DPO/ORPO)

DatasetTamañoFormatoMejor Para
Anthropic/hh-rlhf170kDPOÚtil e inofensivo
argilla/ultrafeedback-binarized-preferences60kDPOPreferencias 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