Transformers documentation
Hiperparametre araması
Hiperparametre araması
Öğrenme oranı, parti boyutu ve epoch sayısı gibi hiperparametreler eğitim sonuçlarını önemli ölçüde etkiler. Trainer.hyperparameter_search(), farklı değer setleriyle birden fazla deneme çalıştırarak en iyi kombinasyonu bulur ve en iyisini döndürür.
Her deneme, model_init ile taze bir model başlatır, yeni hiperparametreler örnekler, tam bir eğitim döngüsü çalıştırır ve arama arka ucuna bir hedef bildirir. Arka uç, her hedefi bir sonraki denemeyi bilgilendirmek için kullanır. Tüm denemeler tamamlandıktan sonra, en iyi hiperparametreler bir ~trainer.utils.BestRun içinde döndürülür.
Bir modelin başlatılması
Her denemeyi önceki çalıştırmaların durumundan kaçınmak için taze bir modelle başlatın. model_init, her denemenin başında çağrılır ve yeni bir model örneği döndürür; böylece her deneme aynı başlangıç ağırlıklarından başlar.
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,
)model= ve model_init= parametrelerini birlikte geçirmeyin; aksi takdirde Trainer bir hata fırlatır.
Arama alanını tanımlayın
Arama uzayını tanımlayan bir fonksiyon oluşturun. Biçim, arka uca (backend) bağlıdır. hp_space fonksiyonu tanımlamazsanız, varsayılan arama learning_rate, num_train_epochs ve per_device_train_batch_size parametrelerini kapsar.
# install one of these hyperparam search backends
pip install optuna
pip install wandb
pip install ray[tune]Optuna, hiperparametre optimizasyonu için hafif bir çerçevedir.
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]),
}Ray Tune, denemeleri birden fazla makine arasında dağıtabilen ölçeklenebilir bir hiperparametre ayarlama kütüphanesidir.
from ray import tune
def hp_space(trial):
return {
"learning_rate": tune.loguniform(1e-6, 1e-4),
"per_device_train_batch_size": tune.choice([16, 32, 64, 128]),
}Weights & Biases, yerleşik hiperparametre arama özelliğine sahip bir deney izleme platformudur. Bayes, rastgele ve ızgara arama stratejilerini destekler.
def hp_space(trial):
return {
"method": "random",
"metric": {"name": "objective", "goal": "minimize"},
"parameters": {
"learning_rate": {"distribution": "uniform", "min": 1e-6, "max": 1e-4},
"per_device_train_batch_size": {"values": [16, 32, 64, 128]},
},
}Aramayı çalıştır
Optimizasyon hedefini tanımlamak için isteğe bağlı bir compute_objective işlevi sağlayın. Varsayılan olarak mevcut ise eval_loss, değilse tüm metrik değerlerinin toplamı kullanılır. Bu yedek davranışa güvenmemek için açık bir işlev geçirin. Arama backend'i, hedefi verilen bir direction içinde n_trials çalıştırma üzerinde optimize eder.
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(), hedef değerini ve en iyi hiperparametre kombinasyonunu içeren bir ~trainer.utils.BestRun döndürür.
best_run = trainer.hyperparameter_search(...)
best_run.objective # 0.38 (best eval loss)
best_run.hyperparameters # {"learning_rate": 5e-5, "num_train_epochs": 4, ...}En iyi hiperparametreleri TrainingArguments uygulayın ve tam veri setinde yeniden eğitin.
Update on GitHub