見出し画像

論文紹介 part7-3 :"The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities"を読む

はじめに

今回も同様に以下の論文を読んでいきます。
論文名:The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities
著者:Venkatesh Balavadhani Parthasarathy, Ahtsham Zafar, Aafaq Khan, and Arsalan Shahid

今回も引き続きステージ4のSelection of Fine-Tuning Techniques and Appropriate Model Configurationsについてみていきます。

part7-1ではパラメータ効率の良いファインチューニングParameter-Efficient Fine-Tuning(PEFT)の最も基本的な概念であるアダプタについて触れ、そのアダプタを低ランク行列に分解して計算量を削減するLoRA、量子化するQLoRA、重みを考慮したDoRAについて見てきました。

part7-2では重みの半分を固定し、残りの半分を更新するHalf Fine-Tuning(HFT)からLLMのhallucinationを抑制するラミにメモリチューニング、ニューラルネットワークの構成を専門的なサブセットに分けるMixture of Experts(MoE)、複数のLLMエージェントが協調してそれぞれの強みを発揮するMixture of Agents(MoA)、人間にとって好ましい応答をさせるためのファインチューニング(ポリシー最適化)のためのProximal Policy Optimization(PPO)について見てきました。

今回は6.9 Direct Preference Optimisation (DPO)以降を見ていきます。


6.9 Direct Preference Optimization (DPO)

  • Direct Preference Optimization (DPO)は、言語モデル(LM)を人間の好みに合わせるためのシンプルなアプローチを提供し、人間のフィードバックに基づく強化学習(RLHF)の複雑さを回避する

  • 通常、大規模な教師なしLMは、正確な行動制御が難しいため、RLHFのような手法が必要

  • この手法では、報酬モデルの作成やLMを調整して推定報酬を最大化する必要があり、不安定で計算負荷が高い場合がある

  • 一方で、DPOは、明示的な報酬モデリングや広範なハイパーパラメータ調整を不要にし、シンプルな分類目的を通じてLMを最適化します。これにより、安定性と効率性が向上する

  • DPOは、望ましい行動を最適化するために、好ましい応答の相対的な確率を増加させつつ、動的な重要度重み付けを取り入れてモデルの劣化を防ぐ

  • 結果として、DPOは好みの学習パイプラインを簡素化し、人間の好みに従ったLMをトレーニングするための効果的な方法となる

Pythonライブラリ

  • HuggingFaceのTRLパッケージでは、DPOトレーナーを利用して、好みデータから言語モデルをトレーニングできる

  • DPOトレーニングプロセスでは、非常に特定の形式に整形されたデータセットが必要

  • デフォルトのDPODataCollatorWithPaddingデータコレーターを使用する場合、データセットオブジェクトには以下の3つのエントリーが含まれている必要がある

  • Prompt(プロンプト)

  • Chosen(選択された応答)

  • Rejected(拒否された応答)

  • HuggingFaceでDPO対応のデータセットが提供されており、こちらからアクセスできる

The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunitiesより引用

6.9.1 DPOの利点

  1. 人間の好みに直接対応
    DPOは、モデルを直接最適化して人間の好みに合った応答を生成する。その結果、より好ましい出力を得られる。

  2. 代理目的への依存の最小化
    次の単語予測に依存する手法とは異なり、DPOは明示的な人間の好みを活用する。これにより、応答がより人間らしい振る舞いを反映するようになる。

  3. 主観的なタスクでの性能向上
    対話生成や創造的な執筆など主観的な判断を必要とするタスクにおいて、DPOはモデルを人間の好みに適合させる点で優れている。

6.9.2 DPOのベストプラクティス

  1. 高品質な好みデータ
    モデルの性能は好みデータの質に大きく依存する。データセットには明確で一貫性のある人間の好みが含まれていることを確認すべき。

  2. 最適なベータ値の設定
    参照モデルの影響を管理するために、さまざまなベータ値を試して調整する。高いベータ値は参照モデルの好みをより強く優先する。

  3. ハイパーパラメータの調整
    学習率、バッチサイズ、LoRA構成などのハイパーパラメータを最適化し、データセットやタスクに最適な設定を見つける。

  4. ターゲットタスクでの評価
    適切な指標を使用してモデルのターゲットタスクでの性能を継続的に評価し、進捗をモニタリングし、望ましい結果が達成されていることを確認しする。

  5. 倫理的配慮
    好みデータに潜むバイアスに注意し、それを軽減する手段を講じる。これにより、モデルがバイアスを採用・増幅することを防ぐ。

6.9.3 DPO技術を用いたモデルトレーニングのチュートリアル

