OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  trl — Hugging Face 出品的强化学习微调工具箱

trl — Hugging Face 出品的强化学习微调工具箱

 
  circle ·  2026-02-27 03:17:41 · 6 次点击  · 0 条评论  

TRL - Transformers 强化学习

TRL 横幅


一个用于后训练基础模型的综合库

许可证 文档 GitHub 发布 Hugging Face Hub

🎉 最新动态

OpenEnv 集成: TRL 现已支持 OpenEnv,这是 Meta 推出的开源框架,用于在强化学习和智能体工作流中定义、部署和与环境交互。

请在我们的专属文档中探索如何将 TRL 与 OpenEnv 无缝集成。

概述

TRL 是一个前沿库,旨在使用监督微调(SFT)、组相对策略优化(GRPO)和直接偏好优化(DPO)等先进技术对基础模型进行后训练。它构建于 🤗 Transformers 生态系统之上,支持多种模型架构和模态,并可在各种硬件设置上进行扩展。

亮点

  • 训练器:通过 SFTTrainerGRPOTrainerDPOTrainerRewardTrainer 等训练器,轻松使用各种微调方法。

  • 高效且可扩展

  • 利用 🤗 Accelerate,通过 DDPDeepSpeed 等方法,从单 GPU 扩展到多节点集群。
  • 🤗 PEFT 完全集成,通过量化和 LoRA/QLoRA 技术,在有限的硬件上训练大型模型。
  • 集成 🦥 Unsloth,使用优化的内核加速训练。

  • 命令行界面(CLI):一个简单的界面,无需编写代码即可使用模型进行微调。

安装

Python 包

使用 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()

GRPOTrainer

GRPOTrainer 实现了组相对策略优化(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() 函数可以获得更好的效果。

DPOTrainer

DPOTrainer 实现了流行的直接偏好优化(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()

命令行界面(CLI)

你可以使用 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 许可证

6 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 16 ms
Developed with Cursor