TRL documentation

Callbacks

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Callbacks

RichProgressCallback

clase trl.RichProgressCallback

< >

( )

Un TrainerCallback que muestra el progreso del entrenamiento o la evaluación usando Rich.

LogCompletionsCallback

clase trl.LogCompletionsCallback

< >

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

Parámetros

  • trainer (Trainer) — Trainer al que se adjuntará el callback. El conjunto de datos de evaluación del trainer debe incluir una columna "prompt" que contenga los prompts para generar las completions.
  • generation_config (GenerationConfig, opcional) — La configuración de generación que se utilizará para generar las completaciones.
  • num_prompts (int, opcional) — El número de prompts para los que generar completados. Si no se proporciona, el valor predeterminado es el número de ejemplos del conjunto de datos de evaluación.
  • freq (int, opcional) — La frecuencia con la que se registran las completaciones. Si no se proporciona, el valor predeterminado es eval_steps del entrenador.

Un TrainerCallback que registra las completaciones en Weights & Biases y/o Comet.

Uso:

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

BEMACallback

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

Parámetros

  • update_freq (int, opcional, por defecto 400) — Actualiza los pesos de BEMA cada X pasos. Se denota como {@html "ϕ \\phi ϕ"} in the paper.
  • ema_power (float, optional, defaults to 0.5) — Power for the EMA decay factor. Denoted {@html "κ \\kappa κ "} en el artículo. Para desactivar EMA, establézcalo en 0.0.
  • bias_power (float, opcional, por defecto 0.2) — Potencia para el factor de escalado de BEMA. Denotado como {@html "η \\eta η"} en el artículo. Un valor grande (p. ej. 8.0) hace que {@html "αt \\alpha_t αt​"} decaiga a 0, aproximando la desactivación de la corrección de sesgo; 0.0, en cambio, fija {@html "αt \\alpha_t αt​"} en 1 para cada paso (corrección máxima, sin decaimiento). lag (int, opcional, por defecto 10) — Desplazamiento inicial en el programa de decaimiento de pesos que controla la suavidad de las primeras etapas actuando como una edad inicial virtual para las actualizaciones. Denotado como {@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 ρ"} en el artículo.
  • update_after (int, opcional, el valor predeterminado es 0) — Tiempo de precalentamiento antes de comenzar a actualizar los pesos de BEMA. Se denota como {@html "τ \\tau τ"} en el artículo. multiplier (float, opcional, el valor predeterminado es 1.0) — Valor inicial para el factor de decaimiento EMA. Se denota como {@html "γ \\gamma γ "}τ \\tau τ"} in the paper.
  • multiplier (float, optional, defaults to 1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ \\gamma γ"} en el artículo.
  • min_ema_multiplier (float, opcional, valor predeterminado 0.0) — Valor mínimo para el factor de decaimiento de la EMA.
  • device (str, opcional, valor predeterminado "cpu") — Dispositivo que se usará para los búferes de BEMA, por ejemplo, "cpu" o "cuda". Tenga en cuenta que, en la mayoría de los casos, este dispositivo DEBERÍA SER DIFERENTE del dispositivo utilizado para el entrenamiento, a fin de evitar errores de memoria insuficiente (OOM).

Un TrainerCallback que implementa BEMA (Bias-Corrected Exponential Moving Average) de Adam Block y Cyril Zhang. Código de https://github.com/abblock/bema bajo licencia MIT.

BEMA calcula los pesos del modelo que se escalan de la siguiente manera: θt′=αt⋅(θt−θ0)+EMAt \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t

donde θt \theta_t son los pesos actuales del modelo, θ0 \theta_0 es una instantánea de los pesos del modelo en el primer update_after paso, EMAt \text{EMA}_t es la media móvil exponencial de los pesos del modelo, yαt \alpha_t es un factor de escala que decae con el número de pasos t t como αt=(ρ+γ⋅t)−η. \alpha_t = (\rho + \gamma \cdot t)^{-\eta}.

El EMA se calcula como: EMAt=(1−βt)⋅EMAt−1+βt⋅θt \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t

donde βt \beta_t es un factor de decaimiento que decae con el número de pasos t t como βt=(ρ+γ⋅t)−κ. \beta_t = (\rho + \gamma \cdot t)^{-\kappa}.

Ejemplo:

>>> from trl import BEMACallback

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

WeaveCallback

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

Parámetros

  • trainer (Trainer) — Trainer al que se adjuntará el callback. El conjunto de datos de evaluación del trainer debe incluir una columna "prompt" que contenga los prompts para generar las completions.
  • project_name (str, opcional) — Nombre del proyecto de Weave donde se registrarán los datos. Si no se proporciona, intentará usar el cliente de weave existente o recurrirá al nombre del proyecto de la ejecución activa de wandb. Lanza un error si ninguno de estos está disponible.
  • scorers (dict[str, Callable], opcional) — Diccionario que mapea nombres de evaluadores a funciones de evaluación. Si es None, opera en modo de trazado (solo predicciones). Si se proporciona, opera en modo de evaluación (predicciones + puntuaciones + resumen). Las funciones de evaluación deben tener la siguiente firma: scorer(prompt: str, completion: str) -> float | int
  • generation_config (GenerationConfig, opcional) — Configuración de generación a utilizar para generar las finalizaciones.
  • num_prompts (int, opcional) — El número de prompts para los que generar completados. Si no se proporciona, el valor predeterminado es el número de ejemplos del conjunto de datos de evaluación.
  • dataset_name (str, opcional, valor predeterminado "eval_dataset") — Nombre para los metadatos del conjunto de datos en Weave.
  • model_name (str, opcional) — Nombre para los metadatos del modelo en Weave. Si no se proporciona, se intenta extraer de la configuración del modelo.

Un TrainerCallback que registra trazas y evaluaciones en W&B Weave. El callback utiliza https://weave-docs.wandb.ai/guides/evaluation/evaluation_logger/ para registrar trazas y evaluaciones en cada paso de evaluación.

Admite dos modos basados en el parámetro scorers:

  • Modo de trazado (cuando scorers=None): Registra las predicciones para la exploración y el análisis de datos
  • Modo de evaluación (cuando se proporcionan evaluadores): Registra las predicciones con puntuación y métricas de resumen

Ambos modos utilizan EvaluationLogger de Weave para un registro de datos estructurado y coherente.

El callback registra datos durante las fases de evaluación (on_evaluate) en lugar de en los pasos de entrenamiento, lo que lo hace más eficiente y semánticamente correcto. Maneja de forma adecuada la ausencia de la instalación de weave registrando advertencias y omitiendo la funcionalidad específica de weave. También verifica la existencia de clientes de weave antes de inicializar nuevos.

Uso:

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

Inicializa Weave cuando comience el entrenamiento.

Update on GitHub