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 – 可选的优化内核,可加快训练速度。
- CLI –
trl sft、trl dpo、trl 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 替换为 GRPOTrainer、DPOTrainer、KTOTrainer 或 RewardTrainer,并根据 README 中的说明调整模型/数据集以使用其他算法。
快速开始(CLI)
trl sft \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir ./qwen-sft
dpo 和 kto 也有类似的命令。
安装
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}
}
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch