Liger GRPO と TRL の統合

Liger GRPO の TRL への統合

Liger GRPO は、Group Relative Policy Optimization (GRPO) のトレーニングを最適化するために、TRL(Transformer Reinforcement Learning)ライブラリと統合されています。しかし、現在の報告では、特定の分散トレーニング構成を使用した際に互換性の問題があることが示されています。

DeepSpeed ZeRO-3 互換性の問題

DeepSpeed ZeRO-3 で構成されたマルチ GPU トレーニング中に、Liger GRPO ロスが失敗する技術的な問題が特定されました。

エラーの詳細

Qwen/Qwen2.5-0.5B-Instruct モデルを bf16 精度かつ DeepSpeed ZeRO-3 でトレーニングしようとすると、torch._dynamo.exc.TorchRuntimeError が発生します。このエラーは、行列乗算(matmul)操作中のサイズ不一致として特徴付けられます。

具体的には、スタックトレースは以下のコンテキストで形状不一致を示しています:

  • 入力サイズ: (s0x896)
  • ベクトルサイズ: (0)
  • エラーメッセージ: size mismatch, got input (s0x896), vec (0)

技術的なコンテキスト

この失敗は、LigerFusedLinearGRPOFunction のフォワードパス中に、liger_kernel/chunked_loss/fused_linear_ppo.pyaccumulate_chunk を呼び出す際に発生します。これは、融合カーネルが DeepSpeed ZeRO-3 によって提供されるシャーディングされたパラメータや状態管理を正しく処理できておらず、行列乗算操作に空のテンソル(サイズ 0)が渡されていることを示唆しています。

Sources