TRL documentation

Ejemplos

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ejemplos

El directorio examples/ contiene una colección de ejemplos autónomos que demuestran cómo usar la biblioteca TRL para diversas aplicaciones. Cada ejemplo se encuentra en su propia carpeta nombrada según el método y la tarea que ilustra (p. ej. grpo_wordle, sft_gpt_oss_chess), y contiene todo lo que el ejemplo necesita: scripts, notebooks, prompts, plantillas de chat y código de evaluación.

Los scripts básicos de entrenamiento con un solo entrenador no son ejemplos: se encuentran en trl/scripts y se exponen a través de la interfaz de línea de comandos (trl sft, trl dpo, trl grpo, …). La página de documentación de cada entrenador también contiene un fragmento completo y ejecutable.

Los recursos compartidos se encuentran en la raíz de examples/:

  • examples/deepspeed_configs: archivos de configuración de DeepSpeed ZeRO, que se pasan con --deepspeed y se utilizan en muchos ejemplos.
  • examples/fsdp_configs: archivos de configuración de FSDP, que se pasan con --fsdp --fsdp_config (un --fsdp simple en la línea de comandos requiere transformers 5.10 o posterior; con versiones anteriores, establece fsdp=True en la configuración de entrenamiento).
  • examples/datasets: los scripts utilizados para generar los conjuntos de datos de trl-lib que se usan en los ejemplos.

Introducción

Instale TRL y las dependencias adicionales de la siguiente manera:

pip install --upgrade trl[quantization]

Consulte las dependencias opcionales adicionales aquí. Los ejemplos basados en notebooks son autosuficientes y pueden ejecutarse en Colab gratuito; los ejemplos basados en scripts se ejecutan en configuraciones de GPU única, multi-GPU o DeepSpeed (consulte Entrenamiento distribuido a continuación).

Índice