DPOトレーニングのチュートリアルは、SFT(Supervised Fine-Tuning)およびDPOトレーニングスクリプトの完全なソースコードを含めてこちらで提供されている。

6.9.4 DPOはLLMの調整においてPPOより優れているか?

  • 最近の研究では、DPOがLLM(大規模言語モデル)の調整においてPPOより優れているかどうかを検証している

  • この研究では、RLHF(人間のフィードバックを用いた強化学習)における報酬ベースおよび報酬不要な手法の有効性を調査している

  • 報酬ベースの手法
    OpenAIの手法のように、好みデータから構築された報酬モデルを利用し、PPOのようなアクター・クリティックアルゴリズムを適用して報酬信号を最適化する

  • 報酬不要な手法
    DPO、RRHF、PROなどが含まれ、明示的な報酬関数を使用せず、DPOは報酬関数の対数表現を通じてポリシーの最適化に焦点を当てている

主な研究結果

  1. DPOのバイアスの可能性
    DPOは分布外の応答を利用することで偏った解を生成する可能性がある

  2. 分布シフトの影響
    DPOの性能は、モデル出力と好みデータセット間の分布のずれによって大きな影響を受ける

  3. 課題タスクでの性能不足
    DPOは静的データトレーニングよりも反復的なプロセスで改善が見られるものの、特にコード生成のような難しいタスクでは性能向上が見られない

  4. PPOの重要な要素
    PPOにおけるアドバンテージ正規化、大規模バッチサイズ、参照モデルのパラメータに対する指数移動平均の更新が、最適な性能を達成するために重要であることが明らかになっている

実践結果

PPOは多様なタスクにおいて堅牢な性能を発揮し、特にCodeContestデータセットでは、34BパラメータのPPOモデルがAlphaCode-41Bを上回る性能を示した。これにより、困難なコード競技タスクにおいても顕著な性能向上が確認されている。

6.10 オッズ比による好み最適化(Odds-Ratio Preference Optimization, ORPO)

  • ORPOは、言語モデルの出力を望ましい応答に調整する新しいアプローチであり、望ましくない出力に対して罰則メカニズムを導入する

  • 従来の教師付きファインチューニング(SFT)手法が正しい応答の尤度を最大化することに重点を置くのに対し、ORPOは不要な生成物にペナルティを課す特定のオッズ比に基づく損失を追加する

  • この手法は、参照モデルに依存せず、大規模実装において効率的に好みの調整を行う洗練された方法を提供する

数式定義

1: 入力シーケンス xxx に対する出力シーケンス yyy の長さ mmm の対数尤度:

$$
\log P_\theta (y \mid x) = \frac{1}{m} \sum_{i=1}^m \log P_\theta (y_i \mid x)
$$

2: 入力 xxx を与えられた場合の出力 yyy のオッズ:

$$
\text{odds}_\theta (y \mid x) = \frac{P_\theta (y \mid x)}{1 - P_\theta (y \mid x)}
$$

3: 好ましい応答 ywy_wyw​ とあまり好ましくない応答 yly_lyl​ のオッズ比:

$$
\text{OR}_\theta (y_w, y_l \mid x) = \frac{\text{odds}_\theta (y_w \mid x)}{\text{odds}_\theta (y_l \mid x)}
$$

ORPOの損失関数
1: 教師付きファインチューニング損失(SFT)

$$
L_{\text{SFT}} = - \frac{1}{M} \sum_{k=1}^M \sum_{i=1}^{|V|} y_k^i \log p_k^i
$$

2: オッズ比損失

$$
L_{\text{OR}} = - \log \sigma \left( \log \frac{\text{odds}_\theta (y_w \mid x)}{\text{odds}_\theta (y_l \mid x)} \right)
$$

総損失関数

$$
L_{\text{ORPO}} = L_{\text{SFT}} + \lambda L_{\text{OR}}
$$

ORPOの利点

  • 統一的な好み調整:ファインチューニングと好み調整を別々に行う必要がなく、計算負荷を削減する

  • 最先端の性能:AlpacaEvalやMT-Benchなどのベンチマークタスクで、LLaMAやMistralといったモデルを用いて優れた性能を発揮

6.11 大規模言語モデル(LLM)のプルーニング

  • プルーニング(剪定)は、ニューラルネットワークから不要または冗長な要素を削除してサイズや複雑性を低減し、効率性と性能を向上させる手法

  • このプロセスは、モバイルデバイスやエッジコンピューティング、組み込みシステムのようなリソース制約のある環境でAIモデルを展開する際の課題に対応する

