huggingface/trl

Train transformer language models with reinforcement learning.

TL;DR

TRL (Transformers Reinforcement Learning) 是一个 Hugging Face 库,为 后训练 大型语言模型提供即用型训练器类。它实现了多种现代对齐/微调算法(SFT、GRPO、DPO、KTO、奖励建模、知识蒸馏),并集成到 🤗 Transformers、Accelerate、PEFT 和 DeepSpeed 生态系统中,您只需编写最少的代码,即可在单个 GPU 或多节点集群上运行。


功能

  • 监督微调 (SFT) – 经典的指令跟随微调。
  • 组相对策略优化 (GRPO) – PPO 的内存高效替代方案,用于训练 DeepSeek‑R1。
  • 直接偏好优化 (DPO) – 基于偏好的对齐方法,驱动了 Llama 3。
  • 卡尼曼-特沃斯基优化 (KTO) – 从二元“好/坏”反馈中学习。
  • 奖励建模 – 在偏好数据上训练奖励模型。
  • DistillationTrainer – 使用分块 JSD 损失的在线策略知识蒸馏,由 vLLM 加速。

所有训练器都是 🤗 Transformers Trainer 的轻量封装,继承其对分布式策略(DDP、DeepSpeed ZeRO、FSDP)和混合精度的支持。

主要集成

  • 🤗 Accelerate – 从单个 GPU 轻松扩展到多个节点。
  • 🤗 PEFT – LoRA/QLoRA 量化使您能在中等硬件上微调数十亿参数的模型。
  • 🦥 Unsloth – 可选的优化内核,可加快训练速度。
  • CLItrl sfttrl dpotrl kto 等命令,让您无需编写 Python 代码即可启动常见任务。

快速开始(Python)

from trl import SFTTrainer
from datasets import load_dataset

ds = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(model="Qwen/Qwen2.5-0.5B", train_dataset=ds)
trainer.train()

SFTTrainer 替换为 GRPOTrainerDPOTrainerKTOTrainerRewardTrainer,并根据 README 中的说明调整模型/数据集以使用其他算法。

快速开始(CLI)

trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name trl-lib/Capybara \
  --output_dir ./qwen-sft

dpokto 也有类似的命令。

安装

pip install trl               # 稳定版本
# 或者获取最新代码
pip install git+https://github.com/huggingface/trl.git

谁应该使用它?

  • 需要近期 LLM 对齐算法经过实战验证实现的研究人员和工程师。
  • 已经使用 🤗 Transformers 并希望添加 RL 风格微调,而无需从头构建训练循环的团队。
  • 希望通过 CLI 在自己的数据集上实验 SFT、DPO、GRPO、KTO 或知识蒸馏的任何人。

了解更多

  • 官方文档:https://huggingface.co/docs/trl
  • README 中链接的论文(例如:GRPO 2024‑02‑03,DPO 2023‑05‑18)。
  • trl.experimental 包用于体验前沿功能。

引用

@software{vonwerra2020trl,
  title   = {{TRL: Transformers Reinforcement Learning}},
  author  = {von Werra, Leandro and others},
  year    = {2020},
  url     = {https://github.com/huggingface/trl},
  license = {Apache-2.0}
}

相关