EjemploDescripciónAbrir en Colab
async_distillation_mathDestilación asincrónica on-policy en GSM8K con experimental.async_distillation.AsyncDistillationTrainer: el modelo maestro se sirve a través de HTTP con vLLM.
async_distillation_mopdDestilación en política con múltiples maestros (MOPD) con experimental.async_distillation.AsyncDistillationTrainer: fusiona los expertos de matemáticas, código y seguimiento de instrucciones de Open-MOPD en su punto de control SFT: de 17,5 a 24,2 en AIME24 y de 67,5 a 73,0 en IFEval en 60 pasos (script, lanzador de Hugging Face Jobs y README con los resultados).
async_grpo_harborEntrenamiento AsyncGRPO en un conjunto de tareas de Harbor a través de cualquier agente de codificación instalado (mini-swe-agent, opencode, claude-code, …) servido mediante OpenEnv: el agente posee su propio bucle en un sandbox y TRL entrena con los ids de tokens y logprobs registrados por el proxy de captura.
async_grpo_mathGRPO asíncrono en GSM8K con AsyncGRPOTrainer, desacoplando la generación (servidor vLLM) del entrenamiento, e incluyendo una variante LoRA que sincroniza solo el adaptador con el servidor vLLM.
dpo_reduce_hallucinationsAjuste fino con DPO de un modelo de lenguaje visual para reducir alucinaciones utilizando el conjunto de datos openbmb/RLAIF-V-Dataset.
gold_chatbot_arenaDestilación de logit en línea general (GOLD) de un maestro Qwen2 a un estudiante Llama 3.2 (tokenizador cruzado) en chatbot_arena_completions con experimental.gold.GOLDTrainer, con variantes de entrenamiento completo y LoRA.
gold_qwen3_vlDestilación de logit en línea general (GOLD) de Qwen3-VL-8B en estudiantes VLM más pequeños con experimental.gold.GOLDTrainer, cubriendo la destilación de la misma familia (pérdida JSD) y entre familias (pérdida ULD).
grpo_2048GRPO con llamadas a herramientas para enseñar a un modelo a jugar al juego 2048.
grpo_browsergymGRPO con el entorno OpenEnv de BrowserGym, con variantes de LLM y VLM.
grpo_carlaGRPO con el entorno de conducción autónoma CARLA OpenEnv, con variantes de LLM y VLM (respuestas de herramientas de imágenes de cámara multimodales).
grpo_catchGRPO con el Catch (OpenSpiel) OpenEnv environment.
grpo_continuous_batchingGRPO con el motor de lotes continuos de transformers para una generación más rápida en lotes grandes con longitudes de finalización variables.
grpo_echoEntrenamiento mínimo de GRPO con el entorno OpenEnv de Echo.
grpo_harborEntrenamiento de GRPO contra un conjunto de tareas de Harbor con un agente base intercambiable (harnesses de bash / jupyter / terminal_notes). Consulte la guía de Integración de Harbor.
grpo_ministral3_vlGRPO Ministral 3 con QLoRA en Colab gratuito.Open In Colab
grpo_multi_envEntrenamiento GRPO multi-entorno: Wordle + Catch OpenEnv entornos en la misma ejecución de entrenamiento.
grpo_qloraGRPO usando QLoRA en Colab gratuito.Open In Colab
grpo_qwen3_vlGRPO Qwen3-VL con QLoRA en Colab gratuito.Open In Colab
grpo_rnj_1_instructGRPO en rnj-1-instruct con QLoRA en Colab para añadir capacidades de razonamiento.Open In Colab
grpo_setaEntrenamiento de GRPO contra el entorno SETA ORS en el catálogo de openreward.ai. Consulte la guía de Integración de OpenReward.
grpo_sql_agentGRPO para entrenar un agente que responde preguntas consultando una base de datos SQL (script y notebook; no ejecutable en Colab gratuito debido a OOM).
grpo_sudokuGRPO para jugar al Sudoku (TextArena) en un entorno OpenEnv, partiendo de un modelo SFT: 0, 10 y 22 acertijos de 30 resueltos con 26 celdas vacías para los modelos base, SFT y SFT + GRPO (script, notebook y README con los resultados).Open In Colab
grpo_visual_mathAjuste fino con GRPO de un modelo multimodal para razonamiento utilizando el conjunto de datos lmms-lab/multimodal-open-r1-8k-verified.
grpo_wordleGRPO para jugar a Wordle (TextArena) en un entorno OpenEnv (script y cuaderno).Open In Colab
gspo_mathGSPO mediante el GRPOTrainer para razonamiento matemático en el conjunto de datos AI-MO/NuminaMath-TIR.
gspo_visual_mathGSPO a través del GRPOTrainer para ajustar un modelo multimodal para razonamiento utilizando el conjunto de datos lmms-lab/multimodal-open-r1-8k-verified.
lfm2_5_moe_research_agentLiquidAI/LFM2.5-8B-A1B en dos pasos: SFT completo en xLAM function calling en un nodo 8xH100 con SFTTrainer, fragmentado en el momento de la carga mediante DistributedConfig de transformers (paralelismo de expertos con despacho de tokens, más FSDP), y luego GRPO de un agente de investigación de varios turnos en HotpotQA con GRPOTrainer y environment_factory (herramientas search / read, recompensa de coincidencia exacta).
mpo_visual_preferencesMPO a través de DPOTrainer para alinear un modelo multimodal basado en preferencias utilizando el conjunto de datos HuggingFaceH4/rlaif-v_formatted y un conjunto de pesos de pérdida.
online_dpo_visual_mathAjuste fino con DPO en línea de un modelo de visión y lenguaje con experimental.online_dpo.OnlineDPOTrainer.
rloo_mathRLOO con RLOOTrainer para razonamiento matemático en el conjunto de datos AI-MO/NuminaMath-TIR con vLLM.
rloo_visual_mathAjuste fino con RLOO de un modelo multimodal para razonamiento utilizando el conjunto de datos lmms-lab/multimodal-open-r1-8k-verified.
sdft_privileged_contextAjuste fino mediante auto-destilación con experimental.sdft.SDFTTrainer, destilando el contexto privilegiado (solo del maestro) en el modelo.
sdpo_mathSDPO con experimental.sdpo.SDPOTrainer usando recompensas matemáticas verificables y retroalimentación opcional del entorno en openai/gsm8k.
sft_agent_tracesSFT de Qwen3.5-2B en trazas de agentes: Qwen3.5-397B-A17B resuelve tareas de análisis de datos de Harbor como un agente OpenCode en Hugging Face Sandboxes, registrado por OpenEnv, y el estudiante se entrena en las conversaciones resueltas con pérdida solo de asistente. En tareas cuyos datos no fueron tocados por ninguna traza, unas 500 trazas lo llevan del 7,6% al 33,3% (scripts de rollout, dataset y entrenamiento, y README con los resultados).
sft_beamSFT con LoRA de reflection/Beam-1.0-501B-A23B en un nodo de 8xB300 con SFTTrainer, fragmentado en el momento de la carga mediante DistributedConfig de transformers (paralelismo de expertos con despacho de tokens).
sft_diffusion_gemmaSFT del modelo de lenguaje de difusión por bloques DiffusionGemma en GSM8K mediante la extensión de SFTTrainer con un objetivo de difusión por bloques.
sft_gemma3SFT de Gemma 3 en el conjunto de datos Codeforces COTS.
sft_gemma3_visionSFT de Gemma 3 en tareas de visión a texto.
sft_gpt_oss_chessAjuste fino completo de openai/gpt-oss-20b con acertijos de ajedrez mediante SFTTrainer: TRL carga sus expertos MXFP4 descuantizados, y los expertos ajustados se recuantizan a MXFP4 para servirlos como el original.
sft_ministral3_vlSFT de Ministral 3 con QLoRA en Colab gratuito.Open In Colab
sft_mistral_large_4SFT con LoRA de mistralai/Mistral-Large-4-1T-A52B sobre sus pesos FP8 en un nodo de 8xB300 con SFTTrainer, fragmentado en el momento de la carga mediante DistributedConfig de transformers (paralelismo de expertos con despacho de tokens).
sft_nemotron_3SFT de los modelos NVIDIA Nemotron 3 (script y cuaderno de LoRA).Open In Colab
sft_qloraSFT con QLoRA en Colab gratuito.Open In Colab
sft_qwen3_8b_1m_contextSFT de Qwen3-8B en secuencias de 1.048.576 tokens con paralelismo de contexto, en un nodo 8xH100.
sft_qwen3_vlSFT de Qwen3-VL con QLoRA en Colab gratuito.Open In Colab
tail_sft_gsm8kTailSFT en GSM8K extendiendo SFTTrainer con filtrado de pérdida de la política inicial.
sft_muse_spark_openSFT con LoRA de meta-models/Muse-Spark-Open-816B-A42B en 8 nodos con SFTTrainer, fragmentado en el momento de la carga por DistributedConfig de transformers (paralelismo de expertos con despacho de tokens).
sft_tool_callingEnseñar la invocación de herramientas a un modelo sin soporte nativo de invocación de herramientas mediante SFT con QLoRA (script, plantilla de chat y cuaderno).Open In Colab
sft_visual_chatSFT de un modelo de visión y lenguaje en un entorno de chat. Solo probado con LLaVA 1.5, LLaVA 1.6 y Llama-3.2-11B-Vision-Instruct; los usuarios pueden observar un comportamiento inesperado en otras arquitecturas de modelos.
xtokenX-Token: destilación de conocimiento entre tokenizadores off-policy con experimental.gold.GOLDTrainer, incluida la preparación de la matriz de proyección.

Entrenamiento distribuido

Puede ejecutar los scripts de ejemplo en varias GPU con torchrun:

torchrun --nproc_per_node {NUM_GPUS} path_to_script.py --all_arguments_of_the_script

Para DeepSpeed ZeRO-{1,2,3}:

torchrun --nproc_per_node {NUM_GPUS} path_to_script.py --deepspeed examples/deepspeed_configs/zero{1,2,3}.json --all_arguments_of_the_script

Ajusta NUM_GPUS y --all_arguments_of_the_script según sea necesario.

Update on GitHub