TRL documentation

コールバック

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

コールバック

RichProgressCallback

class trl.RichProgressCallback

< >

( )

Rich を使用して、学習または評価の進捗を表示する TrainerCallback です。

LogCompletionsCallback

クラス trl.LogCompletionsCallback

< >

( trainer: Trainergeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonenum_prompts: int | None = Nonefreq: int | None = None )

パラメータ

  • trainer (Trainer) — このコールバックがアタッチされる Trainer です。Trainer の評価データセットには、補完を生成するためのプロンプトを含む "prompt" 列が必要です。
  • generation_config (GenerationConfig, 任意) — 補完を生成するために使用する生成設定です。
  • num_prompts (int, 省略可) — 補完を生成するプロンプトの数です。指定しない場合、評価データセット内のサンプル数がデフォルトとして使用されます。
  • freq (int, 任意) — コンプリーションをログに記録する頻度です。指定しない場合、デフォルトでトレーナーのeval_stepsが使用されます。

Weights & Biases および/または Comet に補完をログ記録する TrainerCallback です。

使用方法:

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

BEMACallback

クラス 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_freq (int, 省略可能, デフォルト値は 400) — BEMA の重みを X ステップごとに更新します。論文では {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} と表記されています。EMA を無効にするには、この値を 0.0.
  • bias_power (float, 省略可, デフォルト値は 0.2) — BEMA スケーリング係数のべき乗です。論文では {@html "η \\eta η"} で表されます。大きな値 (例: 8.0) を設定すると {@html "αt \\alpha_t αt​"} が 0 に減衰し、バイアス補正が無効化された状態を近似します。一方、0.0 を設定すると、すべてのステップで {@html "αt \\alpha_t αt​"} が 1 に固定されます (最大かつ減衰しない補正)。lag (int, 省略可, デフォルト値は 10) — ウェイト減衰スケジュールの初期オフセットです。更新の仮想の開始年齢として機能し、初期段階の滑らかさを制御します。論文では {@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 ρ"} で表されます。
  • update_after (int, 省略可能, デフォルト値は 0) — BEMA 重みの更新を開始するまでのバーンイン時間。論文では {@html "τ \\tau τ"} で表されます。τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} 論文では γ で表されます。
  • min_ema_multiplier (float、任意、デフォルトは0.0) — EMA減衰係数の最小値。
  • device (str, 任意、デフォルトは "cpu") — BEMA バッファに使用するデバイス。例: "cpu" または "cuda"。ほとんどの場合、OOM を回避するために、このデバイスは学習に使用するデバイスとは異なるべきです。

Adam Block と Cyril Zhang による BEMA(Bias-Corrected Exponential Moving Average)を実装した TrainerCallback です。コードは MIT ライセンスの下で https://github.com/abblock/bema から提供されています。

BEMA は、次のようにスケーリングされるモデルの重みを計算します: θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

ここで θt \theta_t は現在のモデルの重み、 θ0 \theta_0 は最初の update_after ステップ時点のモデルの重みのスナップショット、 EMAt \text{EMA}_t はステップ数αt \alpha_t とともに減衰するスケーリング係数であり、 t t は αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

EMA は次のように計算されます: EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

ここで βt \beta_t はステップ数 t t に対して次のように減衰する減衰係数です βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

例:

>>> from trl import BEMACallback

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

WeaveCallback

クラス 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 )

パラメータ

  • trainer (Trainer) — このコールバックがアタッチされる Trainer です。Trainer の評価データセットには、補完を生成するためのプロンプトを含む "prompt" 列が必要です。
  • project_name (str, 任意) — データが記録される Weave プロジェクトの名前です。指定されない場合、既存の weave クライアントを使用しようと試み、それが利用できない場合は、アクティブな wandb ランのプロジェクト名にフォールバックします。これらがいずれも利用できない場合は、エラーが発生します。
  • scorers (dict[str, Callable]、省略可) — スコアラー名をスコアラー関数にマッピングする辞書です。None の場合、トレーシングモード(予測のみ)で動作します。指定された場合、評価モード(予測 + スコア + サマリー)で動作します。スコアラー関数のシグネチャは scorer(prompt: str, completion: str) -> float | int である必要があります。
  • generation_config (GenerationConfig、任意) — 補完の生成に使用する生成設定。
  • num_prompts (int, 省略可) — 補完を生成するプロンプトの数です。指定しない場合、評価データセット内のサンプル数がデフォルトとして使用されます。
  • dataset_name (str、任意、デフォルトは"eval_dataset") — Weave におけるデータセットメタデータの名称。
  • model_name (str, 省略可) — Weave におけるモデルメタデータの名称です。指定しない場合、モデル設定から抽出しようとします。

W&B Weave にトレースと評価を記録する TrainerCallback です。このコールバックは、https://weave-docs.wandb.ai/guides/evaluation/evaluation_logger/ を使用して、各評価ステップでトレースと評価を記録します。

scorers パラメータに基づいて、2つのモードをサポートします:

  • トレースモード(scorers=Noneの場合):データのエクスプロレーションと分析のために予測をログに記録します
  • 評価モード(スコアラーが提供されている場合):スコアリングとサマリーメトリクス付きで予測をログに記録します

Both modes use Weave’s EvaluationLogger for structured, consistent data logging.

このコールバックは、トレーニングステップではなく評価フェーズ(on_evaluate)でデータをログに記録するため、より効率的かつ意味的に正確です。weave のインストールが欠落している場合は、警告をログに記録し、weave 固有の機能をスキップすることで適切に処理します。また、新しいクライアントを初期化する前に、既存の weave クライアントがあるかどうかを確認します。

使用方法:

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

学習が開始された時点でWeaveを初期化します。

Update on GitHub