Transformers documentation

Pencarian hiperparameter

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Pencarian hiperparameter

Hyperparameter seperti learning rate, batch size, dan jumlah epoch sangat memengaruhi hasil pelatihan. Trainer.hyperparameter_search() menemukan kombinasi terbaik dengan menjalankan beberapa percobaan, masing-masing dengan set nilai yang berbeda, dan mengembalikan yang terbaik.

Setiap percobaan menginisialisasi model baru dengan model_init, mengambil sampel hiperparameter baru, menjalankan loop pelatihan penuh, dan melaporkan tujuan ke backend pencarian. Backend menggunakan setiap tujuan untuk menginformasikan percobaan berikutnya. Setelah semua percobaan selesai, hiperparameter terbaik dikembalikan dalam ~trainer.utils.BestRun.

Menginisialisasi model

Mulai setiap percobaan dengan model baru untuk menghindari state dari eksekusi sebelumnya. model_init dipanggil di awal setiap percobaan dan mengembalikan instance model baru, sehingga setiap percobaan dimulai dari bobot awal yang sama.

from transformers import AutoModelForCausalLM

def model_init(trial):
    return AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B")

trainer = Trainer(
    model_init=model_init,
    args=args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)

Jangan meneruskan model= dan model_init= bersamaan, atau Trainer akan memicu error.

Definisikan ruang pencarian

Buat fungsi yang mendefinisikan ruang pencarian. Formatnya bergantung pada backend. Jika Anda tidak mendefinisikan fungsi hp_space, pencarian default mencakup learning_rate, num_train_epochs, dan per_device_train_batch_size.

# install one of these hyperparam search backends
pip install optuna
pip install wandb
pip install ray[tune]
Optuna
Ray Tune
Weights & Biases

Optuna adalah kerangka kerja ringan untuk optimasi hiperparameter.

def hp_space(trial):
    return {
        "learning_rate": trial.suggest_float("learning_rate", 1e-6, 1e-4, log=True),
        "per_device_train_batch_size": trial.suggest_categorical("per_device_train_batch_size", [16, 32, 64, 128]),
    }

Jalankan pencarian

Sediakan fungsi compute_objective opsional untuk mendefinisikan target optimasi. Nilainya secara default adalah eval_loss jika ada, atau jumlah dari semua nilai metrik jika tidak. Sampaikan fungsi eksplisit untuk menghindari ketergantungan pada fallback ini. backend pencarian mengoptimalkan tujuan tersebut selama n_trials eksekusi dalam direction tertentu.

def compute_objective(metrics):
    return metrics["eval_loss"]

best_run = trainer.hyperparameter_search(
    hp_space=hp_space,
    compute_objective=compute_objective,
    n_trials=30,               # how many trials to run
    direction="minimize",      # or "maximize" for metrics like accuracy/F1
    backend="optuna",          # "optuna", "ray", or "wandb"
)

hyperparameter_search() mengembalikan ~trainer.utils.BestRun yang berisi nilai objektif dan kombinasi hyperparameter terbaik.

best_run = trainer.hyperparameter_search(...)

best_run.objective        # 0.38  (best eval loss)
best_run.hyperparameters  # {"learning_rate": 5e-5, "num_train_epochs": 4, ...}

Terapkan hiperparameter terbaik ke TrainingArguments dan latih ulang pada dataset lengkap.

Update on GitHub