vLLM V0からV1へ:RLにおける修正より先に正しさを
ServiceNow AIチームは、強化学習トレーニングパイプラインをvLLM V0からV1に移行する際、4つのバックエンド問題(logprobsセマンティクス、ランタイムデフォルト、インフライトウェイト更新、fp32 lm_head)を特定しました。バックエンドの正しさを優先して修正し、その後で目的側の修正を検討することで、V0リファレンスとの完全なパリティを達成しました。
記事インテリジェンス
要点
- 移行目標:V1がトレーナーが期待するlogprobsを返すことを確認し、V0ベースラインと比較する
- 4つのバックエンド修正:processed_logprobs、V1固有のデフォルトの無効化、インフライト更新の一致、fp32 lm_headの有効化
- 教訓:推論バックエンドの正しさを先に修正し、その後で切断重要度サンプリングなどの目的側修正を検討する
重要な理由
このニュースが重要なのは、移行目標:V1がトレーナーが期待するlogprobsを返すことを確認し、V0ベースラインと比較するためです。
技術的影響
モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。
ServiceNow AIチームは、強化学習(RL)トレーニングパイプラインで使用する推論エンジンをvLLM V0からV1に移行した経験を報告しました。彼らの基本原則は、バックエンドの動作を先に修正し、その後にRL目標を調整するというものでした。この戦略により、推論エラーと目標修正の混同を避けました。
移行の目標は単純で、V1がトレーナーが期待する形式のlogprobsを返すことを確認し、同じワークロードをV0参照と比較することでした。初期のV1実行では、クリップ率、KLダイバージェンス、エントロピー、報酬といったトレーニング指標が明らかに参照から乖離していました。チームは失敗モードを3つに分類しました:セマンティックミスマッチ、推論パスミスマッチ、目標ミスマッチです。最初の2つをバックエンドの問題として優先的に排除しました。
最初の修正はlogprobsセマンティクスでした。V1はデフォルトでモデル生の出力からlogprobsを返しますが、トレーナーは温度スケーリング、ペナルティ、top-k/top-pフィルタリングなどの後処理を経たlogprobsを期待していました。logprobs-mode=processed_logprobsを設定することで平均オフセットは修正されましたが、トレーニング曲線にはまだギャップがありました。
2番目の修正はランタイムデフォルトです。V1はプレフィックスキャッシングや非同期スケジューリングなどの新しいデフォルトを導入しており、これらはV0にはありませんでした。これらを無効にすることで、V1特有の自由度を取り除きました。
3番目の修正はインフライトウェイト更新です。V0は実行をブロックし、新しい重みをロードし、キャッシュを明示的に無効にせずに再開します。V1ではpause_generation(mode="keep", clear_cache=False)とresume_generation()を使用して、キャッシュを保持するようにしました。
4番目の修正はfp32 lm_headです。トレーナーはfp32精度でロジットを計算しますが、V1は異なる精度を使用する可能性がありました。fp32 lm_headパスを有効にすることで、報酬曲線が最終的にV0参照と一致しました。この詳細はMiniMax-M1の技術報告書やScaleRL論文でも言及されています。
消去実験を通じて、チームはprocessed_logprobsだけでは不十分であり、バッチ不変性や最初のV1実行は公平なベースラインではないことを確認しました。最終的な結論は、目的側の修正(例:切断重要度サンプリング)を検討する前に、まず推論バックエンドの正しさを確保すべきであるということです。チームは、推論パリティが回復した後、行動ポリシーのlogprobsを保持する、トレーナー側の旧ポリシーのlogprobsを再計算する、バックエンドの不一致修正をポリシー更新比率から分離するなど、通常の非同期/オフポリシークリーンアップを行う予定です。