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.18.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Callbacks

RichProgressCallback

class trl.RichProgressCallback

< >

( )

Một TrainerCallback hiển thị tiến trình của quá trình huấn luyện hoặc đánh giá bằng Rich.

LogCompletionsCallback

lớp trl.LogCompletionsCallback

< >

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

Tham số

  • trainer (Trainer) — Trainer mà callback sẽ được gắn vào. Tập dữ liệu đánh giá của trainer phải bao gồm một cột "prompt" chứa các prompt để tạo ra các câu trả lời hoàn chỉnh.
  • generation_config (GenerationConfig, tuỳ chọn) — Cấu hình sinh cần dùng để tạo các phần hoàn thiện.
  • num_prompts (int, tùy chọn) — Số lượng prompt để tạo các câu trả lời hoàn chỉnh. Nếu không được cung cấp, mặc định sẽ là số lượng ví dụ trong bộ dữ liệu đánh giá.
  • freq (int, tùy chọn) — Tần suất ghi log các kết quả hoàn thành. Nếu không được cung cấp, mặc định là eval_steps của trainer.

Một TrainerCallback ghi log các kết quả hoàn thành vào Weights & Biases và/hoặc Comet.

Cách sử dụng:

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

BEMACallback

lớp 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' )

Tham số

  • update_freq (int, tuỳ chọn, mặc định là 400) — Cập nhật trọng số BEMA mỗi X bước. Kí hiệu là {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} trong bài báo. Để tắt EMA, đặt giá trị này thành 0.0.
  • bias_power (float, tuỳ chọn, mặc định là 0.2) — Số mũ cho hệ số tỷ lệ BEMA. Được ký hiệu là {@html "η \\eta η"} trong bài báo. Giá trị lớn (ví dụ: 8.0) khiến {@html "αt \\alpha_t αt​"} suy giảm về 0, xấp xỉ việc vô hiệu hóa hiệu chỉnh bias; 0.0 thay vào đó giữ {@html "αt \\alpha_t αt​"} ở mức 1 cho mỗi bước (hiệu chỉnh tối đa, không suy giảm). lag (int, tuỳ chọn, mặc định là 10) — Độ lệch ban đầu trong lịch trình suy giảm trọng số, kiểm soát độ mượt ở giai đoạn đầu bằng cách đóng vai trò tuổi bắt đầu ảo cho các cập nhật. Được ký hiệu là {@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 ρ"} trong bài báo.
  • update_after (int, tuỳ chọn, mặc định là 0) — Thời gian chạy thử trước khi bắt đầu cập nhật trọng số BEMA. Được ký hiệu là {@html "τ \tau τ"}τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} trong bài báo.
  • min_ema_multiplier (float, tùy chọn, mặc định là 0.0) — Giá trị tối thiểu cho hệ số suy giảm EMA.
  • device (str, tùy chọn, mặc định là "cpu") — Thiết bị để sử dụng cho các bộ đệm BEMA, ví dụ "cpu" hoặc "cuda". Lưu ý rằng trong hầu hết các trường hợp, thiết bị này NÊN KHÁC với thiết bị được sử dụng cho huấn luyện để tránh OOM.

Một TrainerCallback triển khai BEMA (Bias-Corrected Exponential Moving Average) do Adam Block và Cyril Zhang phát triển. Mã nguồn từ https://github.com/abblock/bema theo giấy phép MIT.

BEMA tính toán trọng số mô hình có tỷ lệ như sau: θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

trong đó θt \theta_t là trọng số mô hình hiện tại, θ0 \theta_0 là bản sao của trọng số mô hình tại bước update_after đầu tiên sau EMAt \text{EMA}_t của trọng số mô hình, vàαt \alpha_t là hệ số tỷ lệ giảm dần theo số bước t t theo công thức αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

EMA được tính như sau: EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

trong đó βt \beta_t là hệ số suy giảm, giảm dần theo số bước t t theo công thức βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

Ví dụ:

>>> from trl import BEMACallback

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

WeaveCallback

lớp 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 )

Tham số

  • trainer (Trainer) — Trainer mà callback sẽ được gắn vào. Tập dữ liệu đánh giá của trainer phải bao gồm một cột "prompt" chứa các prompt để tạo ra các câu trả lời hoàn chỉnh.
  • project_name (str, tùy chọn) — Tên của dự án Weave nơi dữ liệu sẽ được ghi log. Nếu không được cung cấp, sẽ cố gắng sử dụng weave client hiện có hoặc quay lại tên dự án của wandb run đang hoạt động. Ném lỗi nếu không có bất kỳ lựa chọn nào trong số này.
  • scorers (dict[str, Callable], tuỳ chọn) — Từ điển ánh xạ tên scorer đến các hàm scorer. Nếu là None, hoạt động ở chế độ theo dõi (chỉ có dự đoán). Nếu được cung cấp, hoạt động ở chế độ đánh giá (dự đoán + điểm + tóm tắt). Các hàm scorer nên có chữ ký: scorer(prompt: str, completion: str) -> float | int
  • generation_config (GenerationConfig, tuỳ chọn) — Cấu hình sinh để sử dụng khi tạo các phần hoàn thành.
  • num_prompts (int, tùy chọn) — Số lượng prompt để tạo các câu trả lời hoàn chỉnh. Nếu không được cung cấp, mặc định sẽ là số lượng ví dụ trong bộ dữ liệu đánh giá.
  • dataset_name (str, tùy chọn, mặc định là "eval_dataset") — Tên cho metadata của dataset trong Weave.
  • model_name (str, tùy chọn) — Tên cho metadata của model trong Weave. Nếu không được cung cấp, sẽ cố gắng trích xuất từ config của model.

TrainerCallback ghi log các trace và đánh giá vào W&B Weave. Callback sử dụng https://weave-docs.wandb.ai/guides/evaluation/evaluation_logger/ để ghi log các trace và đánh giá tại mỗi bước đánh giá.

Hỗ trợ hai chế độ dựa trên tham số scorers:

  • Chế độ Tracing (khi scorers=None): Ghi lại các dự đoán để khám phá và phân tích dữ liệu
  • Chế độ đánh giá (khi có bộ chấm điểm): Ghi log các dự đoán kèm theo điểm số và các chỉ số tóm tắt

Cả hai chế độ đều sử dụng EvaluationLogger của Weave để ghi log dữ liệu có cấu trúc và nhất quán.

Callback ghi log dữ liệu trong các giai đoạn đánh giá (on_evaluate) thay vì các bước huấn luyện, giúp hiệu quả hơn và đúng về mặt ngữ nghĩa. Nó xử lý một cách mềm mại việc thiếu cài đặt weave bằng cách ghi log cảnh báo và bỏ qua các chức năng đặc thù của weave. Nó cũng kiểm tra các weave client hiện có trước khi khởi tạo những client mới.

Cách sử dụng:

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

Khởi tạo Weave khi quá trình huấn luyện bắt đầu.

Update on GitHub