TRL documentation

Callbacks

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

and get access to the augmented documentation experience

to get started

Callbacks

RichProgressCallback

classe trl.RichProgressCallback

< >

( )

Un TrainerCallback qui affiche la progression de l’entraînement ou de l’évaluation à l’aide de Rich.

LogCompletionsCallback

classe trl.LogCompletionsCallback

< >

( 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 est eval_steps du formateur.

Un TrainerCallback qui journalise les complétions dans Weights & Biases et/ou Comet.

Utilisation :

>>> trainer = DPOTrainer(...)
>>> completions_callback = LogCompletionsCallback(trainer=trainer)
>>> trainer.add_callback(completions_callback)

BEMACallback

classe 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' )

Paramètres

  • update_freq (int, facultatif, par défaut 400) — Mettre à jour les poids BEMA toutes les X étapes. Noté {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} dans l'article. Pour désactiver l'EMA, définissez cette valeur sur 0.0.
  • bias_power (float, facultatif, valeur par défaut 0.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 ρ "}η \\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 ρ"} dans l'article.
  • update_after (int, facultatif, valeur par défaut 0) — Durée de préchauffage avant de commencer à mettre à jour les poids de BEMA. Noté {@html "τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} dans l'article.
  • min_ema_multiplier (float, facultatif, valeur par défaut 0.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 : θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

où θt \theta_t sont les poids actuels du modèle, θ0 \theta_0 est une copie des poids du modèle au premier update_after pas, EMAt \text{EMA}_t est la moyenne mobile exponentielle des poids du modèle, etαt \alpha_t est un facteur d'échelle qui décroît avec le nombre de pas t t selon αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

L'EMA est calculée comme suit : EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

où βt \beta_t est un facteur d'atténuation qui diminue avec le nombre d'étapes t t selon la formule βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

Exemple :

>>> from trl import BEMACallback

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

WeaveCallback

classe trl.WeaveCallback

< >

( 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. Si None, 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)

on_train_begin

< >

( argsstatecontrol**kwargs )

Initialiser Weave lorsque l’entraînement commence.

Update on GitHub