主なプルーニング手法

  1. 重みプルーニング
    出力に最小限の影響しか与えない重みや接続を削除する。モデルのパラメータ数や演算量を減らすが、メモリ使用量や遅延が必ずしも減少するわけではない。

  2. ユニットプルーニング
    出力への寄与が最も少ないニューロンやユニットを削除する。この手法はメモリ使用量や遅延を削減するが、性能維持には再学習が必要な場合がある。

  3. フィルタープルーニング
    畳み込みニューラルネットワーク(CNN)において、出力に対して重要度が低いフィルターやチャネルを削除する。この手法も再学習を要する場合がある。

6.11.1 プルーニングの適用タイミング

  1. 事前学習前のプルーニング
    事前知識やヒューリスティックスを活用して最適なネットワーク構造を決定。トレーニング中の時間とリソースを節約できるが、慎重な設計と実験が必要。

  2. 事後学習のプルーニング
    学習後にネットワーク構成の重要性や影響を評価して実施。この手法は性能を維持しやすいが、品質や堅牢性を確保するための追加の検証が必要。

  3. 動的プルーニング
    推論時または実行時にフィードバックやシグナルに基づいてネットワーク構造を調整。シナリオやタスクに応じた最適化が可能ですが、計算負荷が増加する可能性がある

6.11.2 プルーニングの利点

  1. サイズと複雑性の削減:モデルが軽量化され、保存、転送、更新が容易になる。

  2. 効率性と性能の向上:プルーニングされたモデルはより高速でエネルギー効率が高く、信頼性も向上する。

  3. 一般化と精度の向上:プルーニングによりモデルが過学習しにくくなり、新しいデータやタスクへの適応性が向上する。

6.11.3 プルーニングの課題

  1. サイズ削減と性能のバランス:サイズや複雑性の削減と性能維持の最適なバランスを取ることは困難。過剰または不十分なプルーニングはモデル品質を損なう可能性がある。

  2. 適切な手法の選択:ニューラルネットワークの種類や構造に応じたプルーニング手法、基準、目標の選定が重要。

  3. 評価と検証:プルーニングされたモデルは、エラーやバイアス、脆弱性が性能や堅牢性に影響を与えないことを確認するための徹底的な評価と検証が必要。


DPOは、言語モデルを人間の好みに適応させるための効率的かつシンプルなアプローチです。従来のRLHF(人間のフィードバックを用いた強化学習)では、報酬モデルの構築や複雑なアルゴリズム調整が必要でしたが、DPOはこの複雑さを回避します。分類タスクの枠組みを活用し、明示的な報酬モデリングを不要にすることで、モデルの安定性と効率性を向上させています。

特に対話生成や創造的な執筆など、主観的なタスクにおいては、DPOがモデルのパフォーマンス向上させます。さらに、HuggingFaceのTRLパッケージを使用して容易にトレーニングが可能であり、柔軟性の高い手法です。

ORPOは、DPOの進化版ともいえる新しいアプローチです。特定のオッズ比に基づく損失関数を導入することで、望ましくない応答にペナルティを与えながら、好ましい応答を強化します。この手法は、参照モデルに依存せず、大規模実装において効率的な調整を可能にします。

ORPOの設計は非常に理論的で、損失関数に「オッズ比」と「ロジスティック関数」を組み合わせた点が特徴的です。これにより、ファインチューニングと好み調整を統合し、計算負荷を削減すると同時に高い性能を実現しています。特にベンチマークタスクでの成果から、将来的な言語モデル調整の標準手法としての期待が高まります。

LLMのプルーニングは、モデルの効率性を向上させるための重要な手法です。リソースが制約される環境、例えばモバイルデバイスやエッジコンピューティングでは、プルーニングによる軽量化が特に重要になります。

プルーニング手法としては、重みプルーニング、ユニットプルーニング、フィルタープルーニングの3つが挙げられます。それぞれの手法が特定の状況に適しており、適切な選択と設計が鍵となります。また、プルーニングはサイズ削減と性能維持のトレードオフが伴うため、性能への影響を注意深く評価する必要があります。

DPOとORPOはどちらも言語モデルの調整において興味深いアプローチを提供しており、特にモデルの効率性や好みへの適応性が求められるシナリオで役立ちます。ORPOのオッズ比を利用した損失関数の設計は数学的にもわかりやすいです。一方で、プルーニングに関する議論も、モデル軽量化における実践的な重要性を再認識させる内容でした。

これらの技術を組み合わせることで、より効率的で人間らしい応答を生成できるモデルの実現が期待されます。特に、DPOやORPOの応用例が増えることで、AIモデルの開発プロセスがよりシンプルかつ効果的になると感じました。

次は7章のEvaluation and Validation以降を見ていこうと思います。

いいなと思ったら応援しよう!