Varreduras de Hiperparâmetros
Pesquise automaticamente os melhores hiperparâmetros.
Início 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 | Descrição | Padrão |
|---|
use_sweep | Habilitar varredura | False |
sweep_backend | Backend (optuna, grid, random) | optuna |
sweep_n_trials | Número de tentativas | 10 |
sweep_metric | Métrica para otimizar | eval_loss |
sweep_direction | minimizar ou maximizar | minimize |
sweep_params | Espaço de busca personalizado (string JSON) | None (automático) |
Espaços de Busca
Espaço de Busca Padrão
Por padrão, as varreduras pesquisam sobre:
- Taxa de aprendizado: 1e-5 a 1e-3 (uniforme log)
- Tamanho do batch: 2, 4, 8, 16 (categórico)
- Razão de warmup: 0.0 a 0.2 (uniforme)
O rank LoRA NÃO está incluído na varredura padrão. Adicione manualmente via sweep_params se necessário.
Espaço de Busca Personalizado
O parâmetro sweep_params espera uma string 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 Varredura
Optuna
Otimização bayesiana eficiente:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="optuna",
)
Busca em Grade
Busca exaustiva sobre todas as combinações:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="grid",
)
Busca Aleatória
Amostragem aleatória do espaço de busca:
params = LLMTrainingParams(
...
use_sweep=True,
sweep_backend="random",
)
Métricas
Métricas Padrão
| Métrica | Descrição |
|---|
eval_loss | Perda de validação |
train_loss | Perda de treinamento |
accuracy | Precisão de classificação |
perplexity | Perplexidade do modelo de linguagem |
Métricas de Avaliação Aprimoradas
Habilite use_enhanced_eval para acessar métricas adicionais:
| Métrica | Descrição |
|---|
perplexity | Perplexidade do modelo de linguagem (padrão) |
bleu | Pontuação BLEU para tradução/geração |
rouge | Pontuação ROUGE para sumarização |
bertscore | BERTScore para similaridade semântica |
accuracy | Precisão de classificação |
f1 | Pontuação F1 |
exact_match | Precisão de correspondência exata |
meteor | Pontuação METEOR |
Parâmetros de Avaliação Aprimorada
| Parâmetro | Descrição | Padrão |
|---|
use_enhanced_eval | Habilitar métricas aprimoradas | False |
eval_metrics | Métricas separadas por vírgula | "perplexity" |
eval_strategy | Quando avaliar (epoch, steps, no) | "epoch" |
eval_batch_size | Tamanho do batch para avaliação | 8 |
eval_dataset_path | Caminho para dataset de avaliação (se diferente) | None |
eval_save_predictions | Salvar predições durante avaliação | False |
eval_benchmark | Executar benchmark padrão | None |
Benchmarks Padrão
Use eval_benchmark para executar benchmarks padrão de LLM:
| Benchmark | Descrição |
|---|
mmlu | Massive Multitask Language Understanding |
hellaswag | Raciocínio de senso comum HellaSwag |
arc | AI2 Reasoning Challenge |
truthfulqa | Veracidade TruthfulQA |
Exemplo 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,
)
Exemplo: Encontrar Melhor 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
Visualize varreduras na interface web do W&B.
Melhores Práticas
- Comece pequeno - 10-20 tentativas para exploração inicial
- Use early stopping - Pare tentativas ruins cedo
- Fix o que você sabe - Varre apenas parâmetros incertos
- Use dados de validação - Sempre tenha divisão de avaliação
Próximos Passos