trl README

The project's README from github.com/huggingface/trl. As one markdown file: README.md.

TRL - Transformers Reinforcement Learning

TRL Banner


A comprehensive library to post-train foundation models

License Documentation GitHub release Hugging Face Hub

🎉 What's New

📜 Training beyond 1M tokens: A new long context guide walks through the four things that break as sequences grow — the loss, the positions, the activations and the memory of a single GPU — and ends on an example that trains Qwen3-8B on million-token sequences on one 8-GPU node.

Overview

TRL is a cutting-edge library designed for post-training foundation models using advanced techniques like Supervised Fine-Tuning (SFT), Group Relative Policy Optimization (GRPO), and Direct Preference Optimization (DPO). Built on top of the 🤗 Transformers ecosystem, TRL supports a variety of model architectures and modalities, and can be scaled-up across various hardware setups.

Highlights

Installation

Python Package

Install the library using pip:

pip install trl

From source

If you want to use the latest features before an official release, you can install TRL from source:

pip install git+https://github.com/huggingface/trl.git

Repository

If you want to use the examples you can clone the repository with the following command:

git clone https://github.com/huggingface/trl.git

Quick Start

For more flexibility and control over training, TRL provides dedicated trainer classes to post-train language models or PEFT adapters on a custom dataset. Each trainer in TRL is a light wrapper around the 🤗 Transformers trainer and natively supports distributed training methods like DDP, DeepSpeed ZeRO, and FSDP.

SFTTrainer

Here is a basic example of how to use the 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 implements the Group Relative Policy Optimization (GRPO) algorithm that is more memory-efficient than PPO and was used to train Deepseek AI's 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()

[!NOTE] For reasoning models, use the reasoning_accuracy_reward() function for better results.

DPOTrainer

DPOTrainer implements the popular Direct Preference Optimization (DPO) algorithm that was used to post-train Llama 3 and many other models. Here is a basic example of how to use the DPOTrainer:

from datasets import load_dataset
from trl import DPOTrainer

dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")

trainer = DPOTrainer(
    model="Qwen/Qwen3-0.6B",
    train_dataset=dataset,
)
trainer.train()

KTOTrainer

KTOTrainer implements the Kahneman-Tversky Optimization (KTO) algorithm, which aligns models from simple binary (desirable / undesirable) feedback rather than paired preferences. Here is a basic example of how to use the KTOTrainer:

from datasets import load_dataset
from trl import KTOTrainer

dataset = load_dataset("trl-lib/kto-mix-14k", split="train")

trainer = KTOTrainer(
    model="Qwen/Qwen3-0.6B",
    train_dataset=dataset,
)
trainer.train()

RewardTrainer

Here is a basic example of how to use the 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()

Command Line Interface (CLI)

You can use the TRL Command Line Interface (CLI) to quickly get started with post-training methods like Supervised Fine-Tuning (SFT) or Direct Preference Optimization (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

KTO:

trl kto --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
    --dataset_name trl-lib/kto-mix-14k \
    --output_dir Qwen2.5-0.5B-KTO

Read more about CLI in the relevant documentation section or use --help for more details.

Development

If you want to contribute to trl or customize it to your needs make sure to read the contribution guide and make sure you make a dev install:

git clone https://github.com/huggingface/trl.git
cd trl/
pip install -e .[dev]

Experimental

A minimal incubation area is available under trl.experimental for unstable / fast-evolving features. Anything there may change or be removed in any release without notice.

Example:

from trl.experimental.new_trainer import NewTrainer

Read more in the Experimental docs.

Citation

@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}
}

License

This repository's source code is available under the Apache-2.0 License.

trl (huggingface/trl)

Searching Database…

19.5K ·GitHub
这是什么?TRL(Transformers Reinforcement Learning)是 Hugging Face 的一个库,用于对基础模型进行后训练——在 Transformers 技术栈之上,用 SFT、GRPO、DPO 等技术对模型做微调。
那它是我导入的 Python 库,还是我运行的应用?它是一个 Python 库:每个训练器(SFTTrainer、DPOTrainer、GRPOTrainer 等)都是对标准 Transformers Trainer 的轻量封装,所以能直接融入现有的 Transformers 工作流。
怎么安装,怎么开始第一次训练?用 pip install trl 安装(想要预发布功能也可以从源码安装);如果需要示例,可以克隆仓库,然后选一个训练器,把你的数据集喂给它。
训练能在本地机器上跑,还是需要云端 API 密钥?它在本地你自己的硬件上运行——不需要任何 API 密钥或账号。它构建在 Hugging Face 全家桶之上:Transformers,以及用于分布式训练的 Accelerate,还可以选用 PEFT 和 Unsloth。
这个库里所有东西都稳定到可以放心依赖吗?不完全稳定:trl.experimental 下的代码是不稳定、快速演变功能的孵化区——那里的任何东西都可能在任何版本中更改或移除,恕不另行通知。
要真正用起来,我需要多 GPU 集群吗?不一定:它既能跑在单张 GPU 上,也能扩展到多节点集群;借助 PEFT 集成(量化、LoRA/QLoRA),在普通硬件上也能微调大模型。
GRPO 是什么,为什么很多人选它而不是 PPO?GRPO(Group Relative Policy Optimization)是一种比 PPO 更省显存的强化学习方法——DeepSeek 训练 R1 用的就是它,TRL 以 GRPOTrainer 的形式提供了这个方法。
KTO 是什么,什么时候该用它?KTO(Kahneman-Tversky Optimization)只需要简单的理想/不理想二元反馈,不需要成对的偏好数据就能对齐模型,所以当你手上只有点赞/点踩这类标签时非常好用。TRL 为它提供了 KTOTrainer。
有没有知名模型是用这些训练器做后训练的?有——README 里提到,GRPO 被用来训练 DeepSeek R1,DPO 被用来对 Llama 3 等许多模型做后训练。
它能处理超长上下文的训练吗?可以。一份新的长上下文指南讲了随着序列变长会出问题的四个方面——损失、位置、激活值和单卡显存——最后给了一个在单台 8 GPU 节点上用百万 token 序列训练 Qwen3-8B 的例子。
Size
36.1 MB
Stars
19.5K
Age
6y
Commits · 90 Days