こんにちは!
今回は、SFTからのGRPOの流れをUnslothさんが出してくれたノートブックをもとに、説明していこうと思います。
はじめに
まず、SFTやGRPOが何か説明をしていきます。今回、Reasoningモデルの学習を対象に説明していきます。
Reasoningモデルとは?
Reasoningモデルとは、高難易度の問題や、複雑性の高い問題などを得意とするモデルです。簡単にいうと、回答を出す前に、たくさんトークンを使いながら思考をします。chatgptやgeminiを使うと、解答の前にぐるぐると回っていますが、このタイミングで思考をしています。

SFTとは?
SFTとは、汎用的な基盤モデルを学習して、特定のタスクに特化させる、とか聞いたことがあると思います。Reasoningモデルの文脈においては、思考部分の向上を行うためだったり、思考部分の型を作るためだったり、GRPOを学習するための前座として使われることが多いです。
GRPOとは?
GRPOについては、別の記事で回答しますが、強化学習の一種です。最近の流行は、GRPOを使って、SFTしたモデルの思考部分をさらに向上させようと頑張ることです。
コードについて
早速コードを見ながら流れをみていきましょう。Unslothさんのサイトと、今回使うコードのリンクを貼っておきます。
コード
このコードでは、Qwen3-baseという回答の前に思考を挟まず、いきなり出力するモデルに、Reasoningの能力、つまり、回答の前に思考を挟む能力を獲得させました。
Reasoning能力を獲得する、とは?
色々なモデルを見ると、最近のモデルはthinkタグの中で思考を出力させます。フォーマットの形に沿って、きちんとthinkタグの中で思考を回答をすることができれば、Reasoning能力を獲得したと言える、でしょう、、
データセットの準備
今回のコードでは、回答をanswerタグで囲います。
thinkタグでの中で思考を、answerタグの中で回答を出させるために、データセットを整形します。最近のデータセットは、思考部分と回答部分を分けてアップロードしてくれているものもあります。その場合は、思考部分を<think>思考部分</thinkg>、回答部分を<answer>回答</answer>で囲み、<think>思考部分</thinkg>+<answer>回答</answer>という形でデータセットを作ることができます。
SFT
フォーマット化されたデータセットを学習します。フォーマットを覚えるための学習ですね。よく使われている使い方だと思います。
GRPO
SFTでフォーマットを覚えさせましたが、さらにフォーマットを覚えさせたいです。そこで、GRPOを使います。思考部分の出来を機械的に採点できるような関数を作成し、スコア化します。スコアをあげるようにモデルの次のトークンで何を出すのかをいじることで、いい感じに学習させます。具体的な関数はこちら。
最後に
ざっと流れを説明しました。Reasoningモデルの学習は、あまり情報がなくて苦労しました。ぜひ、何かしらお役に立てたら幸いです。


