lightbulb-onGSPO 強化学習

Unsloth で GSPO(Group Sequence Policy Optimization)RL を使ってトレーニングします。

私たちは GSPO を導入します。これは以下の変種です: GRPO Alibaba の Qwen チームが作成しました。彼らは、GRPO が各トークンの重要度重みを取るときに、本質的には利得(advantages)が各トークンごとにスケールしたり変化したりしないという観察に気づきました。これが GSPO の作成につながり、現在は個々のトークンの尤度ではなくシーケンス全体の尤度に重要度を割り当てます。

Unsloth で GSPO を有効にするには、次を設定してください: importance_sampling_level = "sequence" を GRPO の設定に入れます。これら2つのアルゴリズムの違いは、以下の Qwen と Alibaba の GSPO 論文にも示されています:

GRPO アルゴリズム、出典: Qwenarrow-up-right
GSPO アルゴリズム、出典: Qwenarrow-up-right

式 1 では、優位度がテンソルを合計する前に各行をトークンの対数確率にスケーリングすることが見て取れます。本質的に、各トークンには同じスケーリングが与えられますが、そのスケーリングは個々のトークンではなくシーケンス全体に与えられていたものです。これの簡単な図は以下に示せます:

優位度で行ごとにスケーリングされた GRPO の対数確率比

式 2 は、各シーケンスの対数確率比が計算された後に合計・指数化され、その結果得られたシーケンス比のみが行ごとに優位度と乗算されることを示しています。

優位度で行ごとにスケーリングされた GSPO のシーケンス比

GSPO を有効にするのは簡単で、GRPO の設定で次の importance_sampling_level = "sequence" フラグを設定するだけです。

最終更新

役に立ちましたか?