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

相關