TRL documentation
Referans Model için BEMA
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
eğit
< source >( 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 (
strveyabool, isteğe bağlı) —strise, önceki birTrainerörneği tarafından kaydedilen bir kontrol noktasının yerel yolu.boolise veTruedeğerine eşitse, önceki birTrainerö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.Trialveyadict[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ı.
Modeli kaydeder, böylece from_pretrained() kullanarak yeniden yükleyebilirsiniz.
Yalnızca ana süreçten kaydedecektir.
push_to_hub
< source >( 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ılanTrue) — Fonksiyonun yalnızcagit pushişlemi tamamlandığında mı değer döndürmesi gerektiğini belirtir. - token (
str, isteğe bağlı, varsayılanNone) — 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_cardile 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
< source >( 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 olarak400) — BEMA ağırlıklarını her X adımda günceller. Makalede buna {@html "ϕ"} in the paper. - ema_power (
float, optional, defaults to0.5) — Power for the EMA decay factor. Denoted {@html "κ "} denir. EMA'yı devre dışı bırakmak için bunu0.0. - bias_power (
float, isteğe bağlı, varsayılan olarak0.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 ρ "}η"} in the paper. A large value (e.g.8.0) makes {@html "αt"} decay to0, approximating disabled bias-correction;0.0instead pins {@html "αt"} at1for every step (maximum, undecayed correction). - lag (
int, optional, defaults to10) — 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 "ρ"} ile gösterilir. - update_after (
int, isteğe bağlı, varsayılan olarak0) — BEMA ağırlıklarını güncellemeye başlamadan önceki ısınma süresi. Makalede {@html "τ"} in the paper. - multiplier (
float, optional, defaults to1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ"} olarak gösterilir. - min_ema_multiplier (
float, isteğe bağlı, varsayılan0.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ılanFalse) — 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ılan400) — Referans modeli, bu adımda bir BEMA ağırlıklarıyla günceller. - ref_model_update_after (
int, isteğe bağlı, varsayılan0) — 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:
burada mevcut model ağırlıklarıdır, ilk update_after adımındaki model ağırlıklarının bir anlık görüntüsüdür, model ağırlıklarının üstel hareketli ortalamasıdır ve adım sayısıyla birlikte azalan bir ölçekleme faktörüdür şeklinde
EMA şu şekilde hesaplanır:
burada adım sayısıyla azalan bir sönümleme katsayısıdır şeklinde