TRL documentation
示例
入门指南
概念指南
Trainers
操作指南
命令行界面(CLI)使用 Jobs 进行训练自定义训练减少内存使用加速训练分布式训练在 AWS Trainium 上进行训练在 AMD GPU 上进行训练训练超过 100 万个 Token使用训练好的模型
集成
示例
API
实验性
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v1.17.1).
示例
examples/ 目录包含一系列自包含的示例,展示了如何使用 TRL 库完成各种应用。每个示例都位于一个独立的文件夹中,文件夹名称以其演示的方法和任务命名(例如 grpo_wordle、sft_gpt_oss_chess),并包含该示例所需的全部内容:脚本、笔记本、提示词、聊天模板以及评估代码。
基础单训练器训练脚本并非示例:它们位于 trl/scripts 中,并通过 命令行界面(trl sft、trl dpo、trl grpo 等)暴露。每个训练器的文档页面也包含一个完整的可运行代码片段。
共享资源位于examples/的根目录下:
examples/deepspeed_configs:DeepSpeed ZeRO 配置文件,通过--deepspeed传入,被许多示例使用。examples/fsdp_configs:FSDP 配置文件,通过--fsdp --fsdp_config传入(在命令行中仅使用--fsdp需要 transformers 5.10 或更高版本;在旧版本中,请在训练配置中设置fsdp=True)。examples/datasets:用于生成示例中使用的trl-lib数据集的脚本。
入门指南
按如下方式安装 TRL 及额外依赖项:
pip install --upgrade trl[quantization]
有关其他可选依赖项,请参见此处。基于 Notebook 的示例是独立的,可以在免费 Colab上运行;基于脚本的示例则适用于单 GPU、多 GPU 或 DeepSpeed 环境(参见下文分布式训练)。
索引
| 示例 | 描述 | 在 Colab 中打开 |
|---|---|---|
async_distillation_math | 在 GSM8K 上使用 experimental.async_distillation.AsyncDistillationTrainer 进行异步在线策略蒸馏:教师模型通过 vLLM 以 HTTP 方式提供服务。 | |
async_distillation_mopd | 使用 experimental.async_distillation.AsyncDistillationTrainer 进行多教师在线策略蒸馏(MOPD):将 Open-MOPD 的数学、代码和指令遵循专家融合到其 SFT 检查点中:在 60 步内,AIME24 得分从 17.5 提升至 24.2,IFEval 得分从 67.5 提升至 73.0(脚本、Hugging Face Jobs 启动器以及包含结果的 README)。 | |
async_grpo_harbor | 通过任意已安装的编码智能体(mini-swe-agent、opencode、claude-code、……)在 OpenEnv 上提供服务的 Harbor 任务套件上进行 AsyncGRPO 训练:智能体在沙箱中拥有自己的循环,而 TRL 则基于捕获代理记录的 token ids 和 logprobs 进行训练。 | |
async_grpo_math | 在 GSM8K 上使用 experimental.async_grpo.AsyncGRPOTrainer 进行异步 GRPO,将生成(vLLM 服务器)与训练解耦,并包含一个仅将适配器同步到 vLLM 服务器的 LoRA 变体。 | |
dpo_reduce_hallucinations | 使用 openbmb/RLAIF-V-Dataset 数据集对视觉语言模型进行 DPO 微调,以减少幻觉。 | |
gold_chatbot_arena | 使用 experimental.gold.GOLDTrainer 在 chatbot_arena_completions 数据集上,将 Qwen2 教师模型通过通用在线 Logit 蒸馏(GOLD)蒸馏到 Llama 3.2 学生模型(跨分词器),包含全量训练和 LoRA 变体。 | |
gold_qwen3_vl | 使用 experimental.gold.GOLDTrainer 将 Qwen3-VL-8B 通过通用在线 Logit 蒸馏(GOLD)蒸馏到更小的 VLM 学生模型中,涵盖同族(JSD 损失)和跨族(ULD 损失)蒸馏。 | |
grpo_2048 | 使用 GRPO 结合工具调用,训练模型玩 2048 游戏。 | |
grpo_browsergym | 在 BrowserGym OpenEnv 环境中使用 GRPO,包含 LLM 和 VLM 变体。 | |
grpo_carla | 在 CARLA 自动驾驶 OpenEnv 环境中使用 GRPO,包含 LLM 和 VLM 变体(多模态相机图像工具响应)。 | |
grpo_catch | 带有陷阱的 GRPO(OpenSpiel)OpenEnv 环境。 | |
grpo_continuous_batching | 使用 Transformers 的连续批处理引擎进行 GRPO,以在具有可变完成长度的大批量上实现更快的生成。 | |
grpo_echo | 在 Echo OpenEnv 环境中进行最小化的 GRPO 训练。 | |
grpo_harbor | 针对 Harbor 任务套件进行 GRPO 训练,支持可插拔的基础智能体(bash / jupyter / terminal_notes 测试框架)。请参阅 Harbor 集成 指南。 | |
grpo_ministral3_vl | 在免费 Colab 上使用 QLoRA 运行 GRPO Ministral 3。 | |
grpo_multi_env | 多环境 GRPO 训练:在同一次训练运行中同时使用 Wordle 和 Catch OpenEnv 环境。 | |
grpo_qlora | 在免费的 Colab 上使用 QLoRA 进行 GRPO。 | |
grpo_qwen3_vl | 在免费 Colab 上使用 QLoRA 对 Qwen3-VL 进行 GRPO 训练。 | |
grpo_rnj_1_instruct | 在 Colab 上使用 QLoRA 对 rnj-1-instruct 进行 GRPO 训练,以添加推理能力。 | |
grpo_seta | 在 openreward.ai 目录的 SETA ORS 环境中进行 GRPO 训练。请参阅 OpenReward 集成 指南。 | |
grpo_sql_agent | 使用 GRPO 训练一个通过查询 SQL 数据库来回答问题的智能体(包含脚本和 notebook;由于内存不足,无法在免费 Colab 上运行)。 | |
grpo_sudoku | 在 OpenEnv 环境中,使用 GRPO 玩数独(TextArena),从 SFT 模型开始:对于基础模型、SFT 模型和 SFT + GRPO 模型,在 26 个空格的情况下,分别解决了 30 个谜题中的 0 个、10 个和 22 个(包含脚本、notebook 以及带有结果的 README)。 | |
grpo_visual_math | 使用 lmms-lab/multimodal-open-r1-8k-verified 数据集对多模态模型进行 GRPO 微调,以实现推理能力。 | |
grpo_wordle | 使用 GRPO 在 OpenEnv 环境中玩 Wordle(TextArena)(脚本和笔记本)。 | |
gspo_math | 通过 GRPOTrainer 在 AI-MO/NuminaMath-TIR 数据集上进行数学推理的 GSPO。 | |
gspo_visual_math | 通过 GRPOTrainer 使用 GSPO 方法,并利用 lmms-lab/multimodal-open-r1-8k-verified 数据集对多模态模型进行推理微调。 | |
lfm2_5_moe_research_agent | LiquidAI/LFM2.5-8B-A1B 两步走:首先,在单个 8xH100 节点上,使用 SFTTrainer 对 xLAM 函数调用进行全量 SFT,加载时由 transformers 的 DistributedConfig 进行分片(采用带 token 调度的专家并行,外加 FSDP);然后,使用 GRPOTrainer 和 environment_factory(search / read 工具,精确匹配奖励)在 HotpotQA 上对多轮研究智能体进行 GRPO。 | |
mpo_visual_preferences | 通过 DPOTrainer 使用 MPO 方法,基于 HuggingFaceH4/rlaif-v_formatted 数据集和一组损失权重,根据偏好对齐多模态模型。 | |
online_dpo_visual_math | 使用 experimental.online_dpo.OnlineDPOTrainer 对视觉语言模型进行在线 DPO 微调。 | |
rloo_math | 使用 RLOOTrainer 在 AI-MO/NuminaMath-TIR 数据集上结合 vLLM 进行数学推理的 RLOO。 | |
rloo_visual_math | 使用 lmms-lab/multimodal-open-r1-8k-verified 数据集对多模态模型进行 RLOO 微调,以增强其推理能力。 | |
sdft_privileged_context | 使用 experimental.sdft.SDFTTrainer 进行自蒸馏微调,将特权(仅教师可见)上下文蒸馏到模型中。 | |
sdpo_math | 使用可验证的数学奖励以及针对 openai/gsm8k 的可选环境反馈,通过 experimental.sdpo.SDPOTrainer 进行 SDPO。 | |
sft_agent_traces | 在智能体轨迹上对 Qwen3.5-2B 进行 SFT:Qwen3.5-397B-A17B 作为 OpenCode 智能体,在 Hugging Face Sandboxes 中处理数据分析 Harbor 任务,并由 OpenEnv 记录。学生模型在已解决的对话上进行训练,且仅对助手部分计算损失。在数据未被任何轨迹触及的任务上,约 500 条轨迹将其性能从 7.6% 提升至 33.3%(包含 rollout、数据集和训练脚本,以及带有结果的 README)。 | |
sft_beam | 在单个 8xB300 节点上,使用 SFTTrainer 对 reflection/Beam-1.0-501B-A23B 进行 LoRA SFT,并在加载时通过 transformers 的 DistributedConfig 进行分片(采用带 token 调度的专家并行)。 | |
sft_diffusion_gemma | 通过扩展 SFTTrainer 以支持块扩散目标,对 DiffusionGemma 块扩散语言模型在 GSM8K 上进行 SFT。 | |
sft_gemma3 | 在 Codeforces COTS 数据集上对 Gemma 3 进行 SFT。 | |
sft_gemma3_vision | 在视觉到文本任务上对 Gemma 3 进行 SFT。 | |
sft_gpt_oss_chess | 使用 SFTTrainer 对 openai/gpt-oss-20b 进行国际象棋谜题的全量微调:TRL 会加载其反量化后的 MXFP4 专家,微调后的专家再重新量化为 MXFP4,以便像原始模型一样提供服务。 | |
sft_ministral3_vl | 在免费的 Colab 上使用 QLoRA 对 SFT Ministral 3 进行微调。 | |
sft_mistral_large_4 | 在单个 8xB300 节点上,基于 mistralai/Mistral-Large-4-1T-A52B 的 FP8 权重,使用 SFTTrainer 进行 LoRA SFT,并在加载时通过 transformers 的 DistributedConfig 进行分片(采用带 token 调度的专家并行)。 | |
sft_nemotron_3 | NVIDIA Nemotron 3 模型的 SFT(脚本和 LoRA 笔记本)。 | |
sft_qlora | 在免费的 Colab 上使用 QLoRA 进行 SFT。 | |
sft_qwen3_8b_1m_context | 在单个 8xH100 节点上,使用上下文并行对 Qwen3-8B 进行 1,048,576 个 token 序列的 SFT。 | |
sft_qwen3_vl | 在免费的 Colab 上使用 QLoRA 对 Qwen3-VL 进行 SFT。 | |
tail_sft_gsm8k | 通过为 SFTTrainer 添加初始策略损失过滤,在 GSM8K 上实现 TailSFT。 | |
sft_muse_spark_open | 在 8 个节点上使用 SFTTrainer 对 meta-models/Muse-Spark-Open-816B-A42B 进行 LoRA SFT,加载时通过 transformers 的 DistributedConfig 进行分片(采用带 token 调度的专家并行)。 | |
sft_tool_calling | 使用 SFT 和 QLoRA 为不支持原生工具调用的模型教授工具调用(脚本、聊天模板和笔记本)。 | |
sft_visual_chat | 在聊天场景下对视觉语言模型进行 SFT。仅在 LLaVA 1.5、LLaVA 1.6 和 Llama-3.2-11B-Vision-Instruct 上进行了测试;在其他模型架构中,用户可能会遇到意外行为。 | |
xtoken | 使用 experimental.gold.GOLDTrainer 进行 X-Token off-policy 跨分词器知识蒸馏,包括投影矩阵的准备工作。 |
分布式训练
您可以使用 torchrun 在多个 GPU 上运行示例脚本:
torchrun --nproc_per_node {NUM_GPUS} path_to_script.py --all_arguments_of_the_script对于 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根据需要调整 NUM_GPUS 和 --all_arguments_of_the_script。