Saltar al contenido principal

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

TrainerDescripción
default / sft / genericFine-tuning supervisado
dpoOptimización Directa de Preferencias
orpoOptimización de Razón de Probabilidades de Preferencias
ppoOptimización de Política Proximal
rewardEntrenamiento de modelo de recompensa
distillationDistilació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.

Grupos de Parámetros

Los parámetros están organizados en grupos lógicos:

Parámetros Básicos

ParameterDescriptionDefault
--modelBase model to fine-tunegoogle/gemma-3-270m
--data-pathPath to training datadata
--project-nameOutput directory nameproject-name
--train-splitTraining data splittrain
--valid-splitValidation data splitNone
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

ParameterDescriptionDefault
--trainerTraining methoddefault
--epochsNumber of training epochs1
--batch-sizeTraining batch size2
--lrLearning rate3e-5
--mixed-precisionfp16/bf16/NoneNone
--gradient-accumulationAccumulation steps4
--warmup-ratioWarmup ratio0.1
--optimizerOptimizeradamw_torch
--schedulerLR schedulerlinear
--weight-decayWeight decay0.0
--max-grad-normMax gradient norm1.0
--seedRandom seed42

Checkpointing y Evaluación

ParameterDescriptionDefault
--eval-strategyWhen to evaluate (epoch, steps, no)epoch
--save-strategyWhen to save (epoch, steps, no)epoch
--save-stepsSave every N steps (if save-strategy=steps)500
--save-total-limitMax checkpoints to keep1
--logging-stepsLog every N steps (-1 for auto)-1

Rendimiento y Memoria

ParameterDescriptionDefault
--auto-find-batch-sizeAutomatically find optimal batch sizeFalse
--disable-gradient-checkpointingDisable memory optimizationFalse
--unslothUse Unsloth for faster training (SFT only, llama/mistral/gemma/qwen2)False
--use-sharegpt-mappingUse Unsloth’s ShareGPT mappingFalse
--use-flash-attention-2Use Flash Attention 2 for faster trainingFalse
--attn-implementationAttention 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

ParameterDescriptionDefault
--backendWhere to run (local, spaces)local
--distributed-backendDistribution backend (ddp, deepspeed)None
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

ParameterDescriptionDefault
--peftEnable LoRA trainingFalse
--lora-rLoRA rank16
--lora-alphaLoRA alpha32
--lora-dropoutLoRA dropout0.05
--target-modulesModules to targetall-linear
--quantizationint4/int8 quantizationNone
--merge-adapterMerge LoRA after trainingTrue

Procesamiento de Datos

ParameterDescriptionDefault
--text-columnText column nametext
--block-sizeMax sequence length-1 (model default)
--model-max-lengthMaximum model input length2048
--paddingPadding side (left or right)right
--add-eos-tokenAppend EOS tokenTrue
--chat-templateChat template to useAuto by trainer
--packingEnable sequence packing (requires flash attention)None
--auto-convert-datasetAuto-detect and convert dataset formatFalse
--max-samplesLimit dataset size for testingNone
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.

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

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. El repositorio se nombrará {username}/{project-name}.

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