Pular para o conteúdo principal

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âmetroDescriçãoPadrão
use_sweepHabilitar varreduraFalse
sweep_backendBackend (optuna, grid, random)optuna
sweep_n_trialsNúmero de tentativas10
sweep_metricMétrica para otimizareval_loss
sweep_directionminimizar ou maximizarminimize
sweep_paramsEspaç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étricaDescrição
eval_lossPerda de validação
train_lossPerda de treinamento
accuracyPrecisão de classificação
perplexityPerplexidade do modelo de linguagem

Métricas de Avaliação Aprimoradas

Habilite use_enhanced_eval para acessar métricas adicionais:
MétricaDescrição
perplexityPerplexidade do modelo de linguagem (padrão)
bleuPontuação BLEU para tradução/geração
rougePontuação ROUGE para sumarização
bertscoreBERTScore para similaridade semântica
accuracyPrecisão de classificação
f1Pontuação F1
exact_matchPrecisão de correspondência exata
meteorPontuação METEOR

Parâmetros de Avaliação Aprimorada

ParâmetroDescriçãoPadrão
use_enhanced_evalHabilitar métricas aprimoradasFalse
eval_metricsMétricas separadas por vírgula"perplexity"
eval_strategyQuando avaliar (epoch, steps, no)"epoch"
eval_batch_sizeTamanho do batch para avaliação8
eval_dataset_pathCaminho para dataset de avaliação (se diferente)None
eval_save_predictionsSalvar predições durante avaliaçãoFalse
eval_benchmarkExecutar benchmark padrãoNone

Benchmarks Padrão

Use eval_benchmark para executar benchmarks padrão de LLM:
BenchmarkDescrição
mmluMassive Multitask Language Understanding
hellaswagRaciocínio de senso comum HellaSwag
arcAI2 Reasoning Challenge
truthfulqaVeracidade 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

  1. Comece pequeno - 10-20 tentativas para exploração inicial
  2. Use early stopping - Pare tentativas ruins cedo
  3. Fix o que você sabe - Varre apenas parâmetros incertos
  4. Use dados de validação - Sempre tenha divisão de avaliação

Próximos Passos