TRL documentation

BEMA untuk Model Referensi

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

and get access to the augmented documentation experience

to get started

BEMA untuk Model Referensi

Fitur ini mengimplementasikan algoritma BEMA untuk memperbarui model referensi selama pelatihan DPO.

Penggunaan

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

kelas trl.DPOTrainer

< >

( *args**kwargs )

latih

< >

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

Parameter

  • resume_from_checkpoint (str atau bool, opsional) — Jika berupa str, jalur lokal ke checkpoint yang disimpan oleh instance Trainer sebelumnya. Jika berupa bool dan bernilai True, muat checkpoint terakhir di args.output_dir yang disimpan oleh instance Trainer sebelumnya. Jika ada, pelatihan akan dilanjutkan dari status model/optimizer/scheduler yang dimuat di sini.
  • trial (optuna.Trial atau dict[str, Any], opsional) — Jalankan trial atau kamus hiperparameter untuk pencarian hiperparameter.
  • ignore_keys_for_eval (list[str], opsional) — Daftar kunci dalam output model Anda (jika berupa dictionary) yang harus diabaikan saat mengumpulkan prediksi untuk evaluasi selama pelatihan.

Mengembalikan

~trainer_utils.TrainOutput

Objek yang berisi jumlah langkah global, kerugian pelatihan, dan metrik.

Titik masuk utama pelatihan.

save_model

< >

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

Akan menyimpan model, sehingga Anda dapat memuatnya kembali menggunakan from_pretrained().

Hanya akan menyimpan dari proses utama.

push_to_hub

< >

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

Parameter

  • commit_message (str, opsional, default "End of training") — Pesan untuk commit saat melakukan push.
  • blocking (bool, opsional, default True) — Apakah fungsi harus hanya mengembalikan nilai setelah git push selesai.
  • token (str, opsional, defaultnya None) — Token dengan izin tulis untuk menimpa argumen asli Trainer.
  • revision (str, opsional) — Revisi git untuk di-commit. Secara default menggunakan head dari branch “main”.
  • private (bool, opsional) — Apakah membuat repo menjadi privat saat dibuat. Defaultnya adalah args.hub_private_repo. Tidak berpengaruh jika repo sudah ada.
  • kwargs (dict[str, Any], opsional) — Argumen kata kunci tambahan yang diteruskan ke ~Trainer.create_model_card.

Unggah self.model dan self.processing_class ke 🤗 model hub di repo self.args.hub_model_id.

BEMACallback

kelas 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 )

Parameter

  • update_freq (int, opsional, defaultnya 400) — Perbarui bobot BEMA setiap X langkah. Dinotasikan sebagai {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} dalam makalah. Untuk menonaktifkan EMA, atur ini ke 0.0.
  • bias_power (float, opsional, defaultnya 0.2) — Daya untuk faktor penskalaan BEMA. Dilambangkan dengan {@html "η \\eta η"} dalam makalah. Nilai besar (misalnya 8.0) membuat {@html "αt \\alpha_t αt​"} meluruh ke 0, mendekati koreksi bias yang dinonaktifkan; 0.0 justru mengunci {@html "αt \\alpha_t αt​"} pada 1 untuk setiap langkah (koreksi maksimum, tanpa peluruhan). lag (int, opsional, defaultnya 10) — Offset awal dalam jadwal weight decay yang mengontrol kehalusan tahap awal dengan bertindak sebagai usia awal virtual untuk pembaruan. Dilambangkan sebagai {@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 ρ"} dalam makalah.
  • update_after (int, opsional, defaultnya 0) — Waktu burn-in sebelum mulai memperbarui bobot BEMA. Dilambangkan dengan {@html "τ \\tau τ"} dalam makalah. multiplier (float, opsional, defaultnya 1.0) — Nilai awal untuk faktor peluruhan EMA. Dilambangkan sebagai {@html "γ \\gamma γ "}τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} dalam makalah.
  • min_ema_multiplier (float, opsional, defaultnya 0.0) — Nilai minimum untuk faktor peluruhan EMA.
  • device (str, opsional, default "cpu") — Perangkat yang digunakan untuk buffer BEMA, misalnya "cpu" atau "cuda". Perhatikan bahwa dalam kebanyakan kasus, perangkat ini HARUS BERBEDA dari perangkat yang digunakan untuk pelatihan guna menghindari OOM.
  • update_ref_model (bool, opsional, default False) — Apakah akan memperbarui model referensi dengan bobot BEMA. Hal ini membuat versi tertunda dan halus dari model utama sebagai model referensi.
  • ref_model_update_freq (int, opsional, default 400) — Perbarui model referensi dengan bobot BEMA setiap sejumlah langkah ini.
  • ref_model_update_after (int, opsional, default 0) — Jumlah langkah yang harus ditunggu sebelum mulai memperbarui model referensi.

TrainerCallback yang mengimplementasikan BEMA (Bias-Corrected Exponential Moving Average) oleh Adam Block dan Cyril Zhang. Kode dari https://github.com/abblock/bema di bawah lisensi MIT.

BEMA menghitung bobot model yang berskala seperti: θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

di mana θt \theta_t adalah bobot model saat ini, θ0 \theta_0 adalah snapshot bobot model pada langkah pertama update_after langkah, EMAt \text{EMA}_t adalah rata-rata bergerak eksponensial dari bobot model, danαt \alpha_t adalah faktor penskalaan yang meluruh seiring jumlah langkah t t sebagai αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

EMA dihitung sebagai: EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

di mana βt \beta_t adalah faktor peluruhan yang meluruh seiring jumlah langkah t t sebagai βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

Contoh:

>>> from trl import BEMACallback

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