TRL 文档

示例

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

示例

简介

这些示例应该可以在以下任何设置中运行(使用相同的脚本)

  • 单 GPU
  • 多 GPU(使用 PyTorch 分布式模式)
  • 多 GPU(使用 DeepSpeed ZeRO-Offload 阶段 1、2 和 3)
  • fp16(混合精度)、fp32(正常精度)或 bf16(bfloat16 精度)

要在这些不同的模式下运行,首先使用 accelerate config 初始化 accelerate 配置

要使用 4 位或 8 位模型进行训练,请运行

pip install --upgrade trl[quantization]

Accelerate 配置

对于所有示例,你需要使用以下命令生成一个 🤗 Accelerate 配置文件

accelerate config # will prompt you to define the training configuration

然后,鼓励使用 accelerate launch 来启动任务!

维护的示例

脚本可用作如何使用 TRL 训练器的示例。它们位于 trl/scripts 目录中。此外,我们在 examples/scripts 目录中提供示例。这些示例会定期维护和测试。

文件 描述
examples/scripts/alignprop.py 此脚本展示了如何使用 AlignPropTrainer 微调扩散模型。
examples/scripts/bco.py 此脚本展示了如何使用带有 BCO 损失的 KTOTrainer 来微调模型,以使用 openbmb/UltraFeedback 数据集提高指令遵循、真实性、诚实性和帮助性。
examples/scripts/cpo.py 此脚本展示了如何使用 CPOTrainer 来微调模型,以使用 Anthropic/hh-rlhf 数据集提高帮助性和无害性。
examples/scripts/ddpo.py 此脚本展示了如何使用 DDPOTrainer 通过强化学习微调稳定扩散模型。
trl/scripts/dpo.py 此脚本展示了如何使用 DPOTrainer 微调模型。
examples/scripts/dpo_online.py 此脚本展示了如何使用 OnlineDPOTrainer 微调模型。
examples/scripts/dpo_vlm.py 此脚本展示了如何使用 DPOTrainer 微调视觉语言模型,以使用 openbmb/RLAIF-V-Dataset 数据集减少幻觉。
examples/scripts/evals/judge_tldr.py 此脚本展示了如何使用 HfPairwiseJudgeOpenAIPairwiseJudge 来评判模型生成的内容。
examples/scripts/gkd.py 此脚本展示了如何使用 GKDTrainer 微调模型。
trl/scripts/grpo.py 此脚本展示了如何使用 GRPOTrainer 微调模型。
examples/scripts/grpo_vlm.py 此脚本展示了如何使用 GRPOTrainer 微调多模态模型以进行推理,使用 lmms-lab/multimodal-open-r1-8k-verified 数据集。
examples/scripts/gspo.py 此脚本展示了如何通过 GRPOTrainer 使用 GSPO 微调模型以进行推理,使用 AI-MO/NuminaMath-TIR 数据集。
examples/scripts/gspo_vlm.py 此脚本展示了如何通过 GRPOTrainer 使用 GSPO 微调多模态模型以进行推理,使用 lmms-lab/multimodal-open-r1-8k-verified 数据集。
examples/scripts/kto.py 此脚本展示了如何使用 KTOTrainer 微调模型。
examples/scripts/mpo_vlm.py 此脚本展示了如何通过 DPOTrainer 使用 MPO,根据偏好对齐模型,使用 HuggingFaceH4/rlaif-v_formatted 数据集和一组带权重的损失权重。
examples/scripts/nash_md.py 此脚本展示了如何使用 NashMDTrainer 微调模型。
examples/scripts/orpo.py 此脚本展示了如何使用 ORPOTrainer 微调模型,以使用 Anthropic/hh-rlhf 数据集提高帮助性和无害性。
examples/scripts/ppo/ppo.py 此脚本展示了如何使用 PPOTrainer 微调模型,以提高其用积极情绪或物理描述性语言续写文本的能力。
examples/scripts/ppo/ppo_tldr.py 此脚本展示了如何使用 PPOTrainer 微调模型,以提高其生成 TL;DR 摘要的能力。
examples/scripts/prm.py 此脚本展示了如何使用 PRMTrainer 微调过程监督奖励模型 (PRM)。
examples/scripts/reward_modeling.py 此脚本展示了如何使用 RewardTrainer 在您自己的数据集上训练结果奖励模型 (ORM)。
examples/scripts/rloo/rloo.py 此脚本展示了如何使用 RLOOTrainer 微调模型,以提高其用积极情绪或物理描述性语言续写文本的能力。
examples/scripts/rloo/rloo_tldr.py 此脚本展示了如何使用 RLOOTrainer 微调模型,以提高其生成 TL;DR 摘要的能力。
examples/scripts/sft.py 此脚本展示了如何使用 SFTTrainer 微调模型。
examples/scripts/sft_gemma3.py 此脚本展示了如何使用 SFTTrainer 微调 Gemma 3 模型。
examples/scripts/sft_video_llm.py 此脚本展示了如何使用 SFTTrainer 微调视频语言模型。
examples/scripts/sft_vlm.py 此脚本展示了如何使用 SFTTrainer 在聊天设置中微调视觉语言模型。该脚本仅在 LLaVA 1.5LLaVA 1.6Llama-3.2-11B-Vision-Instruct 模型上进行过测试,因此用户在其他模型架构上可能会看到意外行为。
examples/scripts/sft_vlm_gemma3.py 此脚本展示了如何使用 SFTTrainer 在视觉到文本任务上微调 Gemma 3 模型。
examples/scripts/sft_vlm_smol_vlm.py 此脚本展示了如何使用 SFTTrainer 微调 SmolVLM 模型。
examples/scripts/xpo.py 此脚本展示了如何使用 XPOTrainer 微调模型。

