TRL documentation
BEMA pour le modèle de référence
BEMA pour le modèle de référence
Cette fonctionnalité implémente l'algorithme BEMA pour mettre à jour le modèle de référence pendant l'entraînement DPO.
Utilisation
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
train
< 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
Paramètres
- resume_from_checkpoint (
stroubool, facultatif) — Si c'est unestr, chemin local d'un point de contrôle enregistré par une instance précédente deTrainer. Si c'est unboolet vautTrue, charge le dernier point de contrôle dans args.output_dir enregistré par une instance précédente deTrainer. S'il est présent, l'entraînement reprendra à partir des états du modèle/optimiseur/planificateur chargés ici. - trial (
optuna.Trialoudict[str, Any], facultatif) — L’exécution de l’essai ou le dictionnaire d’hyperparamètres pour la recherche d’hyperparamètres. - ignore_keys_for_eval (
list[str], facultatif) — Une liste de clés dans la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions pour l’évaluation pendant l’entraînement.
Retourne
~trainer_utils.TrainOutput
Objet contenant le nombre d'étapes globales, la perte d'entraînement et les métriques.
Point d'entrée principal de l'entraînement.
Enregistrera le modèle, ce qui vous permettra de le recharger à l'aide de from_pretrained().
N'enregistrera que depuis le processus principal.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = None**kwargs )
Paramètres
- commit_message (
str, facultatif, par défaut"End of training") — Message à committer lors de la poussée. - blocking (
bool, facultatif, par défautTrue) — Indique si la fonction doit ne renvoyer que lorsque legit pushest terminé. - token (
str, facultatif, par défautNone) — Jeton avec permission d’écriture pour écraser les arguments originaux du Trainer. - revision (
str, facultatif) — La révision git à partir de laquelle effectuer le commit. Par défaut, il s'agit de la tête de la branche « main ». - kwargs (
dict[str, Any], facultatif) — Arguments supplémentaires passés à~Trainer.create_model_card.
Téléchargez self.model et self.processing_class sur le hub de modèles 🤗 dans le dépôt self.args.hub_model_id.
BEMACallback
classe 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 )
Paramètres
- update_freq (
int, facultatif, par défaut400) — Mettre à jour les poids BEMA toutes les X étapes. Noté {@html "ϕ"} in the paper. - ema_power (
float, optional, defaults to0.5) — Power for the EMA decay factor. Denoted {@html "κ "} dans l'article. Pour désactiver l'EMA, définissez cette valeur sur0.0. - bias_power (
float, facultatif, valeur par défaut0.2) — Puissance du facteur d'échelle BEMA. Noté {@html "η \\eta η"} dans l'article. Une valeur élevée (par ex. 8.0) fait décroître {@html "αt \\alpha_t αt"} vers 0, ce qui approxime une correction de biais désactivée ; 0.0 fixe au contraire {@html "αt \\alpha_t αt"} à 1 à chaque étape (correction maximale, non atténuée). lag (int, facultatif, valeur par défaut 10) — Décalage initial dans le calendrier de décroissance du poids qui contrôle la fluidité des premières étapes en agissant comme un âge de départ virtuel pour les mises à jour. Noté {@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 "ρ"} dans l'article. - update_after (
int, facultatif, valeur par défaut0) — Durée de préchauffage avant de commencer à mettre à jour les poids de BEMA. Noté {@html "τ"} in the paper. - multiplier (
float, optional, defaults to1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ"} dans l'article. - min_ema_multiplier (
float, facultatif, valeur par défaut0.0) — Valeur minimale pour le facteur de décroissance de l'EMA. - device (
str, facultatif, par défaut"cpu") — Appareil à utiliser pour les tampons BEMA, par exemple"cpu"ou"cuda". Notez que dans la plupart des cas, cet appareil DOIT ÊTRE DIFFÉRENT de celui utilisé pour l'entraînement afin d'éviter les erreurs OOM. - update_ref_model (
bool, facultatif, valeur par défautFalse) — Indique s'il faut mettre à jour le modèle de référence avec les poids BEMA. Cela crée une version retardée et lissée du modèle principal en tant que modèle de référence. - ref_model_update_freq (
int, facultatif, valeur par défaut400) — Mettre à jour le modèle de référence avec les poids BEMA toutes les X étapes. - ref_model_update_after (
int, facultatif, par défaut0) — Nombre d'étapes à attendre avant de commencer à mettre à jour le modèle de référence.
Un TrainerCallback qui implémente BEMA (moyenne mobile exponentielle corrigée du biais) de Adam Block et Cyril Zhang. Code issu de https://github.com/abblock/bema sous licence MIT.
BEMA calcule les poids du modèle qui évoluent comme suit :
où sont les poids actuels du modèle, est une copie des poids du modèle au premier update_after pas, est la moyenne mobile exponentielle des poids du modèle, et est un facteur d'échelle qui décroît avec le nombre de pas selon
L'EMA est calculée comme suit :
où est un facteur d'atténuation qui diminue avec le nombre d'étapes selon la formule