Entrenamiento LLM
El comando aitraining llm entrena modelos de lenguaje grandes con soporte para múltiples trainers y técnicas.
Inicio Rápido
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--trainer sft
Trainers Disponibles
| Trainer | Descripción |
|---|
default / sft / generic | Fine-tuning supervisado |
dpo | Optimización Directa de Preferencias |
orpo | Optimización de Razón de Probabilidades de Preferencias |
ppo | Optimización de Política Proximal |
grpo | Optimización de Política Relativa de Grupo (entornos personalizados) |
reward | Entrenamiento de modelo de recompensa |
distillation | Distilación de conocimiento |
generic es un alias para default. Los tres (default, sft, generic) producen el mismo comportamiento.
Requisitos del Trainer PPO: PPO requiere --rl-reward-model-path (ruta a un modelo de recompensa entrenado) o --model-ref (modelo de referencia para divergencia KL). Ver Entrenamiento PPO para documentación completa.
Requisitos del Trainer GRPO: GRPO requiere --rl-env-module (ruta del módulo Python) y --rl-env-class (nombre de la clase) para el entorno personalizado. Ver Entrenamiento GRPO para documentación completa.
Grupos de Parámetros
Los parámetros están organizados en grupos lógicos:
Parámetros Básicos
| Parameter | Description | Default |
|---|
--model | Base model to fine-tune | google/gemma-3-270m |
--data-path | Path to training data | data |
--project-name | Output directory name | project-name |
--train-split | Training data split | train |
--valid-split | Validation data split | None |
Siempre especifica estos parámetros: Aunque --model, --data-path y --project-name tienen valores predeterminados, siempre debes establecerlos explícitamente para tu caso de uso. El parámetro --project-name establece la carpeta de salida - usa una ruta como --project-name ./models/my-experiment para controlar dónde se guarda el modelo entrenado.
Configuración de Entrenamiento
| Parameter | Description | Default |
|---|
--trainer | Training method | default |
--epochs | Number of training epochs | 1 |
--batch-size | Training batch size | 2 |
--lr | Learning rate | 3e-5 |
--mixed-precision | fp16/bf16/None | None |
--gradient-accumulation | Accumulation steps | 4 |
--warmup-ratio | Warmup ratio | 0.1 |
--optimizer | Optimizer | adamw_torch |
--scheduler | LR scheduler | linear |
--weight-decay | Weight decay | 0.0 |
--max-grad-norm | Max gradient norm | 1.0 |
--seed | Random seed | 42 |
Checkpointing y Evaluación
| Parameter | Description | Default |
|---|
--eval-strategy | When to evaluate (epoch, steps, no) | epoch |
--save-strategy | When to save (epoch, steps, no) | epoch |
--save-steps | Save every N steps (if save-strategy=steps) | 500 |
--save-total-limit | Max checkpoints to keep | 1 |
--logging-steps | Log every N steps (-1 for auto) | -1 |
Rendimiento y Memoria
| Parameter | Description | Default |
|---|
--auto-find-batch-size | Automatically find optimal batch size | False |
--disable-gradient-checkpointing | Disable memory optimization | False |
--unsloth | Use Unsloth for faster training (SFT only, llama/mistral/gemma/qwen2) | False |
--use-sharegpt-mapping | Use Unsloth’s ShareGPT mapping | False |
--use-flash-attention-2 | Use Flash Attention 2 for faster training | False |
--attn-implementation | Attention implementation (eager, sdpa, flash_attention_2) | None |
Requisitos de Unsloth: Unsloth solo funciona con trainers sft/default y arquitecturas de modelo específicas (llama, mistral, gemma, qwen2). Ver Integración Unsloth para detalles.
Backend y Distribución
| Parameter | Description | Default |
|---|
--backend | Where to run (local, spaces) | local |
--distributed-backend | Distribution backend (ddp, deepspeed) | None |
--ddp-timeout | DDP/NCCL timeout in seconds | 7200 |
Comportamiento Multi-GPU: Con múltiples GPUs y --distributed-backend no establecido, DDP se usa automáticamente. Establece --distributed-backend deepspeed para optimización DeepSpeed Zero-3. El entrenamiento se lanza vía Accelerate.
Checkpointing DeepSpeed: Al usar DeepSpeed, el guardado del modelo usa accelerator.get_state_dict() y desempaqueta el modelo. El guardado del adaptador PEFT se maneja de forma diferente bajo DeepSpeed.
Parámetros PEFT/LoRA
| Parameter | Description | Default |
|---|
--peft | Enable LoRA training | False |
--lora-r | LoRA rank | 16 |
--lora-alpha | LoRA alpha | 32 |
--lora-dropout | LoRA dropout | 0.05 |
--target-modules | Modules to target | all-linear |
--quantization | int4/int8 quantization | None |
--merge-adapter | Merge LoRA after training | True |
Procesamiento de Datos
| Parameter | Description | Default |
|---|
--text-column | Text column name | text |
--block-size | Max sequence length | -1 (model default) |
--model-max-length | Maximum model input length | Auto-detect from model |
--padding | Padding side (left or right) | right |
--add-eos-token | Append EOS token | True |
--chat-template | Chat template to use | Auto by trainer |
--packing | Enable sequence packing (requires flash attention) | None |
--auto-convert-dataset | Auto-detect and convert dataset format | False |
--max-samples | Limit dataset size for testing | None |
--save-processed-data | Save processed data: auto, local, hub, both, none | auto |
Selección Automática de Plantilla de Chat: Los trainers SFT/DPO/ORPO/Reward usan tokenizer (plantilla integrada del modelo) por defecto. Usa --chat-template none para entrenamiento de texto plano.
Guardado de Datos Procesados: Por defecto (auto), los datos procesados se guardan localmente en {project}/data_processed/. Si el dataset fuente era del Hub, también se sube como dataset privado. Las columnas originales se renombran a _original_* para prevenir conflictos.
Ejemplos de Entrenamiento
SFT with LoRA
aitraining llm --train \
--model meta-llama/Llama-3.2-1B \
--data-path ./conversations.jsonl \
--project-name llama-sft \
--trainer sft \
--peft \
--lora-r 16 \
--lora-alpha 32 \
--epochs 3 \
--batch-size 4
Entrenamiento DPO
Para DPO, debes especificar los nombres de las columnas para prompt, respuesta elegida y respuesta rechazada:
aitraining llm --train \
--model meta-llama/Llama-3.2-1B \
--data-path ./preferences.jsonl \
--project-name llama-dpo \
--trainer dpo \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected \
--dpo-beta 0.1 \
--peft \
--lora-r 16
DPO y ORPO requieren que se especifiquen --prompt-text-column y --rejected-text-column.
Entrenamiento ORPO
ORPO combina SFT y optimización de preferencias:
aitraining llm --train \
--model google/gemma-2-2b \
--data-path ./preferences.jsonl \
--project-name gemma-orpo \
--trainer orpo \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected \
--peft
Entrenamiento GRPO
Entrena con Group Relative Policy Optimization usando tu propio entorno de recompensa:
aitraining llm --train \
--model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
--trainer grpo \
--rl-env-module my_envs.hotel_env \
--rl-env-class HotelEnv \
--rl-num-generations 4 \
--rl-max-new-tokens 256 \
--peft \
--lr 1e-5
GRPO genera múltiples completaciones por prompt, las puntúa mediante tu entorno (0-1), y optimiza la política. Ver Entrenamiento GRPO para detalles de la interfaz del entorno.
Distilación de Conocimiento
Entrena un modelo más pequeño para imitar uno más grande:
aitraining llm --train \
--model google/gemma-3-270m \
--teacher-model google/gemma-2-2b \
--data-path ./prompts.jsonl \
--project-name distilled-model \
--use-distillation \
--distill-temperature 3.0
Valores predeterminados de distilación: --distill-temperature 3.0, --distill-alpha 0.7, --distill-max-teacher-length 512
Logging y Monitorización
Weights & Biases (Predeterminado)
El logging W&B con visualizador LEET está habilitado por defecto. El visualizador LEET muestra métricas de entrenamiento en tiempo real directamente en tu terminal.
# W&B is on by default - just run training
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model
Para deshabilitar W&B o el visualizador:
# Disable W&B logging entirely
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--log none
# Keep W&B but disable terminal visualizer
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--no-wandb-visualizer
TensorBoard
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--log tensorboard
Push a Hugging Face Hub
Sube tu modelo entrenado:
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--push-to-hub \
--username your-username \
--token $HF_TOKEN
El repositorio se crea como privado por defecto. Por defecto, el repositorio se nombrará {username}/{project-name}.
Nombre de Repositorio Personalizado u Organización
Usa --repo-id para subir a un repositorio específico, útil para:
- Subir a una organización en lugar de tu cuenta personal
- Usar un nombre de repo diferente a tu
project-name local
# Subir a una organización
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name ./local-training-output \
--push-to-hub \
--repo-id my-organization/my-custom-model-name \
--token $HF_TOKEN
# Subir a cuenta personal con nombre diferente
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name ./experiment-v3 \
--push-to-hub \
--repo-id your-username/production-model \
--token $HF_TOKEN
| Parámetro | Descripción | Por Defecto |
|---|
--push-to-hub | Habilitar subida al Hub | False |
--username | Usuario HF (para nombrado de repo por defecto) | None |
--token | Token API de HF | None |
--repo-id | ID completo del repo (ej: org/model-name) | {username}/{project-name} |
Al usar --repo-id, no necesitas --username ya que el ID del repo ya especifica el destino. Sin embargo, aún necesitas --token para autenticación.
Opciones Avanzadas
Barridos de Hiperparámetros
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name sweep-experiment \
--use-sweep \
--sweep-backend optuna \
--sweep-n-trials 10
Evaluación Mejorada
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--use-enhanced-eval \
--eval-metrics "perplexity,bleu"
Ver Todos los Parámetros
Ver todos los parámetros para un trainer específico:
aitraining llm --trainer sft --help
aitraining llm --trainer dpo --help
Próximos Pasos