huggingface/trlView GitHub Homepage for Latest Official Releases
強化学習に基づいた大規模言語モデルのトレーニングライブラリ。SFT、PPO、DPOなどの高度な事後トレーニング技術をサポート。
Apache-2.0Pythontrlhuggingface 15.0k Last Updated: August 07, 2025
TRL - Transformer強化学習ライブラリ詳細紹介
プロジェクト概要
TRL(Transformer Reinforcement Learning)は、HuggingFaceが開発した最先端のライブラリであり、高度な技術を用いて基盤モデルを事後学習するために特化しています。このライブラリは、教師あり微調整(SFT)、近接方策最適化(PPO)、直接選好最適化(DPO)などの先進技術を使用して、基盤モデルを事後学習するように設計されています。
プロジェクトの特徴
- 強化学習ベース: 強化学習とTransformerアーキテクチャを組み合わせ、RL技術を通じて事前学習済み言語モデルの微調整プロセスを指導します。
- フルスタックソリューション: Transformer言語モデルを訓練するための完全なツールチェーンを提供します。
- HuggingFaceエコシステムとの統合: 🤗 Transformersエコシステム上に完全に構築されています。
コア機能
1. 多様な訓練方法
TRLは、アクセスしやすい様々なトレーナーを提供します。
- SFTTrainer: 教師あり微調整トレーナー
- GRPOTrainer: 群体相対方策最適化トレーナー
- DPOTrainer: 直接選好最適化トレーナー
- RewardTrainer: 報酬モデルトレーナー
2. 高効率な拡張性
- マルチハードウェアサポート: 🤗 Accelerateを通じて、シングルGPUからマルチノードクラスタへの拡張を実現します。
- メモリ最適化: DDPやDeepSpeedなどの分散訓練方法をサポートします。
- PEFT統合: 🤗 PEFTと完全に統合されており、量子化とLoRA/QLoRAを通じて限られたハードウェア上で大規模モデルを訓練できます。
- 性能加速: 🦥 Unslothを統合し、最適化されたカーネルを使用して訓練を加速します。
3. コマンドラインインターフェース
コードを書かずにモデルを微調整できるシンプルなCLIインターフェースを提供します。
主な応用シーン
1. 教師あり微調整 (SFT)
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()
2. 群体相対方策最適化 (GRPO)
GRPOアルゴリズムはPPOよりもメモリを節約でき、Deepseek AIのR1モデルの訓練に使用されました。
from datasets import load_dataset
from trl import GRPOTrainer
dataset = load_dataset("trl-lib/tldr", split="train")
def reward_num_unique_chars(completions, **kwargs):
return [len(set(c)) for c in completions]
trainer = GRPOTrainer(
model="Qwen/Qwen2-0.5B-Instruct",
reward_funcs=reward_num_unique_chars,
train_dataset=dataset,
)
trainer.train()
3. 直接選好最適化 (DPO)
DPOは、Llama 3などのモデルの事後学習に使用された人気のあるアルゴリズムです。
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import DPOConfig, DPOTrainer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
training_args = DPOConfig(output_dir="Qwen2.5-0.5B-DPO")
trainer = DPOTrainer(
model=model,
args=training_args,
train_dataset=dataset,
processing_class=tokenizer
)
trainer.train()
4. 報酬モデル訓練
from trl import RewardConfig, RewardTrainer
from datasets import load_dataset
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
model = AutoModelForSequenceClassification.from_pretrained(
"Qwen/Qwen2.5-0.5B-Instruct", num_labels=1
)
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
training_args = RewardConfig(output_dir="Qwen2.5-0.5B-Reward")
trainer = RewardTrainer(
args=training_args,
model=model,
processing_class=tokenizer,
train_dataset=dataset,
)
trainer.train()
インストール方法
標準インストール
pip install trl
開発バージョンインストール
pip install git+https://github.com/huggingface/trl.git
ソースコードインストール(開発への貢献用)
git clone https://github.com/huggingface/trl.git
cd trl/
pip install -e .[dev]
コマンドライン使用
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
技術的優位性
- 完全なエコシステム: HuggingFaceエコシステム上に完全に構築されており、既存のツールとシームレスに統合できます。
- マルチモーダルサポート: 様々なモデルアーキテクチャとモーダルをサポートします。
- 高い拡張性: シングルGPUからマルチノードクラスタへの柔軟な拡張が可能です。
- メモリ効率: 量子化とLoRA技術を通じて、大規模モデルの効率的な訓練を実現します。
- 使いやすさ: シンプルなAPIとCLIインターフェースを提供します。
- 本番環境対応: 本番環境における大規模な訓練ニーズをサポートします。
応用分野
- 対話システム: より優れたチャットボットと対話AIを訓練します。
- コンテンツ生成: テキスト生成モデルの品質と一貫性を向上させます。
- コード生成: コード生成モデルの性能を最適化します。
- 知識QA: 質問応答システムの精度を向上させます。
- クリエイティブライティング: クリエイティブライティングとコンテンツ作成AIを訓練します。
まとめ
TRLは、研究者と開発者に大規模言語モデルを訓練および最適化するための完全なツールセットを提供する、強力で使いやすいライブラリです。最新の強化学習技術とHuggingFaceエコシステムの利点を組み合わせることで、高品質なモデル訓練がよりアクセスしやすく、効率的になります。学術研究であろうと産業応用であろうと、TRLはTransformerモデルの事後学習を行うための理想的な選択肢です。