StackLLaMA: Stack Exchange向けにRLHFでLLaMAをトレーニング
Hugging Faceは、Human Feedbackによる強化学習(RLHF)パイプラインをフルに活用し、Stack Exchangeの質問に回答するよう特別に訓練されたモデル、StackLLaMAをリリースしました。このプロジェクトは、ベースとなるLLaMAモデルを人間の好みに合わせるための3段階プロセス(Supervised Fine-tuning(SFT)、Reward Modeling(RM)、RLHF最適化)を示しています。
トレーニングパイプライン
StackLLaMAは、LLaMA 7Bモデルをベースに、Hugging FaceのTRLライブラリを利用して以下のステージを実装する形で開発されました。
1. Supervised Fine-tuning(SFT)
RLHFの前にモデルが対象ドメインで十分に熟練していることを保証するため、まずStackExchangeデータセットのサブセットを用いて因果言語モデリング目的で訓練されました。訓練効率を最大化するために、チームは「パッキング」という手法を使用しました。これは、複数のテキストをEOSトークンで連結し、モデルのコンテキストサイズに合わせてチャンクに分割することでパディングトークンを排除する技術です。
2. Reward Modeling(RM)
RLループ中にリアルタイムの人間フィードバックに依存する代わりに、報酬モデルを訓練して人間の好みを模倣させました。StackExchangeデータセットを使用し、チームは回答に対してアップボート数と質問者に受け入れられたかどうかに基づいてスコアを付与しました。
報酬モデルは、与えられたプロンプトに対して2つの候補回答の順位を予測するように訓練されました。10万組のペアのサブセットと評価用に5万件のホールドアウトセットを使用した結果、最終的な精度は67%に達しました。
3. Reinforcement Learning from Human Feedback(RLHF)
最終段階は、3つのステップからなるRLループを含みます:応答の生成、報酬モデルによる評価、そしてポリシー最適化ステップの実行です。
モデルが報酬モデルを「利用」して(高得点を得る意味不明な出力を生成する)ことを防ぐために、KLダイバージェンスペナルティが適用されます。このペナルティは、現在のポリシーの生成を凍結されたリファレンスモデルと比較し、出力が元のSFTモデルに近いままであることを保証します。
メモリ効率の高いトレーニング戦略
7Bパラメータのモデルを訓練するには大量のメモリが必要です。bf16では、パラメータとAdamオプティマイザだけで約70GBのメモリが必要になります。単一GPUや一般的なハードウェアでも利用できるように、Hugging Faceは以下の戦略を採用しました。
- PEFT と LoRA:
peftライブラリを使用し、Low-Rank Adaptation(LoRA)を適用し、モデルを8ビットでロードしました。これにより、パラメータ10億あたり約1.2〜1.4GBにメモリフットプリントが削減されます。 - Data Parallelism: 複数GPUにまたがって訓練をスケールさせるために、チームは
transformers.Trainerとaccelerateを使用し、コード変更なしで順方向および逆方向のパスを並列化できるようにしました。
技術的課題と不安定性
RLを用いたLLMの訓練は、StackLLaMAの開発中にHugging Faceチームが特定したいくつかの不安定要因に悩まされやすいです。
- Reward Exploitation: PPOアルゴリズムは報酬モデルの不完全さを利用する可能性があります。例えば、報酬モデルがコードブロックを高品質なStack Exchange回答と結びつけているため、モデルが繰り返しコードブロック(```) を生成することがあります。
- Negative KL Divergence: KLダイバージェンスは理論上は正の値ですが、
trlで使用される推定が特定のトークンが強制または抑制される(例:バッチパディング時やEOSトークンを抑制する際)と負になることがあります。これにより、PPOアルゴリズムが負のペナルティを追い求め、不安定になることがあります。 - Loss Spikes: チームは、損失が時折急上昇する現象を観測しており、これがさらなる訓練不安定性につながります。この問題の解決に取り組んでおり、
trlライブラリへ上流での修正を提案しています。
モデルの入手方法
StackLLaMAはHugging Face Hubで入手可能です。LLaMAのライセンスにより、アダプタ重みとモデルチェックポイントのみが公開されており、ベースのLLaMA重みへのアクセスはMeta AIに申請する必要があります。