TRL documentation
Callbacks
Callbacks
RichProgressCallback
Un TrainerCallback que muestra el progreso del entrenamiento o la evaluación usando Rich.
LogCompletionsCallback
clase trl.LogCompletionsCallback
< source >( 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 eseval_stepsdel entrenador.
Un TrainerCallback que registra las completaciones en Weights & Biases y/o Comet.
BEMACallback
clase 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' )
Parámetros
- update_freq (
int, opcional, por defecto400) — Actualiza los pesos de BEMA cada X pasos. Se denota como {@html "ϕ"} in the paper. - ema_power (
float, optional, defaults to0.5) — Power for the EMA decay factor. Denoted {@html "κ "} en el artículo. Para desactivar EMA, establézcalo en0.0. - bias_power (
float, opcional, por defecto0.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 ρ "}η"} 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 "ρ"} en el artículo. - update_after (
int, opcional, el valor predeterminado es0) — 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 γ "}τ"} in the paper. - multiplier (
float, optional, defaults to1.0) — Initial value for the EMA decay factor. Denoted as {@html "γ"} en el artículo. - min_ema_multiplier (
float, opcional, valor predeterminado0.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:
donde son los pesos actuales del modelo, es una instantánea de los pesos del modelo en el primer update_after paso, es la media móvil exponencial de los pesos del modelo, y es un factor de escala que decae con el número de pasos como
El EMA se calcula como:
donde es un factor de decaimiento que decae con el número de pasos como
WeaveCallback
clase 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 )
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 esNone, 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)Inicializa Weave cuando comience el entrenamiento.