huggingface/trl

Train transformer language models with reinforcement learning.

TL;DR

TRL (Transformers Reinforcement Learning) は、🤗 Transformers、Accelerate、PEFT、DeepSpeed エコシステムに統合された Hugging Face ライブラリで、後期訓練 用の即時利用可能なトレーナークラスのコレクションを提供します。SFT、GRPO、DPO、KTO、リワードモデル、知識蒸留などの現代的なアライメント/ファインチューニングアルゴリズムを実装しており、1つのGPUからマルチノードクラスタまで、最小限のコードで実行可能です。


機能

  • 教師付きファインチューニング (SFT) – 一般的なインストラクション対応ファインチューニング。
  • グループ相対方策最適化 (GRPO) – PPOのメモリ効率の良い代替手段。DeepSeek‑R1の訓練に使用。
  • 直接的好み最適化 (DPO) – Llama 3を支えた好みベースのアライメント。
  • カーニーマン・ツベリス最適化 (KTO) – 二値の「良い/悪い」フィードバックから学習。
  • リワードモデルの訓練 – 好みデータに基づいてリワードモデルを訓練。
  • DistillationTrainer – チャンク化されたJSD損失を用いたオンポリシー知識蒸留。vLLMで加速。

すべてのトレーナーは、🤗 Transformers Trainer の薄いラッパーであり、分散戦略(DDP、DeepSpeed ZeRO、FSDP)およびミックスド・プレシジョンのサポートを継承しています。

主な統合

  • 🤗 Accelerate – 1GPUから多数のノードまで簡単にスケーリング。
  • 🤗 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()

他のアルゴリズムには SFTTrainerGRPOTrainerDPOTrainerKTOTrainer、または 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スタイルのファインチューニングを、トレーニングループをゼロから構築せずに追加したい人。
  • 自分のデータセットでSFT、DPO、GRPO、KTO、または知識蒸留をCLIで実験したい人。

さらに学ぶには

  • 公式ドキュメント: 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}
}

関連