AI・機械学習
上級

TRL (Transformer Reinforcement Learning)(ティーアールエル トランスフォーマー レインフォースメント ラーニング)

Hugging Faceが開発するLLMの強化学習・選好学習ライブラリ。PPO・DPO・GRPO・KTO・ORPOなど最新の選好最適化アルゴリズムをTransformers/PEFTと統合して提供し、SFTTrainer・DPOTrainer・PPOTrainerの各コンポーネントが業界標準として広く使われる。

0 回閲覧
0 いいね
2026/6/5 更新
関連タグ
ai
llm
fine-tuning
rlhf
dpo
ppo
huggingface
reinforcement-learning

TRL(Transformer Reinforcement Learning)とは

Hugging Faceが開発するLLMのファインチューニング・強化学習専用ライブラリ。2022年の公開以来、RLHF(Reinforcement Learning from Human Feedback)の実装標準として進化し続け、2024年時点でSFT・DPO・PPO・GRPO・KTO・ORPO・RewardModelingなど業界で注目される学習アルゴリズムを網羅している。

主要コンポーネント

SFTTrainer(Supervised Fine-Tuning)

from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")

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

peft_config = LoraConfig(
    r=16, lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
)

training_args = SFTConfig(
    output_dir="./sft-qwen2.5",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    learning_rate=2e-4,
    bf16=True,
)

trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
    peft_config=peft_config,
    tokenizer=tokenizer,
)
trainer.train()

DPOTrainer(Direct Preference Optimization)

from trl import DPOTrainer, DPOConfig

# DPOデータセット形式: {prompt, chosen, rejected}

training_args = DPOConfig(
    output_dir="./dpo-model",
    beta=0.1,  # KLダイバージェンス係数
    per_device_train_batch_size=2,
    learning_rate=5e-7,
)

trainer = DPOTrainer(
    model=model,
    ref_model=ref_model,  # 参照モデル(frozenのコピー)
    args=training_args,
    train_dataset=dataset,
    tokenizer=tokenizer,
)
trainer.train()

GRPOTrainer(Group Relative Policy Optimization)

DeepSeek-R1の訓練で使われたアルゴリズム。Reward Modelを使わずに、同一プロンプトから生成した複数の回答をグループ内で相対評価する。

from trl import GRPOTrainer, GRPOConfig

def reward_function(completions, **kwargs):
    return [1.0 if "正解" in c else 0.0 for c in completions]

training_args = GRPOConfig(
    output_dir="./grpo-model",
    num_generations=8,  # 各プロンプトから生成する回答数
    max_new_tokens=512,
)

trainer = GRPOTrainer(
    model=model,
    args=training_args,
    reward_funcs=reward_function,
    train_dataset=dataset,
    tokenizer=tokenizer,
)
trainer.train()

アルゴリズム比較

手法Reward Model特徴2025年の位置付け
SFT不要基本的な教師あり学習全モデルの起点
DPO不要オフライン選好学習・安定最も広く使われる
GRPO不要グループ相対評価・推論強化R1系モデルの標準
PPO必要オンライン強化学習・強力大規模RLHF
KTO不要バイナリフィードバックラベル取得容易
ORPO不要SFT+選好学習を同時実行計算効率良

Unslothとの連携

UnslothはTRLのSFTTrainer/DPOTrainerをバックエンドで使いつつ高速化カーネルを適用:

# Unsloth経由でTRL SFTTrainerを高速化
from unsloth import FastLanguageModel
from trl import SFTTrainer

model, tokenizer = FastLanguageModel.from_pretrained(...)

# 通常のTRL SFTTrainerをそのまま使用
# Unslothのカスタムカーネルが自動適用される
trainer = SFTTrainer(model=model, ...)
trainer.train()  # 2-5x高速
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/5