TRL documentation
BEMA untuk Model Referensi
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
latih
< 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
Parameter
- resume_from_checkpoint (
strataubool, opsional) — Jika berupastr, jalur lokal ke checkpoint yang disimpan oleh instanceTrainersebelumnya. Jika berupabooldan bernilaiTrue, muat checkpoint terakhir di args.output_dir yang disimpan oleh instanceTrainersebelumnya. Jika ada, pelatihan akan dilanjutkan dari status model/optimizer/scheduler yang dimuat di sini. - trial (
optuna.Trialataudict[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.
Akan menyimpan model, sehingga Anda dapat memuatnya kembali menggunakan from_pretrained().
Hanya akan menyimpan dari proses utama.
push_to_hub
< source >( 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, defaultTrue) — Apakah fungsi harus hanya mengembalikan nilai setelahgit pushselesai. - token (
str, opsional, defaultnyaNone) — 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 adalahargs.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
< 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 )
Parameter
- update_freq (
int, opsional, defaultnya400) — Perbarui bobot BEMA setiap X langkah. Dinotasikan sebagai {@html "ϕ"} in the paper. - ema_power (
float, optional, defaults to0.5) — Power for the EMA decay factor. Denoted {@html "κ "} dalam makalah. Untuk menonaktifkan EMA, atur ini ke0.0. - bias_power (
float, opsional, defaultnya0.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 ρ "}η"} 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 "ρ"} dalam makalah. - update_after (
int, opsional, defaultnya0) — 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 γ "}τ"} in the paper. - multiplier (
float, optional, defaults to1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ"} dalam makalah. - min_ema_multiplier (
float, opsional, defaultnya0.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, defaultFalse) — 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, default400) — Perbarui model referensi dengan bobot BEMA setiap sejumlah langkah ini. - ref_model_update_after (
int, opsional, default0) — 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:
di mana adalah bobot model saat ini, adalah snapshot bobot model pada langkah pertama update_after langkah, adalah rata-rata bergerak eksponensial dari bobot model, dan adalah faktor penskalaan yang meluruh seiring jumlah langkah sebagai
EMA dihitung sebagai:
di mana adalah faktor peluruhan yang meluruh seiring jumlah langkah sebagai