TRL documentation
Callbacks
Callbacks
RichProgressCallback
Un TrainerCallback qui affiche la progression de l’entraînement ou de l’évaluation à l’aide de Rich.
LogCompletionsCallback
classe trl.LogCompletionsCallback
< source >( trainer: Trainergeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonenum_prompts: int | None = Nonefreq: int | None = None )
Paramètres
- trainer (
Trainer) — Trainer auquel le callback sera attaché. Le jeu de données d’évaluation du trainer doit inclure une colonne"prompt"contenant les prompts pour générer les complétions. - generation_config (GenerationConfig, facultatif) — La configuration de génération à utiliser pour générer des complétions.
- num_prompts (
int, facultatif) — Le nombre de prompts pour lesquels générer des complétions. S'il n'est pas fourni, la valeur par défaut est le nombre d'exemples du jeu de données d'évaluation. - freq (
int, facultatif) — La fréquence à laquelle enregistrer les complétions. Si non fourni, la valeur par défaut esteval_stepsdu formateur.
Un TrainerCallback qui journalise les complétions dans Weights & Biases et/ou Comet.
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' )
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.
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
WeaveCallback
classe trl.WeaveCallback
< source >( trainer: Trainerproject_name: str | None = Nonescorers: dict[str, callable] | None = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonenum_prompts: int | None = Nonedataset_name: str = 'eval_dataset'model_name: str | None = None )
Paramètres
- trainer (
Trainer) — Trainer auquel le callback sera attaché. Le jeu de données d’évaluation du trainer doit inclure une colonne"prompt"contenant les prompts pour générer les complétions. - project_name (
str, facultatif) — Nom du projet Weave où les données seront journalisées. Si non fourni, essaiera d’utiliser le client weave existant ou, à défaut, le nom du projet de l’exécution wandb active. Lève une erreur si aucune de ces options n’est disponible. - scorers (
dict[str, Callable], facultatif) — Dictionnaire associant les noms de scoreurs aux fonctions de scoreur. SiNone, fonctionne en mode de traçage (prédictions uniquement). S’il est fourni, fonctionne en mode d’évaluation (prédictions + scores + résumé). Les fonctions de scoreur doivent avoir la signature :scorer(prompt: str, completion: str) -> float | int - generation_config (GenerationConfig, facultatif) — Configuration de génération à utiliser pour générer des complétions.
- num_prompts (
int, facultatif) — Le nombre de prompts pour lesquels générer des complétions. S'il n'est pas fourni, la valeur par défaut est le nombre d'exemples du jeu de données d'évaluation. - dataset_name (
str, facultatif, par défaut"eval_dataset") — Nom des métadonnées du jeu de données dans Weave. - model_name (
str, facultatif) — Nom des métadonnées du modèle dans Weave. S'il n'est pas fourni, une tentative d'extraction à partir de la configuration du modèle est effectuée.
Un TrainerCallback qui journalise les traces et les évaluations vers W&B Weave. Le callback utilise https://weave-docs.wandb.ai/guides/evaluation/evaluation_logger/ pour journaliser les traces et les évaluations à chaque étape d'évaluation.
Prend en charge deux modes en fonction du paramètre scorers :
- Mode de traçage (lorsque scorers=None) : journalise les prédictions pour l'exploration et l'analyse des données
- Mode d'évaluation (lorsque des évaluateurs sont fournis) : journalise les prédictions avec le score et les métriques de synthèse
Les deux modes utilisent l’EvaluationLogger de Weave pour un enregistrement de données structuré et cohérent.
Le callback journalise les données lors des phases d'évaluation (on_evaluate) plutôt qu'aux étapes d'entraînement, ce qui le rend plus efficace et sémantiquement correct. Il gère élégamment l'absence d'installation de weave en journalisant des avertissements et en ignorant les fonctionnalités spécifiques à weave. Il vérifie également l'existence de clients weave avant d'en initialiser de nouveaux.
Utilisation :
# Tracing mode (just log predictions)
trainer = DPOTrainer(...)
weave_callback = WeaveTraceCallback(trainer=trainer) # project_name optional
trainer.add_callback(weave_callback)
# Or specify a project name
weave_callback = WeaveTraceCallback(trainer=trainer, project_name="my-llm-training")
trainer.add_callback(weave_callback)
# Evaluation mode (log predictions + scores + summary)
def accuracy_scorer(prompt: str, completion: str) -> float:
# Your scoring logic here (metadata available via eval_attributes)
return score
weave_callback = WeaveTraceCallback(
trainer=trainer,
project_name="my-llm-training", # optional and needed only if weave client is not initialized
scorers={"accuracy": accuracy_scorer},
)
trainer.add_callback(weave_callback)Initialiser Weave lorsque l’entraînement commence.