AI・機械学習
上級

ORPO(オッズ比選好最適化)(オーアールピーオー)

SFT(教師あり学習)とDPO(選好最適化)を1ステップに統合したアライメント手法。通常2段階が必要なSFT後のDPOを、オッズ比ペナルティを組み込んだ単一の損失関数で同時達成し、学習コストを約半分に削減する。2024年POSTECH発表。

0 回閲覧
0 いいね
2026/5/24 更新
関連タグ
アライメント
SFT統合
参照モデル不要
選好学習
計算効率
POSTECH

ORPO(オッズ比選好最適化)とは

ORPO(Odds Ratio Preference Optimization)は、韓国POSTECH(浦項工科大学)のJiwoo Hong らが2024年3月に発表した論文「ORPO: Monolithic Preference Optimization without Reference Model」で提案されたLLMアライメント手法。SFTとDPOを1つの損失関数に統合し、参照モデルなしでアライメントを達成する。

従来の2段階パイプラインの問題

従来のアライメント(SFT→DPO)は:

  • 合計学習時間: SFT 3〜6時間 + DPO 6〜12時間 = 合計最大18時間
  • VRAM: DPO段階では参照モデルとトレーニングモデルの2つを同時ロード
  • ハイパーパラメータ: SFTとDPOで別々に調整が必要

ORPOの統合損失関数

オッズ比(Odds Ratio)はP/(1-P)で表す「起こりやすさ」の比率。ORPO損失はSFTの交差エントロピーにオッズ比ベースのペナルティ項を加算する:L_ORPO = L_SFT + λ · L_OR。chosen応答のオッズをrejected応答のオッズより高めることで選好学習を実現する。

ORPO vs DPO スペック比較

項目従来SFT+DPOORPO
学習段階数2段階1段階
参照モデル必要(VRAM 2倍)不要
VRAM使用量(7B)約80GB約40GB
学習時間(7B・A100)12〜18時間6〜9時間
λパラメータなし0.1〜1.0
TRL実装DPOTrainerORPOTrainer

具体的なコード例(TRL ORPOTrainer)

from trl import ORPOTrainer, ORPOConfig

training_args = ORPOConfig(
    lambda_orpo=0.1,    # L_ORの重み(デフォルト0.1)
    learning_rate=8e-6,
    per_device_train_batch_size=2,
    gradient_accumulation_steps=8,
    num_train_epochs=1,
    output_dir="./orpo-model",
)

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

ベンチマーク比較(論文・2024年値)

モデル・手法MT-BenchAlpacaEval 2.0IFEval
Llama-3-8B + SFT only7.25.3%36.4%
Llama-3-8B + DPO8.015.1%52.3%
Llama-3-8B + ORPO8.116.2%53.7%
Mistral-7B + ORPO7.914.8%51.2%

自作PC環境での実行要件

  • 7B ORPO: RTX 4090 24GB単体でQLoRA(4bit量子化)+ORPO可能。
  • 13B ORPO: RTX 4090×2(48GB)またはA100 40GB。
  • 70B ORPO: H100 80GB×4または4090 24GB×8。
  • 学習時間目安: 7BモデルをRTX 4090で1エポック実施時、5万件で約8〜12時間。

よくある質問(FAQ)

Q1: ORPOはDPOを完全に置き換えられますか? A: 多くのケースで置き換え可能。特に計算リソースが限られた環境や、SFTデータとDPOデータを別々に管理するコストを削減したい場合に有効。各段階を細かくチューニングしたい上級ユーザーには、分離した2段階の方が制御しやすい。

Q2: λパラメータはどう設定すべきですか? A: デフォルト0.1が推奨出発点。λを上げるとアライメント(選好最適化)を重視し、下げるとSFT(能力獲得)を重視する。0.05〜0.5の範囲で実験することが多い。

Q3: データはどう準備しますか? A: SFTデータとDPOデータを統合した形式(prompt/chosen/rejected)が必要。HuggingFaceのUltraChat+UltraFeedbackを結合した形式が実績多数。

まとめ

  • ORPOはSFT+DPOを1段階に統合し、学習コストを約50%削減するアライメント手法
  • 参照モデルが不要なためVRAM使用量・実装複雑度が大幅に低減
  • TRLのORPOTrainerで実装されており、DPOTrainerからの移行は比較的容易
  • 2025〜2026年の効率的なLLMファインチューニングの有力選択肢
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/5/24