TRL documentation

Referans Model için BEMA

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

and get access to the augmented documentation experience

to get started

Referans Model için BEMA

Bu özellik, DPO eğitimi sırasında referans modelin güncellenmesi için BEMA algoritmasını uygular.

Kullanım

from trl.experimental.bema_for_ref_model import BEMACallback, DPOTrainer
from datasets import load_dataset

dataset = load_dataset("trl-internal-testing/zen", "standard_preference", split="train")

bema_callback = BEMACallback(update_ref_model=True)

trainer = DPOTrainer(
    model="trl-internal-testing/tiny-Qwen2ForCausalLM-2.5",
    train_dataset=dataset,
    callbacks=[bema_callback],
)
trainer.train()

DPOTrainer

sınıf trl.DPOTrainer

< >

( *args**kwargs )

eğit

< >

( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → ~trainer_utils.TrainOutput

Parametreler

  • resume_from_checkpoint (str veya bool, isteğe bağlı) — str ise, önceki bir Trainer örneği tarafından kaydedilen bir kontrol noktasının yerel yolu. bool ise ve True değerine eşitse, önceki bir Trainer örneği tarafından args.output_dir içinde kaydedilen son kontrol noktasını yükler. Mevcutsa, eğitim burada yüklenen model/optimizör/zamanlayıcı durumlarından devam eder.
  • trial (optuna.Trial veya dict[str, Any], isteğe bağlı) — Hiperparametre araması için deneme çalışması veya hiperparametre sözlüğü.
  • ignore_keys_for_eval (list[str], isteğe bağlı) — Eğitim sırasında değerlendirme için tahminleri toplarken göz ardı edilmesi gereken, model çıktısındaki (bir sözlükse) anahtarların listesi.

Dönüş değeri

~trainer_utils.TrainOutput

Küresel adım sayısını, eğitim kaybını ve metrikleri içeren nesne.

Ana eğitim giriş noktası.

save_model

< >

( output_dir: str | None = None_internal_call: bool = False )

Modeli kaydeder, böylece from_pretrained() kullanarak yeniden yükleyebilirsiniz.

Yalnızca ana süreçten kaydedecektir.

push_to_hub

< >

( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = None**kwargs )

Parametreler

  • commit_message (str, isteğe bağlı, varsayılan "End of training") — İterlerken gönderilecek mesaj.
  • blocking (bool, isteğe bağlı, varsayılan True) — Fonksiyonun yalnızca git push işlemi tamamlandığında mı değer döndürmesi gerektiğini belirtir.
  • token (str, isteğe bağlı, varsayılan None) — Trainer'ın orijinal argümanlarını üzerine yazma iznine sahip jeton.
  • revision (str, isteğe bağlı) — Commit'in alınacağı git revizyonu. Varsayılan olarak “main” dalının başıdır.
  • kwargs (dict[str, Any], isteğe bağlı) — ~Trainer.create_model_card ile birlikte iletilen ek anahtar kelime argümanları.

self.model ve self.processing_class öğelerini self.args.hub_model_id deposundaki 🤗 model hub'ına yükleyin.

BEMACallback

sınıf trl.BEMACallback

< >

( update_freq: int = 400ema_power: float = 0.5bias_power: float = 0.2lag: int = 10update_after: int = 0multiplier: float = 1.0min_ema_multiplier: float = 0.0device: str = 'cpu'update_ref_model: bool = Falseref_model_update_freq: int = 400ref_model_update_after: int = 0 )

Parametreler

  • update_freq (int, isteğe bağlı, varsayılan olarak 400) — BEMA ağırlıklarını her X adımda günceller. Makalede buna {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} denir. EMA'yı devre dışı bırakmak için bunu 0.0.
  • bias_power (float, isteğe bağlı, varsayılan olarak 0.2) — BEMA ölçekleme faktörü için güç. Makalede {@html "η \\eta η"} ile gösterilir. Büyük bir değer (ör. 8.0), {@html "αt \\alpha_t αt​"} değerini 0'a düşürerek önyargı düzeltmesinin devre dışı bırakılmasını taklit eder; 0.0 değeri ise {@html "αt \\alpha_t αt​"} değerini her adımda 1'de sabitler (maksimum, azalmamış düzeltme). lag (int, isteğe bağlı, varsayılan olarak 10) — Ağırlık azalma zamanlamasındaki başlangıç ofseti, güncellemeler için sanal bir başlangıç yaşı görevi görerek erken aşamadaki pürüzsüzlüğü kontrol eder. Makalede {@html "ρ \\rho ρ "}η \\eta η"} in the paper. A large value (e.g. 8.0) makes {@html "αt \\alpha_t αt​"} decay to 0, approximating disabled bias-correction; 0.0 instead pins {@html "αt \\alpha_t αt​"} at 1 for every step (maximum, undecayed correction).
  • lag (int, optional, defaults to 10) — Initial offset in the weight decay schedule that controls early-stage smoothness by acting as a virtual starting age for the updates. Denoted as {@html "ρ \\rho ρ"} ile gösterilir.
  • update_after (int, isteğe bağlı, varsayılan olarak 0) — BEMA ağırlıklarını güncellemeye başlamadan önceki ısınma süresi. Makalede {@html "τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} olarak gösterilir.
  • min_ema_multiplier (float, isteğe bağlı, varsayılan 0.0) — EMA sönümleme katsayısı için minimum değer.
  • device (str, isteğe bağlı, varsayılan "cpu") — BEMA tamponları için kullanılacak cihaz, örn. "cpu" veya "cuda". Çoğu durumda, OOM (bellek taşması) sorununu önlemek için bu cihazın, eğitimde kullanılan cihazdan FARKLI OLMASI GEREKTİĞİNİ unutmayın.
  • update_ref_model (bool, isteğe bağlı, varsayılan False) — Referans modelin BEMA ağırlıklarıyla güncellenip güncellenmeyeceğini belirtir. Bu, referans model olarak ana modelin gecikmeli ve yumuşatılmış bir versiyonunu oluşturur.
  • ref_model_update_freq (int, isteğe bağlı, varsayılan 400) — Referans modeli, bu adımda bir BEMA ağırlıklarıyla günceller.
  • ref_model_update_after (int, isteğe bağlı, varsayılan 0) — Referans modelin güncellenmeye başlamadan önce beklenmesi gereken adım sayısı.

Adam Block ve Cyril Zhang tarafından BEMA (Bias-Corrected Exponential Moving Average) uygulayan bir TrainerCallback. https://github.com/abblock/bema adresindeki kod, MIT lisansı altındadır.

BEMA, şu şekilde ölçeklenen model ağırlıklarını hesaplar: θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

burada θt \theta_t mevcut model ağırlıklarıdır, θ0 \theta_0 ilk update_after adımındaki model ağırlıklarının bir anlık görüntüsüdür, EMAt \text{EMA}_t model ağırlıklarının üstel hareketli ortalamasıdır veαt \alpha_t adım sayısıyla birlikte azalan bir ölçekleme faktörüdür t t şeklinde αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

EMA şu şekilde hesaplanır: EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

burada βt \beta_t adım sayısıyla azalan bir sönümleme katsayısıdır t t şeklinde βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

Örnek:

>>> from trl import BEMACallback

>>> trainer = Trainer(..., callbacks=[BEMACallback()])
Update on GitHub