Stability.aiのJapaneseMTBenchで継之助MoA(Mixture of Agents)の性能評価を行いました。
JapaneseMTBenchのプロンプトには、マルチターン対応のものが含まれていなかったため、独自に追加しました。
{"name": "single-v1", "type": "single", "category": "general", "output_format": "[[評価]]", "description": "Japanese prompt for general japanese questions", "system_prompt": "あなたは有益な助手です。", "prompt_template": "[指示]\n公平な判断者として行動し、以下に表示されるユーザーの質問に対するAIアシスタントの応答の品質評価してください。あなたの評価は、応答の有用性、関連性、正確性、深さ、創造性、詳細度などの要素を考慮すべきです。AIアシスタントの返答の言語は、ユーザーが使用している言語と一致しているべきで、そうでない場合は減点されるべきです。評価は短い説明から始めてください。できるだけ客観的であること。説明を提供した後、このフォーマットに厳密に従って1から10までのスケールで応答を評価する必要があります:\"[[評価]]\"、例えば:\"評価:[[5]]\"。\n\n[質問]\n{question}\n\n[アシスタントの回答の開始]\n{answer}\n[アシスタントの回答の終了]"}
{"name": "single-math-v1", "type": "single", "category": "math", "output_format": "[[評価]]", "description": "Japanese prompt for math related japanese questions", "system_prompt": "あなたは有益な助手です。", "prompt_template": "[指示]\n公平な判断者として行動し、以下に表示されるユーザーの質問に対するAIアシスタントの応答の品質を評価してください。あなたの評価は正確さと有用性を考慮すべきです。AIアシスタントの返答の言語は、ユーザーが使用している言語と一致しているべきで、そうでない場合は減点されるべきです。参照答えとアシスタントの答えが与えられます。あなたの評価は、アシスタントの答えと参照答えを比較することから始めてください。ミスを特定し、訂正してください。できるだけ客観的であること。説明を提供した後、このフォーマットに厳密に従って1から10までのスケールで応答を評価する必要があります:\"[[評価]]\"、例えば:\"評価:[[5]]\"。\n\n[質問]\n{question}\n\n[参考回答の開始]\n{ref_answer_1}\n[参考回答の終了]\n\n[アシスタントの回答の開始]\n{answer}\n[アシスタントの回答の終了]"}
{"name": "single-v1-multi-turn", "type": "single", "category": "general", "output_format": "[[評価]]", "description": "Japanese prompt for general japanese questions", "system_prompt": "あなたは有益な助手です。", "prompt_template": "[指示]\n公平な判断者として行動し、以下に表示されるユーザーの質問に対するAIアシスタントの応答の品質を評価してください。あなたの評価は、応答の有用性、関連性、正確性、深さ、創造性、詳細度などの要素を考慮すべきです。AIアシスタントの返答の言語は、ユーザーが使用している言語と一致しているべきで、そうでない場合は減点されるべきです。評価は短い説明から始めてください。できるだけ客観的であること。説明を提供した後、このフォーマットに厳密に従って1から10までのスケールで応答を評価する必要があります:\"[[評価]]\"、例えば:\"評価:[[5]]\"。\n\n[質問]\n{question_1}\n\n[アシスタントの回答の開始]\n{answer_1}\n[アシスタントの回答の終了]\n[質問]{question_2]\n[アシスタントの回答の開始]\n{answer_2}[アシスタントの回答の終了]"}
{"name": "single-math-v1-multi-turn", "type": "single", "category": "math", "output_format": "[[評価]]", "description": "Japanese prompt for math related japanese questions", "system_prompt": "あなたは有益な助手です。", "prompt_template": "[指示]\n公平な判断者として行動し、以下に表示されるユーザーの質問に対するAIアシスタントの応答の品質を評価してください。あなたの評価は正確さと有用性を考慮すべきです。AIアシスタントの返答の言語は、ユーザーが使用している言語と一致しているべきで、そうでない場合は減点されるべきです。参照答えとアシスタントの答えが与えられます。あなたの評価は、アシスタントの答えと参照答えを比較することから始めてください。ミスを特定し、訂正してください。できるだけ客観的であること。説明を提供した後、このフォーマットに厳密に従って1から10までのスケールで応答を評価する必要があります。\"[[評価]]\"、例えば:\"評価:[[5]]\"。\n\n[質問]\n{question}\n\n[参考回答の開始]\n{ref_answer_1}\n[参考回答の終了]\n\n[アシスタントの回答の開始]\n{answer}\n[アシスタントの回答の終了]"}
GPT-4を使って継之助MoAの性能を評価した結果は以下のようになりました。
$ python show_result.py --bench-name japanese_mt_bench
Mode: single
Input file: data/japanese_mt_bench/model_judgment/gpt-4_single.jsonl
########## First turn ##########
score
model turn
TsuginosukeMoA 1 8.925000
mixv3_5btok_7b.ja-orca-v2_llama2 1 4.753086
emb-only_mixv3_10btok_7b_javocab.mixv3_5btok.ja... 1 4.402439
jslma-7b-ja-orca-11k-50ep 1 4.209877
mixv3_5btok_7b-chat.ja-orca-v2_llama2 1 4.087500
jslma-7b-ja-orca-25k-20ep 1 3.975000
jslma-7b-ja-orca-6k-3ep 1 3.100000
japanese-stablelm-instruct-alpha-7b 1 2.600000
レーダーチャートをプロットしました。
とはいえ、既存モデルより大幅に高いパフォーマンスが出せることがわかりました。
今回は以下のモデルをMoAしました。
Qwen/Qwen2-57B-A14B-Instruct
lightblue/karasu-7B
karakuri-ai/karakuri-lm-8x7b-chat-v0.1
elyza/Llama-3-ELYZA-JP-8B
前回使用した100万トークン対応のInternLMは、出力サイズが2048までしかなく、MTBenchに不向きだったのでオミットしました。
提案者として4つのLLMを用い、まとめ役としてQwen2を用いました。
MoAに効果があることがわかったので、今後は継之助クラスターに小規模な計算機を複数接続して複数のLLMによる推論を担わせたいと思います。
MoAが有効というのは、集合知が有効という話を思い出させます。
長文脈の理解にInternLMを用い、総合的な出力にQwen2を用いるなど適切な役割分担をすることでより賢いローカルLLMが作れる可能性が高まりました。