Barridos de Hiperparámetros
Busca automáticamente los mejores hiperparámetros.
Inicio Rápido
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data.jsonl \
--project-name sweep-experiment \
--use-sweep \
--sweep-backend optuna \
--sweep-n-trials 20
Python API
from autotrain.trainers.clm.params import LLMTrainingParams
params = LLMTrainingParams(
model="google/gemma-3-270m",
data_path="./data.jsonl",
project_name="sweep-experiment",
# Enable sweep
use_sweep=True,
sweep_backend="optuna",
sweep_n_trials=20,
sweep_metric="eval_loss",
sweep_direction="minimize",
# Base parameters (sweep will vary some)
trainer="sft",
epochs=3,
batch_size=4,
lr=2e-5,
)
Parámetros
| Parámetro | Descripción | Por Defecto |
|---|
use_sweep | Habilitar barrido | False |
sweep_backend | Backend (optuna, grid, random) | optuna |
sweep_n_trials | Número de intentos | 10 |
sweep_metric | Métrica a optimizar | eval_loss |
sweep_direction | minimizar o maximizar | minimize |
sweep_params | Espacio de búsqueda personalizado (cadena JSON) | None (automático) |
Espacios de Búsqueda
Espacio de Búsqueda Por Defecto
Por defecto, los barridos buscan sobre:
- Tasa de aprendizaje: 1e-5 a 1e-3 (uniforme log)
- Tamaño de batch: 2, 4, 8, 16 (categórico)
- Ratio de warmup: 0.0 a 0.2 (uniforme)
El rango LoRA NO está incluido en el barrido por defecto. Añádelo manualmente vía sweep_params si es necesario.
Espacio de Búsqueda Personalizado
El parámetro sweep_params espera una cadena JSON:
import json
sweep_params = json.dumps({
"lr": {"type": "loguniform", "low": 1e-6, "high": 1e-3},
"batch_size": {"type": "categorical", "values": [2, 4, 8]},
"lora_r": {"type": "categorical", "values": [8, 16, 32, 64]},
"warmup_ratio": {"type": "uniform", "low": 0.0, "high": 0.2},
})
params = LLMTrainingParams(
...
use_sweep=True,
sweep_params=sweep_params, # JSON string
)
Backends de Barrido
Optuna
Optimización bayesiana eficiente:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="optuna",
)
Búsqueda en Rejilla
Búsqueda exhaustiva sobre todas las combinaciones:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="grid",
)
Búsqueda Aleatoria
Muestreo aleatorio del espacio de búsqueda:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="random",
)
Métricas
Métricas Estándar
| Métrica | Descripción |
|---|
eval_loss | Pérdida de validación |
train_loss | Pérdida de entrenamiento |
accuracy | Precisión de clasificación |
perplexity | Perplejidad del modelo de lenguaje |
Métricas de Evaluación Mejoradas
Habilita use_enhanced_eval para acceder a métricas adicionales:
| Métrica | Descripción |
|---|
perplexity | Perplejidad del modelo de lenguaje (por defecto) |
bleu | Puntuación BLEU para traducción/generación |
rouge | Puntuación ROUGE para resumen |
bertscore | BERTScore para similitud semántica |
accuracy | Precisión de clasificación |
f1 | Puntuación F1 |
exact_match | Precisión de coincidencia exacta |
meteor | Puntuación METEOR |
Parámetros de Evaluación Mejorada
| Parámetro | Descripción | Por Defecto |
|---|
use_enhanced_eval | Habilitar métricas mejoradas | False |
eval_metrics | Métricas separadas por comas | "perplexity" |
eval_strategy | Cuándo evaluar (epoch, steps, no) | "epoch" |
eval_batch_size | Tamaño de batch para evaluación | 8 |
eval_dataset_path | Ruta al dataset de evaluación (si diferente) | None |
eval_save_predictions | Guardar predicciones durante evaluación | False |
eval_benchmark | Ejecutar benchmark estándar | None |
Benchmarks Estándar
Usa eval_benchmark para ejecutar benchmarks estándar de LLM:
| Benchmark | Descripción |
|---|
mmlu | Massive Multitask Language Understanding |
hellaswag | Razonamiento de sentido común HellaSwag |
arc | AI2 Reasoning Challenge |
truthfulqa | Veracidad TruthfulQA |
Ejemplo de Métricas Personalizadas
params = LLMTrainingParams(
...
use_sweep=True,
sweep_metric="bleu",
use_enhanced_eval=True,
eval_metrics="bleu,rouge,bertscore",
eval_batch_size=8,
)
Ejemplo: Encontrar Mejor LR
import json
params = LLMTrainingParams(
model="google/gemma-3-270m",
data_path="./data.jsonl",
project_name="lr-sweep",
use_sweep=True,
sweep_n_trials=10,
sweep_params=json.dumps({
"lr": {"type": "loguniform", "low": 1e-6, "high": 1e-3},
}),
# Fixed parameters
trainer="sft",
epochs=1,
batch_size=4,
)
Visualizando Resultados
Dashboard Optuna
pip install optuna-dashboard
optuna-dashboard sqlite:///optuna.db
Dashboard W&B
Visualiza barridos en la interfaz web de W&B.
Mejores Prácticas
- Comienza pequeño - 10-20 intentos para exploración inicial
- Usa early stopping - Detén intentos malos temprano
- Fija lo que sabes - Solo barre parámetros inciertos
- Usa datos de validación - Siempre ten división de evaluación
Próximos Pasos