instructionデータセットの合成に適したモデルを探す【応答生成編】
1人ローカルLLMアドベントカレンダーの9日目です。
ローカルLLMやマルチモーダルモデルの学習やデータセット周りについて書いていく予定なので、興味がある方は明日以降も読んでいただけると嬉しいです!
要約
- 同じinstructionに対して4種のオープンなモデルで応答を生成し、それぞれのデータセットでファインチューニングしたモデルの評価を行った。
- ELYZA-tasksのスコアにはほとんど差がなく、MT-Benchではcalm3-22b-chatで生成したデータを使ったモデルが最も良い結果となった。
目的
アドカレでの検証を含め、なにか目的を持ってLLMの学習を行う際には、データをLLMに作らせることがよくあります。
いわゆる「合成データ」と呼ばれるものですが、この生成にどのモデルを使うのが良いのか悩むことが多かったため、簡易的な方法ではありますが、データ生成能力を測るテストを行ってみることにしました。
実施内容
以下の論文を参考に、同じinstructionに対して複数のモデルで応答を生成して、それらのデータを使って学習したモデルの評価を行うことにします。
実験の順序としては以下の通りで、
- 複数のモデルでinstructionデータセットの生成
- モデルごとのデータでLLMをSFT
- SF後モデルの性能を評価して比較
比較対象は少し少ないですが、出力の利用に制限のない以下の4モデルとします。
- cyberagent/calm3-22b-chat
- Qwen/Qwen2.5-32B-Instruct-AWQ
- mistralai/Mistral-Nemo-Instruct-2407
- microsoft/Phi-3-medium-128k-instruct
応答の生成
instructionにはkanhatakeyama/AutoMultiTurnByCalm3-22Bの1ターン目(q1)を使用させていただき、それぞれのモデルで7868個ずつの応答を生成しました。
学習
ベースモデルにはllm-jp/llm-jp-3-3.7bを使用しました。
データセット以外はすべて同じ条件にして、2epoch分の学習を行っています。
結果
評価にはshisa-ai/shaberiを使用し、以下2種のベンチマークの結果を見ることにします。
- elyza/ELYZA-tasks-100
- shisa-ai/ja-mt-bench-1shot
結果は以下の通りです。
応答を生成したモデル | ELYZA-tasks | MT-Bench | 加重平均* |
---|---|---|---|
cyberagent/calm3-22b-chat | 2.69 | 5.63 | 5.51 |
Qwen/Qwen2.5-32B-Instructi-AWQ | 2.61 | 4.98 | 5.10 |
mistralai/Mistral-Nemo-Instruct-2407 | 2.55 | 4.82 | 4.96 |
microsoft/Phi-3-medium-128k-instruct | 2.69 | 4.57 | 4.98 |
Elyza-taskについてはほとんど差がなくMT-Benchではcalm3が大きくリードする形となりました。
今回の検証はデータ量が少なく、1度しか実験を行っていないため、上振れ・下振れが生じている可能性が大いにありますので、あくまで参考程度に捉えていただければと思います。
また、CoTデータを作った時の経験としては、指定したフォーマットに従う能力や、システムプロンプトの効き具合はQwen2.5>calm3という印象です。
一方で、Qwenのモデルは出力に英語や中国語が混ざることが多く、自然な日本語の出力はcalm3のほうが上手な印象です。
個人的には、生成したいデータの性質に合わせて適切なモデルを選択することが重要だと思います。
まとめ
今回は合成データの生成に適したLLMの評価を行ってみました。
今回はあくまでお試し程度の実験であり、正確な評価には実験が不足しているということにご留意ください。
気が向いたらもう少し規模を大きくして検証してみようと思います。
Discussion