🐥

instructionデータセットの生成に適したモデルを探す【instruction編】

2024/12/10に公開

1人ローカルLLMアドベントカレンダーの10日目です。

ローカルLLMやマルチモーダルモデルの学習やデータセット周りについて書いていく予定なので、興味がある方は明日以降も読んでいただけると嬉しいです!
https://qiita.com/advent-calendar/2024/local-llm

要約

  • 6種のオープンなモデルでinstructionを生成し、生成したinstructionの多様さと難易度を評価した
  • モデルごとに似たようなinstructionを生成する傾向にある

目的

昨日は合成データの応答を生成する能力の評価を行いました。

今回はinstructionの生成にフォーカスした評価を行っていこうと思います。

実施内容

以下の論文を参考に、複数のモデルに対して、例示されたinstructionから新たなinstructionを生成するタスクをやらせてみました。

https://arxiv.org/abs/2412.03679v1

実験の順序としては以下の通りで、

  1. Kendamarron/jimba-instuction-1k-betaのinstructionからinstructionのペアを10000個作る
  2. 与えられた2つのinstructionの例から新たなinstructionを生成する
  3. 生成されたinstructionを評価する

比較対象は少し少ないですが、出力の利用に制限のない以下の4モデルとします。

  • Qwen/Qwen2.5-32B-Instruct-AWQ
  • cyberagent/calm3-22b-chat
  • microsoft/Phi-3-medium-4k-instruct
  • microsoft/Phi-3.5-mini-instruct
  • mistralai/Mistral-Nemo-Instruct-2407
  • weblab-GENIAC/Tanuki-8B-dpo-v1.0

instructionの生成

まず、生成時に与える例として、Kendamarron/jimba-instuction-1k-betaのinstructionから重複のないように、1万個のinstructionのペアを作りました。

そして、それらのペアに対して以下のようにプロンプトを設定し、新たなinstructionを生成させています。

与えられたinstructionを参考に、新たなinstructionを生成してください。
- 生成するinstructionは、与えられたinstructionとは異なるものにすること
- 生成するinstructionは<instruction>タグで囲んで出力すること

<example1>
{examples[0]}
</example1>

<example2>
{examples[1]}
</example2>

なお、tanukiは</instruction>の生成ができなかったので、その部分の記述だけなくしています。

評価

多様性

例として示したinstructionと同じようなものを生成されてもしょうがないので、しっかりと異なるinstructionを生成する能力を測ります。

cl-nagoya/ruri-largeで生成されたinstructionと例示として与えた2つのinstructionのcosine類似度を測り、より高かった方の類似度の平均を取りました。

また、生成したinstructionの間で最も類似していたinstructionとの類似度の平均も計算しました。実際に生成されたinstructionを見てみると、同じような話題ばかり生成しているケースが観測されたため、全体的にバラけた生成をしているか測るイメージです。

難易度

生成したinstructionの難易度をcalm3-22b-chatを使って1から5の5段階で判定し、その平均を取りました。

  1. 小学生レベルの知識・推論能力を必要とするレベル
  2. 中学生レベルの知識・推論能力を必要とするレベル
  3. 高校生レベルの知識・推論能力を必要とするレベル
  4. 大学生レベルの知識・推論能力を必要とするレベル
  5. 専門家レベルの知識・推論能力を必要とするレベル

結果

例示との最大類似度の平均 生成instructionとの最大類似度の平均 instructionの難易度
Qwen/Qwen2.5-32B-Instruct-AWQ 0.764 0.932 3.31
cyberagent/calm3-22b-chat 0.778 0.911 3.33
microsoft/Phi-3-medium-4k-instruct 0.781 0.893 3.50
microsoft/Phi-3.5-mini-instruct 0.835 0.878 3.62
mistralai/Mistral-Nemo-Instruct-2407 0.858 0.876 3.11
weblab-GENIAC/Tanuki-8B-dpo-v1.0 0.835 0.878 3.62
Kendamarron/jimba-instuction-1k-beta - 0.835 3.04

この結果を見るとPhiシリーズとTanukiが良さそうに見えます。

実際の出力を見る限りでは確かにQwenとcalm3は似たようなinstructionが多くなっていました。また、Phi-3は「日本の」というワードが含まれるinstructioが非常に多く(約34%)、あまり多様な生成をしているとは言えない印象でした。

Kendamarron/jimba-instuction-1k-betaはcalm2に生成させたinstructionを手動でチェック・修正したものになるので、ある程度幅広い内容になっているはずです。それと比べるとどのモデルも生成instruction間の類似度が高くなっていることから、モデルによって似たようなinstructionを生成する傾向にあるようです。

instructionの生成についてはモデルに癖がありそうなので、適切なプロンプトの設定と生成後のフィルタリングの設計が重要になりそうですね

まとめ

今回と前回で、合成データの生成に適したLLMの評価を行ってみました。

今回は生成したinstructionを使って学習したモデルの評価を行わず、あくまでどのようなinstructionを生成しているかにフォーカスを当てて検証を行いました。

これだけでは測れないことも多分にあると思いますので、1つの参考程度に見ていただくのがいいかなと思います。

Discussion