0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コードを見ながらSFT+GRPOの流れを知ろう!

0
Posted at

こんにちは!

今回は、SFTからのGRPOの流れをUnslothさんが出してくれたノートブックをもとに、説明していこうと思います。

はじめに

まず、SFTやGRPOが何か説明をしていきます。今回、Reasoningモデルの学習を対象に説明していきます。

Reasoningモデルとは?

Reasoningモデルとは、高難易度の問題や、複雑性の高い問題などを得意とするモデルです。簡単にいうと、回答を出す前に、たくさんトークンを使いながら思考をします。chatgptやgeminiを使うと、解答の前にぐるぐると回っていますが、このタイミングで思考をしています。
image.png

SFTとは?

SFTとは、汎用的な基盤モデルを学習して、特定のタスクに特化させる、とか聞いたことがあると思います。Reasoningモデルの文脈においては、思考部分の向上を行うためだったり、思考部分の型を作るためだったり、GRPOを学習するための前座として使われることが多いです。

GRPOとは?

GRPOについては、別の記事で回答しますが、強化学習の一種です。最近の流行は、GRPOを使って、SFTしたモデルの思考部分をさらに向上させようと頑張ることです。

コードについて

早速コードを見ながら流れをみていきましょう。Unslothさんのサイトと、今回使うコードのリンクを貼っておきます。

Unslothの公式ページはこちら
コードはこちら

コード

このコードでは、Qwen3-baseという回答の前に思考を挟まず、いきなり出力するモデルに、Reasoningの能力、つまり、回答の前に思考を挟む能力を獲得させました。

Reasoning能力を獲得する、とは?

色々なモデルを見ると、最近のモデルはthinkタグの中で思考を出力させます。フォーマットの形に沿って、きちんとthinkタグの中で思考を回答をすることができれば、Reasoning能力を獲得したと言える、でしょう、、

データセットの準備

今回のコードでは、回答をanswerタグで囲います。
thinkタグでの中で思考を、answerタグの中で回答を出させるために、データセットを整形します。最近のデータセットは、思考部分と回答部分を分けてアップロードしてくれているものもあります。その場合は、思考部分を<think>思考部分</thinkg>、回答部分を<answer>回答</answer>で囲み、<think>思考部分</thinkg><answer>回答</answer>という形でデータセットを作ることができます。

image.png

SFT

フォーマット化されたデータセットを学習します。フォーマットを覚えるための学習ですね。よく使われている使い方だと思います。

GRPO

SFTでフォーマットを覚えさせましたが、さらにフォーマットを覚えさせたいです。そこで、GRPOを使います。思考部分の出来を機械的に採点できるような関数を作成し、スコア化します。スコアをあげるようにモデルの次のトークンで何を出すのかをいじることで、いい感じに学習させます。具体的な関数はこちら。

タグがきちんとあるかでスコア
image.png

回答があっているかどうかでスコア
image.png

最後に

ざっと流れを説明しました。Reasoningモデルの学習は、あまり情報がなくて苦労しました。ぜひ、何かしらお役に立てたら幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?