Saltar al contenido principal

Entrenando Tu Primer LLM con SFT

Este tutorial te lleva a través de cada paso del asistente para entrenar un modelo de lenguaje usando Supervised Fine-Tuning (SFT). SFT es la forma más común de enseñar a un modelo a seguir instrucciones.

Antes de Comenzar

Asegúrate de tener:
  • AITraining instalado (pip install aitraining)
  • Al menos 8GB de RAM (16GB recomendado)
  • Una GPU es útil pero no requerida (¡Apple Silicon funciona muy bien!)

Paso 0: Iniciar el Asistente

aitraining
Verás el banner de bienvenida y las instrucciones.

Paso 1: Elegir 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]:
Escribe 1 y presiona Enter para seleccionar entrenamiento LLM.
Escribe :help para ver explicaciones detalladas de lo que hace cada tipo de trainer.

Paso 2: Elegir Método de Entrenamiento

📋 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]:
Escribe 1 y presiona Enter para seleccionar SFT.
default y sft son idénticos - usan el mismo código de entrenamiento. default es solo el fallback si no se especifica ningún trainer.

¿Qué Significan Estos?

TrainerCuándo Usar
SFT / defaultEnseñar al modelo a seguir instrucciones. Tienes ejemplos de buenas respuestas. ¡Comienza aquí!
DPOTienes pares de respuestas buenas vs malas para el mismo prompt
ORPOComo DPO pero funciona con menos datos
PPOAvanzado: usar un modelo de recompensa para puntuar respuestas
RewardEntrenar un modelo de recompensa para puntuar salidas (usado con PPO)
DistillationTransferir conocimiento de un modelo maestro más grande a un estudiante más pequeño

Paso 3: Nombre del Proyecto

📋 Step 2: Basic Configuration

Project name [my-llm-project]:
Ingresa un nombre para tu proyecto, como my-first-chatbot o presiona Enter para aceptar el predeterminado.
Si existe una carpeta con ese nombre, el asistente ofrece crear un nombre versionado (ej.: my-project-v2).

Paso 4: Selección de Modelo

Este es el paso más importante. El asistente muestra modelos populares de 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):

Eligiendo el Tamaño Correcto del Modelo

Usa /filter luego S para modelos pequeños.Recomendado: google/gemma-3-270m o meta-llama/Llama-3.2-1BEstos entrenarán en 15-30 minutos en Apple Silicon.
Usa /filter luego S o M.Recomendado: google/gemma-2-2b o meta-llama/Llama-3.2-3BHabilita cuantización más tarde para modelos más grandes.
Cualquier modelo hasta 10B funciona bien.Recomendado: meta-llama/Llama-3.2-8B o mistralai/Mistral-7B-v0.3
¡Ve a lo grande!Recomendado: meta-llama/Llama-3.1-70B con cuantización

Modelo Base vs Instruction-Tuned

Al seleccionar un modelo, verás dos tipos:
Nombre del ModeloTipoCuándo Usar
google/gemma-2-2bBase (preentrenado)Propósito general, aprende tu estilo específico
google/gemma-2-2b-itInstruction-tuned (IT)Ya sigue instrucciones, ajuste fino adicional
meta-llama/Llama-3.2-1BBasePizarra limpia para tu caso de uso
meta-llama/Llama-3.2-1B-InstructInstruction-tunedYa útil, refinarlo
Regla general: Usa modelos base si quieres control total. Usa instruction-tuned (-it, -Instruct) si quieres una ventaja inicial.

Seleccionando Tu Modelo

Opción A: Escribe un número para seleccionar de la lista:
Model (number, HF ID, or command): 1
✓ Model: google/gemma-3-270m
Opción B: Escribe un ID de HuggingFace directamente:
Model (number, HF ID, or command): google/gemma-2-2b
✓ Model: google/gemma-2-2b
Opción C: Busca modelos específicos:
Model (number, HF ID, or command): /search llama

Paso 5: Configuración del 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
  ...

Entendiendo el Tamaño del Dataset

Crítico: ¡Combina el tamaño de tu dataset con el tamaño de tu modelo!
  • Modelos pequeños (< 1B params): Usa 1,000 - 10,000 ejemplos máximo
  • Modelos medianos (1-7B params): 10,000 - 100,000 ejemplos
  • Modelos grandes (7B+ params): 50,000+ ejemplos
¿Por qué? Los modelos pequeños hacen overfitting en datasets grandes. Un modelo de 270M entrenando en 52k ejemplos de Alpaca memorizará, no generalizará.

Opciones de Selección de Dataset

Usa un dataset preconstruido (más fácil):
Dataset (number, HF ID, or command): 1
✓ Dataset: tatsu-lab/alpaca
🔍 Validating dataset...
✓ Dataset loaded. Columns found: instruction, input, output
Usa tus propios datos:
Dataset (number, HF ID, or command): ./my_data
Usa un dataset de HuggingFace:
Dataset (number, HF ID, or command): username/my-dataset

Análisis de Formato del Dataset

El asistente analiza automáticamente tu 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):
Escribe y para habilitar la conversión automática. Esto asegura que tus datos funcionen correctamente con el template de chat del modelo.

Splits de Entrenamiento/Validación

Training split name [train]:
Presiona Enter para usar el split predeterminado train.
Validation split name (optional) [none]:
Si tu dataset tiene un split de validación (validation, test), ingrésalo aquí. De lo contrario, presiona Enter para omitir.

Máximo de Muestras (Pruebas)

Maximum samples (optional, for testing/debugging):
Para tu primer entrenamiento: Ingresa 100 o 500 para hacer una ejecución de prueba rápida. Una vez que funcione, elimina el límite y entrena en el dataset completo.

Paso 6: Configuración Avanzada (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 tu primer entrenamiento, presiona Enter para omitir esto y usar valores predeterminados inteligentes.

Cuándo Configurar Opciones Avanzadas

SituaciónQué Cambiar
El entrenamiento es muy lentoHabilita LoRA (peft=True) para reducir memoria
Sin memoriaReduce batch_size o habilita cuantización
El modelo no está aprendiendoAjusta lr (tasa de aprendizaje)
Quieres rastrear el entrenamientoHabilita logging W&B

Paso 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]:
Presiona Enter para iniciar el entrenamiento!

Qué Sucede Después

  1. El modelo se descarga (solo la primera vez)
  2. El dataset se carga y convierte
  3. El entrenamiento comienza con actualizaciones de progreso
  4. El panel W&B LEET muestra métricas en tiempo real (si está habilitado)
  5. Tu modelo entrenado se guarda en la carpeta del proyecto
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

Probando Tu Modelo

Después de que el entrenamiento complete:
aitraining chat
¡Abre http://localhost:7860/inference y carga tu modelo desde ./my-first-chatbot para probarlo!

Problemas Comunes

  • Usa un modelo más pequeño (filtrar por tamaño)
  • Habilita LoRA en opciones avanzadas
  • Reduce el tamaño del batch
  • Habilita cuantización (int4)
  • Verifica el formato de tu dataset - Prueba una tasa de aprendizaje más alta
  • Asegúrate de que tus datos tengan las columnas correctas
  • Habilita precisión mixta (bf16) en opciones avanzadas
  • Usa un dataset más pequeño primero
  • Habilita LoRA

Próximos Pasos