TRL documentation
コールバック
コールバック
RichProgressCallback
Rich を使用して、学習または評価の進捗を表示する TrainerCallback です。
LogCompletionsCallback
クラス trl.LogCompletionsCallback
< source >( 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 です。
BEMACallback
クラス 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_freq (
int, 省略可能, デフォルト値は400) — BEMA の重みを X ステップごとに更新します。論文では {@html "ϕ"} in the paper. - ema_power (
float, optional, defaults to0.5) — Power for the EMA decay factor. Denoted {@html "κ "} と表記されています。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 ρ "}η"} 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 "ρ"} で表されます。 - update_after (
int, 省略可能, デフォルト値は0) — BEMA 重みの更新を開始するまでのバーンイン時間。論文では {@html "τ \\tau τ"} で表されます。τ"} in the paper. - multiplier (
float, optional, defaults to1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ"} 論文では γ で表されます。 - 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 は、次のようにスケーリングされるモデルの重みを計算します:
ここで は現在のモデルの重み、 は最初の update_after ステップ時点のモデルの重みのスナップショット、 はステップ数 とともに減衰するスケーリング係数であり、 は
EMA は次のように計算されます:
ここで はステップ数 に対して次のように減衰する減衰係数です
WeaveCallback
クラス 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 )
パラメータ
- 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)学習が開始された時点でWeaveを初期化します。