这里还有一些更易于运行的 colab notebooks,您可以使用它们来开始使用 TRL

文件 描述
examples/notebooks/best_of_n.ipynb 此 notebook 演示了在使用 PPO 微调模型时如何使用 TRL 的“N 中选优”采样策略。
examples/notebooks/gpt2-sentiment.ipynb 此 notebook 演示了如何在 jupyter notebook 上复现 GPT2 imdb 情感微调示例。
examples/notebooks/gpt2-control.ipynb 此 notebook 演示了如何在 jupyter notebook 上复现 GPT2 情感控制示例。

我们还有一些其他维护较少的示例,可以作为参考

  1. research_projects:查看此文件夹以查找用于某些使用 TRL 的研究项目(LM 去毒化、Stack-Llama 等)的脚本

分布式训练

所有脚本都可以在多个 GPU 上运行,只需在调用 accelerate launch 时提供 🤗 Accelerate 配置文件的路径。要在一个或多个 GPU 上启动其中一个脚本,请运行以下命令(将 {NUM_GPUS} 替换为您的机器中的 GPU 数量,将 --all_arguments_of_the_script 替换为您的参数)。

accelerate launch --config_file=examples/accelerate_configs/multi_gpu.yaml --num_processes {NUM_GPUS} path_to_script.py --all_arguments_of_the_script

您还可以调整 🤗 Accelerate 配置文件的参数以满足您的需求(例如,混合精度训练)。

使用 DeepSpeed 进行分布式训练

大多数脚本都可以与 DeepSpeed ZeRO-{1,2,3} 一起在多个 GPU 上运行,以实现优化器状态、梯度和模型权重的有效分片。为此,请运行以下命令(将 {NUM_GPUS} 替换为您的机器中的 GPU 数量,将 --all_arguments_of_the_script 替换为您的参数,并将 --deepspeed_config 替换为 DeepSpeed 配置文件的路径,例如 examples/deepspeed_configs/deepspeed_zero1.yaml

accelerate launch --config_file=examples/accelerate_configs/deepspeed_zero{1,2,3}.yaml --num_processes {NUM_GPUS} path_to_script.py --all_arguments_of_the_script
< > 在 GitHub 上更新