一个用于后训练基础模型的综合库
OpenEnv 集成: TRL 现已支持 OpenEnv,这是 Meta 推出的开源框架,用于在强化学习和智能体工作流中定义、部署和与环境交互。
请在我们的专属文档中探索如何将 TRL 与 OpenEnv 无缝集成。
TRL 是一个前沿库,旨在使用监督微调(SFT)、组相对策略优化(GRPO)和直接偏好优化(DPO)等先进技术对基础模型进行后训练。它构建于 🤗 Transformers 生态系统之上,支持多种模型架构和模态,并可在各种硬件设置上进行扩展。
训练器:通过 SFTTrainer、GRPOTrainer、DPOTrainer、RewardTrainer 等训练器,轻松使用各种微调方法。
高效且可扩展:
集成 🦥 Unsloth,使用优化的内核加速训练。
命令行界面(CLI):一个简单的界面,无需编写代码即可使用模型进行微调。
使用 pip 安装库:
pip install trl
如果你想在官方发布前使用最新功能,可以从源码安装 TRL:
pip install git+https://github.com/huggingface/trl.git
如果你想使用示例,可以使用以下命令克隆仓库:
git clone https://github.com/huggingface/trl.git
为了获得更大的灵活性和对训练的控制,TRL 提供了专用的训练器类,用于在自定义数据集上对语言模型或 PEFT 适配器进行后训练。TRL 中的每个训练器都是 🤗 Transformers 训练器的轻量级封装,并原生支持 DDP、DeepSpeed ZeRO 和 FSDP 等分布式训练方法。
SFTTrainer以下是使用 SFTTrainer 的基本示例:
from trl import SFTTrainer
from datasets import load_dataset
dataset = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(
model="Qwen/Qwen2.5-0.5B",
train_dataset=dataset,
)
trainer.train()
GRPOTrainerGRPOTrainer 实现了组相对策略优化(GRPO)算法,该算法比 PPO 更节省内存,并用于训练 Deepseek AI 的 R1。
from datasets import load_dataset
from trl import GRPOTrainer
from trl.rewards import accuracy_reward
dataset = load_dataset("trl-lib/DeepMath-103K", split="train")
trainer = GRPOTrainer(
model="Qwen/Qwen2.5-0.5B-Instruct",
reward_funcs=accuracy_reward,
train_dataset=dataset,
)
trainer.train()
[!注意]
对于推理模型,使用reasoning_accuracy_reward()函数可以获得更好的效果。
DPOTrainerDPOTrainer 实现了流行的直接偏好优化(DPO)算法,该算法用于后训练 Llama 3 和许多其他模型。以下是使用 DPOTrainer 的基本示例:
from datasets import load_dataset
from trl import DPOTrainer
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
trainer = DPOTrainer(
model="Qwen3/Qwen-0.6B",
train_dataset=dataset,
)
trainer.train()
RewardTrainer以下是使用 RewardTrainer 的基本示例:
from trl import RewardTrainer
from datasets import load_dataset
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
trainer = RewardTrainer(
model="Qwen/Qwen2.5-0.5B-Instruct",
train_dataset=dataset,
)
trainer.train()
你可以使用 TRL 命令行界面(CLI)快速开始使用监督微调(SFT)或直接偏好优化(DPO)等后训练方法:
SFT:
trl sft --model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir Qwen2.5-0.5B-SFT
DPO:
trl dpo --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--dataset_name argilla/Capybara-Preferences \
--output_dir Qwen2.5-0.5B-DPO
请在相关文档部分阅读更多关于 CLI 的信息,或使用 --help 获取更多详情。
如果你想为 trl 做贡献或根据你的需求进行定制,请务必阅读贡献指南,并确保进行开发安装:
git clone https://github.com/huggingface/trl.git
cd trl/
pip install -e .[dev]
trl.experimental 下提供了一个最小的孵化区域,用于存放不稳定/快速演变的特性。其中的任何内容都可能在任意版本中更改或移除,恕不另行通知。
示例:
from trl.experimental.new_trainer import NewTrainer
请在实验性功能文档中阅读更多信息。
@software{vonwerra2020trl,
title = {{TRL: Transformers Reinforcement Learning}},
author = {von Werra, Leandro and Belkada, Younes and Tunstall, Lewis and Beeching, Edward and Thrush, Tristan and Lambert, Nathan and Huang, Shengyi and Rasul, Kashif and Gallouédec, Quentin},
license = {Apache-2.0},
url = {https://github.com/huggingface/trl},
year = {2020}
}
本仓库的源代码遵循 Apache-2.0 许可证。