最近（2024年4月）公開された LLM を ELYZA-tasks-100 で性能評価してみた

## TL;DR

* Command-R-Plus, Llama-3, Phi-3 mini を ELYZA-tasks-100 で評価しました
* Command-R-Plus と Llama-3 70B の性能は既存モデルを大きく上回り、ELYZA-tasks-100 ベンチマークのトップを争っています

## はじめに

2024 年に入ってからも、数々の LLM が公開されています。特に Cohere や Meta、Microsoft など AI 業界の大手が開発したモデルが、オープンアクセスモデルとして非常に高い性能をもち、話題となっています。

[**Command-R Plus**](https://huggingface.co/CohereForAI/c4ai-command-r-plus) は、AI 開発スタートアップの Cohere が開発したLLMで、2024/4/4 に公開されています。パラメタ数は 104B です。RAG やエージェントとしての活用を想定したモデルですが、一般的な会話用途にも対応しています。

[**Llama-3**](https://ai.meta.com/blog/meta-llama-3/) は Meta が開発した LLM です。昨年（2023年）7月にリリースされた Llama2 の後継モデルとして 2024/4/18 に公開されました。Llama2 との最大の違いは学習データセットの規模で、Llama2 の7倍以上にあたる15兆 (15T) トークンのデータを学習しています。記事執筆時点では、パラメタ数 8B と 70B の2つのモデルが公開されていますが、400B 以上のパラメタ数をもつモデルも学習中であるとアナウンスされています。

[**Phi-3**](https://arxiv.org/abs/2404.14219) は Microsoft が開発したモデルで、2024/4/23 に公開されました。すでに公開されている Phi-1/-2 と同様に、モデルサイズが比較的小さいことが特徴です。オープンアクセスモデルのパラメタ数は 7B～70B 程度とすることが多いのですが、Phi-3 は mini (3.8B), small (7B), medium (13B) の3種類が開発されています（記事執筆時点では mini モデルが公開されています）。小型であることを活かして、スマートフォン上など計算資源が限られる環境でテキスト生成する等の用途が想定されており、リンク先のテクニカルレポートでは iPhone 14 のデバイス上で mini モデルを動作させるデモが紹介されています。

これまでの海外勢モデルのなかには、日本語の出力を苦手とするものもありましたが、これらのモデルは「**ファインチューンしなくても日本語を流暢に話せる**」と話題になっています。

* Command-R-plus (**T Yamaya** さん)

https://qiita.com/isanakamishiro2/items/954247ef7baf7db69548

* Llama 3 (**DeepTama** さん)

https://qiita.com/DeepTama/items/b17ac21010424de38c5f

* Phi-3-mini (**DeepTama** さん)

https://qiita.com/DeepTama/items/d806173478ebcf0c2937

今回は、これらモデルの日本語性能をベンチマーク評価すべく、[ELYZA](https://elyza.ai/) さんが開発した日本語指示応答データセット [ELYZA-tasks-100](https://huggingface.co/datasets/elyza/ELYZA-tasks-100) で評価し、性能を比較してみました。

## 評価方法

ELYZA-tasks-100 データセットの質問 100 個をモデルに入力し、その回答を GPT-4 に5段階評価（各設問1～5点）させて、平均得点を集計しました。ベンチマーク方法は、以前公開した記事と同様です。

https://qiita.com/wayama_ryousuke/items/105a164e5c80c150caf1

https://qiita.com/wayama_ryousuke/items/50e36d0dcb37f8fb7dd8

モデルの実行環境は [Google Colaboratory](https://colab.research.google.com/) を使っています。Command-R-Plus と Llama3 70B は VRAM 容量の都合上、下記の量子化モデルを使用しました。

* Command-R-Plus: [dranger003/c4ai-command-r-plus-iMat.GGUF](https://huggingface.co/dranger003/c4ai-command-r-plus-iMat.GGUF), I-quant 2Bit-M
* Llama3 70B:  [NousResearch/Meta-Llama-3-70B-Instruct-GGUF](https://huggingface.co/NousResearch/Meta-Llama-3-70B-Instruct-GGUF), K-quant 4Bit-M

プロンプトフォーマットは、各モデルのモデルカードに合わせて適宜調整しました。システムプロンプト（ユーザ指示よりも優先する基本的な指示）は、Command-R-plus と Phi-3 については [ELYZA さんのプロンプト](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b-instruct) を使用しています。

> あなたは誠実で優秀な日本人のアシスタントです。

なお、Llama3 は回答が英語になる傾向が強く、日本語で質問しても回答が英語になってしまう様子がみられました。

> システム: あなたは誠実で優秀な日本人のアシスタントです。
>
> ユーザ: 屋根裏に座敷わらしが住み着いてしまいました。どうすればいいですか？
> 
> アシスタント (Llama3): I see. That's quite a predicament! Having a tanuki (Japanese raccoon dog) take up residence in your attic can be a bit of a challenge. ...

（座敷わらしの質問をしたのに、回答は **tanuki** の駆除方法になっています）

そこで、システムプロンプトを修正して「日本語で会話しなければならない」旨を念押ししたところ、日本語での回答が得られるようになりました。（座敷わらしを害獣のように扱っており、回答内容はイマイチですが...）

> システム: In the following conversation, only the Japanese language is allowed. あなたは誠実で優秀な日本人のアシスタントです。あなたはユーザと日本語で会話しています。
>
> ユーザ: 屋根裏に座敷わらしが住み着いてしまいました。どうすればいいですか？
>
> アシスタント (Llama3): そんな！ 座敷わらしは迷惑ですね。まず、家の中を掃除して、新しい物を置かないようにすることが大切です。次には、屋根裏に住みついている座敷わらしが出てくるのを妨げるために、網戸や窓を塞ぐ必要があります。また、座敷わらしが好むような湿気や埃を取り除くことも重要です。最後に、家を神社仏閣に祈祷してもらうのも有効ですよ。

次節でご紹介する ELYZA-tasks-100 評価では、このシステムプロンプトを使って Llama3 に質問しています。

GPT-4 を使った回答内容評価には、当社開発のスクリプト `gpt4-autoeval` を使用しました。

https://github.com/Northern-System-Service/gpt4-autoeval

## 評価

ELYZA-tasks-100 の平均点を次図に示します。参考までに、これまで評価した他のモデルの結果もあわせて図に示しています。

![評価結果](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/ce21c8c1-426a-5d82-190c-3af5fe6d3665.png)


これまで評価したモデルは 3.0 点に及ばなかったのですが、今回の評価では Llama3 70B と Command-R-Plus の平均点が 3.5 点に迫っており、他のモデルに大きく差をつける結果となりました。

まず LLaMA3 ですが、70B は **3.42 点**と、評価済みモデルのなかで最高成績をマークしました。8B は **2.91** 点で、70B に比べれば見劣りするものの、昨年末の記事で 70B 前後の 4-bit 量子化モデル（Xwin-LM 70B v0.1 や DeepSeek 67B）が記録していた得点に匹敵しており、とても高い性能を発揮しているといえます。Llama 8B に限らず、[ChatNTQ](https://huggingface.co/NTQAI/chatntq-ja-7b-v1.0) や [Japanese-Starling-ChatV](https://huggingface.co/TFMC/Japanese-Starling-ChatV-7B-GGUF) など、 3.0 点付近のスコアをマークする 7B モデルも登場しており、最近は**パラメタ数が少ないモデルの性能向上**が著しいです。

Command-R Plus (2bit) は **3.37 点**でした。スコアには若干のブレが想定されるため、Llama3 70B とほぼ同等の性能とみなしてよさそうです。なお、「評価方法」に記載のとおり、今回は 2-bit 量子化 (I-quants) モデルを使用しており、オリジナルモデルの性能とは異なります（Cohere API の回答評価は Appendix に記載しています）。Command-R-Plus の量子化が回答内容に与える影響は[海行 (umiyuki)](https://soysoftware.sakura.ne.jp/) さんが詳しく解説されていますが、 **2bitモデルの回答は「3bit以上に比べると目に見えて残念な面がハッキリと見られる」** と指摘されています。

https://soysoftware.sakura.ne.jp/archives/3834

Phi-3 mini の平均スコアは **2.56** 点でした。モデルサイズが 3.8B であるにもかかわらず、より大規模なELYZA-japanese-Llama-2 13B や Swallow-7B-instruct-v0.1 と同レベルのスコアで、小型モデルながら高い性能を発揮しているといえます。

各設問へのモデル別回答と GPT-4 による講評は、Google スプレッドシートに掲載しています。平均スコアからはわからないモデルごとの回答の癖や、採点者（GPT-4）の講評も確認できますので、あわせてご参照ください。

https://docs.google.com/spreadsheets/d/1nOWtneRdrkxwQbAN0rWmXqiJXR9IXK9lVkyDjQTqNGc/edit

## 回答例

続いて、実際の回答例をみてみましょう。

### Llama-3-8B-Instruct

まずは Llama3 8B です。日本語能力の高さを示す例として、ELYZA-tasks-100 の2問目（クマとアザラシの短編小説）を挙げます。この設問では、情景や心情を描写するために、複雑な日本語表現を使いこなすことが求められます。とくに海外の小規模モデルは苦戦しがちな設問ですが、Llama3 8B は筋の通ったストーリーを書くことができています。

> Q. クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。
>
> A. タイトル：クマの海辺の友達
> 
> クマは、海辺の森に住んでいた。彼は、海辺でアザラシの群れを観察していた。ある日、クマはアザラシの1匹に話しかけてみた。アザラシは、クマに驚いてびっくりしたが、次第にクマに友達になり始めた。
> 
> クマとアザラシは、毎日海辺で遊び歩いていた。クマは、アザラシの群れの生活を学んでいた。アザラシは、クマの力強さに驚いていた。2匹は、互いに理解し合い、友情を深めていった。
> 
> しかし、クマは、冬が近づいてきたと知り、家に帰らなくてはならないと悟った。クマは、アザラシに別れを告げ、海辺を去った。アザラシは、クマの去り際に泣いていた。
> 
> クマは、家に帰り、家族と再会した。彼は、アザラシについて話し、友達になったことを話した。家族は、クマの話に感動し、クマに褒め称えた。
> 
> クマは、アザラシを忘れられなかった。彼は、毎年、海辺に帰り、アザラシと会っていた。2匹は、再び友達になり、互いに理解し合い、海辺での思い出を共にしていた。

一方で、「与えられたキャラクター設定に従って会話調のセリフを考える」「敬語でビジネスメールを書く」など、通常の文体とは異なる出力の回答品質はやや落ちることがあります。また、細かい知識に不正確性がみられ、誤った情報を回答してしまうケースもありました。次の例をみてみましょう。

> Q. youtubeの台本を書くのを手伝ってください。
> 
> タローとコタローという2人のキャラクターの対話ベースで進行します。
> 
> タローは物知りで、コタローの疑問に答えてくれます。
> 
> 今回の動画は、映画スラムダンクを視聴者に薦める動画です。以下のポイントを押さえた脚本にしてください。
> 
> - まるでスポーツの試合を見ているかのように迫力のあるバスケのシーン
> - 漫画の原作を読んだことのない人でも楽しめる、映画として完結しているストーリー
> - 来月に公開が終了する
> - 10行~15行程度の対話
>
> A. タロー：こんにちは！コタロー、映画スラムダンクを観てみて、良いと思いますよ！
> 
> コタロー：ええ、スラムダンクは何ですか？何の映画ですか？
> 
> タロー：スラムダンクは、バスケットボールを題材にしたアクションパニック映画です！原作は漫画ですが、映画として完結しているため、漫画の知識がなくても楽しむことができます。
> 
> コタロー：原作は漫画ですか？漫画家は誰ですか？
> 
> タロー：はい、原作は井上堯之による漫画です。映画化されたのは、来月が最後の公開日です！
> 
> コタロー：来月までに観ておくべきですね！バスケのシーンは迫力がありますよ！
> 
> タロー：はい、バスケのシーンはとてもリアルに描かれています！まるでスポーツの試合を見ているかのようです！
> 
> コタロー：私は映画を観てみます！ありがとう、タローさん！
> 
> タロー：あ、くれぐれも楽しむことを！スラムダンクは、バスケファンのみならず、誰でも楽しむことができます！

劇場版スラムダンクを「バスケットボールを題材にした**アクションパニック映画**」と説明している点、原作者を「[井上**堯之**](https://ja.wikipedia.org/wiki/%E4%BA%95%E4%B8%8A%E5%A0%AF%E4%B9%8B)」（正しくは[井上**雄彦**](https://ja.wikipedia.org/wiki/%E4%BA%95%E4%B8%8A%E9%9B%84%E5%BD%A6)）と誤記している点などに、事実誤認がみられます。また、映画を見ていないはずのコタローが「バスケのシーンは迫力がありますよ！」と発言している点など、やや突飛なセリフも見られます。

### LLaMA-3-70B-Instruct

次に Llama3 の 70B モデルですが、クリエイティブな回答が求められる設問でも適切な回答を返すことができています。

例として、次の回答をみてみましょう。この問題は「LLM に大喜利の回答を考えてもらう」というものですが、ウィットに富んだ答えを考えるのは LLM にとって難しいようで、ELYZA-tasks-100 のなかでもとくに正解率が低い問題の一つです。

> Q. 大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。
> 
> 例えば、以下の例を見てみましょう
> 
> お題: ナルシスト漁師の特徴を教えてください
> 回答: キャッチ＆キス＆リリース
> 
> このお題では、「普通の漁師の特徴」の「キャッチ＆リリース」に対して、ナルシストという観点からの捻りを加え、語感がいいようにまとめていて面白いです。
> 
> それでは、以下のお題について大喜利で答えてください。
> お題：初めてドラゴンを退治しに行くのですが、アドバイスをお願いします

これに対する Llama3 70B の回答がこちらです。

> A. 「ドラゴンのスキャンダル写真を持って行けば、恥ずかしがらせて逃げさせることができます」

私はなかなか面白い回答だと思いましたが、いかがでしょうか？他のモデルは「弱点を突く」「回復アイテムを持っていく」などお題にそのまま回答してしまい、低得点に終わることが多いのですが、Llama3 70B はユニークな視点で答えられています。

一方、一般知識を問う問題で、明らかな誤答をするケースもありました。GPT-4 などの商用モデルに比べると、こうした部分に弱さを感じることがあります。

> Q. 私は非常に賢い質問応答ボットです。真実に根ざした質問をすれば、答えを返します。もしナンセンスな、あるいは明確な答えのない質問をした場合、「分かりません」と答えます。
> Q: 日本の人間の平均寿命は？
> A: 男性では約80歳、女性では約87歳です。
> Q: 水平線までの距離は？
>
> A. 水平線までの距離は無限大です。

:::note info
**水平線問題を英語で質問するとどうなるか**

この水平線の問題について、そもそも回答に必要な知識が不足しているのか、それとも言語の得意・不得意の問題なのかを切り分けるために、この質問を英語に翻訳して Llama3 に回答させてみました（ChatGPT に翻訳させています）。

> Q. I am a very intelligent question and answer bot. If you ask a question rooted in truth, I will respond with an answer. If you ask a nonsensical question or one without a clear answer, I will reply with 'I don't know.'
> 
> Q: What is the average lifespan of humans in Japan?
> A: For men, it is about 80 years, and for women, it is about 87 years.
> Q: What is the distance to the horizon?

すると、次のような回答が返ってきました。

> A (原文). That's a clever question!
> 
> Since the Earth is approximately spherical, the distance to the horizon depends on the observer's height above sea level. The higher you are, the farther away the horizon will be.
> 
> Would it be correct to say that there isn't a fixed answer, as it varies depending on the observer's elevation? Or would you like me to provide a more specific estimate based on average human eye level or a certain altitude?

> A (日本語訳). それは賢い質問ですね！
> 
> 地球はおおよそ球形であるため、地平線までの距離は観測者の海抜高さに依存します。高い場所にいるほど、地平線は遠くなります。
> 
> 観測者の高さによって異なるため、固定された答えはないと言えるでしょうか？それとも、平均的な人間の目の高さや特定の高度に基づいたより具体的な見積もりをご希望ですか？

「無限大」のような見当違いの回答ではなくなりました。さらに「具体的な数値を出してほしい」と質問すると、計算手順を含めて次のように教えてくれました。

> A (原文). Let's assume an average eye height of about 1.7 meters (5.6 feet) above sea level.
> 
> Using the Earth's radius of approximately 6,371 kilometers (3,959 miles), we can calculate the distance to the horizon using the following formula:
> 
> distance to horizon ≈ √(2 × height × earth_radius)
> 
> Plugging in the values, we get:
> 
> distance to horizon ≈ √(2 × 1.7 m × 6371 km) ≈ 4.79 kilometers (2.98 miles)
> 
> So, from an average eye level of about 1.7 meters above sea level, the distance to the horizon would be approximately 4.79 kilometers or 2.98 miles.
> 
> Please keep in mind that this is a rough estimate and can vary depending on atmospheric conditions, observer's height, and other factors!

> A (日本語訳). 平均的な目の高さを海抜約1.7メートル（5.6フィート）と仮定しましょう。
> 
> 地球の半径を約6,371キロメートル（3,959マイル）として、次の式を使用して地平線までの距離を計算することができます：
> 
> 地平線までの距離 ≈ √(2 × 高さ × 地球の半径)
> 
> 値を代入すると、以下のようになります：
> 
> 地平線までの距離 ≈ √(2 × 1.7 m × 6371 km) ≈ 4.79キロメートル（2.98マイル）
> 
> したがって、海抜約1.7メートルの平均的な目の高さから見た地平線の距離は、約4.79キロメートルまたは2.98マイルとなります。
> 
> これは大まかな見積もりであり、大気条件、観測者の高さ、その他の要因によって変動する可能性があることをご留意ください！
 
実際に Llama3 が回答した式を使って計算してみると、水平線までの距離は **4.65** キロメートルになります。数値が微妙に合わないですが（Llama3 が提示した距離になるのは目の高さが 1.**8**m のとき）、この回答をみるかぎり、Llama3 は「（欧米圏の）平均的な身長で計算した水平線までの距離」に関する情報そのものは持っているようです。

そうすると、日本語での回答が「無限大」となったのは、単なる知識不足というよりも、問題文の解釈ミスなど、日本語言語能力が英語能力に比べて劣っていることが原因と考えられます。
:::

また、Llama3 全体に共通する課題として、**日本語で必ず返答させることの難しさ**が挙げられます。ほぼすべての回答が英語になる Llama2 と比べると、Llama3 は日本語回答を出力する割合が大幅に増えていますが、依然として英語など他言語にスイッチしてしまう傾向がみられます。今回の実験では、回答全体の 15% 程度で、次のように回答の一部が他言語（英語など）になったり、完全に英語の回答を返すことがありました。

> Q. 以下のシチュエーションでの適切な発言をいくつか考えてください。
> シチュエーション: 誰かが無事に到着したとき
>
> A. Here are some appropriate responses for the situation:
> 
> * お帰りなさい！大変お疲れ様です。
> * ただいまー！無事に到着できて何よりですね！
> * ようやく到着できたんですね！安心しました。
> * おかえりなさい！安全に到着できてホッとしています。

回答言語が安定しない問題については、日本語データセットでの追加学習による改善が期待されるところです。この記事の執筆中も、さっそく rinna さんから日本語継続学習モデルの [rinna/llama-3-youko-8b](https://huggingface.co/rinna/llama-3-youko-8b) が公開されており（指示追従モデルではないですが...）、今後も類似の取り組みが進むと期待されます。

:::note info
**非日本語回答に対する GPT-4 の採点について**

回答の採点者である GPT-4 には、質問・回答のほかに採点基準を渡しています ([参考-プロンプトテンプレート](https://github.com/Northern-System-Service/gpt4-autoeval/blob/617e3d51cf76e5d5d30084d3a5cceca239912a35/assets/prompt_eval.txt))。この採点基準には「不自然な日本語を減点する」という項目がある一方、「日本語以外の回答は許容せず1点とする」という項目は設けていません。

このため、LLM の回答が英語など他言語で記載されている場合、下図のようにGPT-4 が **（他言語の）文章の内容をみて採点してしまう**ケースがみられました。

![llama_70b_context_switch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/4e701552-af2d-f6b4-4c91-d9db3a38a845.png)


スコアの後方互換性を保つ観点から、この記事では評価基準を変更せずに採点を行っていますが、今後の評価ではこの点についても検討が必要かもしれません。これから ELYZA-tasks-100 で自動採点する皆さんには、採点基準に言語チェックを追加することをおすすめします！
:::

### Command-R-Plus

Command-R-Plus も Llama3 と同様に、幅広いタスクで適切な回答を返すことができています。小説執筆タスクでも、読みごたえのあるストーリーを書いてくれました。

> Q. クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。
> 
> A. タイトル：海の友情
> 
> ある日、好奇心旺盛なくまの「クー」は、森の中で散歩をしていたところ、偶然小さな入り江を見つけました。潮風に誘われ、クーは海辺へと足を踏み入れました。波が岩に打ち付けられる音と、広大な海の景色に圧倒されながら、彼は浜辺をゆっくりと歩き続けます。
> 
> 突然、大きな黒い物体が彼の視界に入ってきました。それはアザラシでした！クーは警戒して後ずさりましたが、すぐに好奇心が勝ったのです。近づいてよく見てみると、アザラシは陽光を浴びながら岩の上でくつろいでいるようでした。「こんにちは」とクーが挨拶すると、アザラシも「やあ！」と返事をしてくれたように思えました。
> 
> クーは自分の新しい友達について知りたいと思い、名前を聞きました。「私はロッキーです。」アザラシが答えた。「毎日ここに来ているんだよ」
> 
> クーとロッキーはすぐに仲良しになり、一緒に泳いだり、潮だまりを探検したりして遊びました。彼らはお互いの生活について話しました。クーは森での冒険を語り、一方のロッキーは海中での暮らしや他のアザラシとの交流について話しました。「僕たちはいつも一緒には遊べないけどね」とロッキーが寂しそうに付け加えたのです。
> 
> 数週間後、クーがいつものように浜辺を訪れると、ロッキーの姿が見当たりません。心配になった彼は他のアザラシたちに聞いてみましたが、誰も彼のことを知りませんでした。「きっと遠くへ旅に出たんだ」と一匹のアザラシが言いました。クーは悲しみを感じながらも、友達との素晴らしい思い出を胸に家路についたのです

また、次の例のように、あいまいな指示に対してもある程度追従できています。

> Q. あの、娘がやっているあのキ、チックトック？チックトッカー？っていうのは何なんですか？
>
> A. TikTok（ティックトック）についてお尋ねでしょうか。
> 
> TikTok は短尺動画を投稿・シェアできるソーシャルメディアアプリです。ユーザーはさまざまなジャンルの音楽や効果音に合わせて口パクをしたり、ダンスをするなどして 15 ～60秒のショートビデオを作成し共有することができます。また TikTok の AI アルゴリズムによりユーザーの好みを分析したおすすめの動画が表示されるため、個人の興味関心に沿ったコンテンツを楽しむことが可能です

ただし、複雑な状況の把握は苦手としているようです。次の設問は「与えられた道具を組み合わせて状況を解決する」というもので、RAG やエージェント用に開発された Command-R-Plus が得意とする分野のはずです。しかし、Command-R-Plus は「Sサイズのピザを予算内で買える」という事実を見落としてしまいました。（モデル量子化の影響もあるかもしれません）

> Q. あなたは以下の道具を持っています。これらの道具を必要なだけ使って、今日の昼ごはんを準備してください。
> 
> チラシ: 宅配ピザならピザジャンボ！ S: 900円, M: 1200円, L: 1600円 電話番号も書いてある。
> 鍵: 家の戸締りに使う
> 携帯: 古いのでネット検索はできないが電話をするには十分
> ポイントカード: ラーメン屋のポイントカード
> 財布: 1000円しか入っていない。
> 
> A. 申し訳ございません、ピザを注文するのに必要な金額が入っておりません。よろしければポイントカードをお使いですか？ラーメンを食べるのはいかがでしょうか? お持ちのポイントカードを使えば安く購入できる可能性があります。

### Phi-3-mini

次に Phi-3-mini の回答例を示します。短編小説の質問では、以下のような回答が得られました。

> Q. クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。
>
> クマの海辺の友情
> 
> 
> ある晴れた日、クマは森の奥深くに住む孤独な生活を感じさせるように、海へと足を踏み入れた。彼の目的は、海の底での食べ物を探すことだった。しかし、その旅は彼にとって予期せぬ出来事をもたらした。
> 
> 
> 海の底で、クマは驚きの目でアザラシたちの群れを見つけた。アザラシたちは、クマの優しさと勇気に感銘を受け、友情を築いていく。クマはアザラシたちに海の秘密を教え、アザラシたちはクマに海の美しさを伝える。
> 
> 
> 時が流れ、クマとアザラシたちは海辺で冒険を繰り広げ、彼らの友情は深まっていった。クマはアザラシたちに海の底の恐ろしい生き物と戦うことを決意し、彼らは一緒に困難を乗り越えた。
> 
> 
> 最終的に、クマは海辺で得た知識とアザラシたちの友情を胸に、森へと帰る旅を続けた。彼は海辺で見た奇跡と友情を、家に帰る前に海辺の旅を語ることになった。クマは海辺で見た経験を、家族に語り継いでいくことにし、彼らはクマの冒険に感動し、彼の心に深い影響を与えた。
> 
> 
> クマの海辺の友情は、彼の人生に永遠の記憶となった。海辺での冒険は、彼の心に永遠に残る、輝かしい瞬間であった。

「クマは驚きの目でアザラシたちの群れを見つけた」など、日本語表現に不自然さもみられますが、全体的にはストーリーがまとまっている印象です。

一方、知識量は他のモデルに比べるとやや少ないように感じました。例えば次の問題は易しめで、多くのモデルが正答できているのですが、Phi-3-mini は誤答を返してしまいました。

> Q. 伊勢神宮は何県？
>
> A. 伊勢神宮は愛知県に位置しています。

また、（Phi-3 に限らず日本語圏・海外圏のモデル両方にあてはまる共通課題ですが）ビジネスメールなど**敬語表現を含む文章**の作成は苦手とする傾向がみられます。例えば、下記の質問に対する Phi-3 の回答をみてみましょう。

> Q. 以下のメールに返信してください。
> お疲れ様です。
> 本日体調不良により、予定より到着が少し遅れてしまいそうです。
> 遅くとも13時過ぎには着くと思います。
> ご迷惑をおかけして恐縮ではございますが、 何卒ご容赦いただけますようお願い申し上げます。
> 
> A. お疲れ様です。
> 
> 
> 貴重なご報告をいただき、ありがとうございます。体調不良のために、予定よりも少し遅れてしまいましたこと、大変申し訳ございませんでした。
> 
> 
> 13時遅れに到着することを心よりお詫び申し上げます。このような状況では、お客様にとって大変なご不便をおかけしてしまい、心よりお詫び申し上げます。
> 
> 
> 今後ともよろしくお願い申し上げます。何卒ご容赦いただけますようお願い申し上げます。
> 
> 
> 敬具
> 
> 
> [あなたの名前]
> 
> [あなたの職業/会社名]

体調不良の連絡に対して、なぜか「大変申し訳ございません」「心よりお詫び申し上げます」と述べており、相手の行為を許す側としては適切な表現ではありません。そのほかにも、日本語として不自然な表現がところどころ見られます。

こうした課題点はあるものの、高い平均スコアが示すとおり、各モデルとも全体的な回答の品質はよく、他のオープンアクセスモデルにも引けを取らないと感じました。

## 考察

ここまで、Llama3、Command-R-Plus、Phi-3-mini の性能を ELYZA-tasks-100 で評価した結果と、実際の回答例をご紹介しました。誤りや不正確な回答はもちろんありますが、ほとんどのケースで質問・指示の内容を正しく理解し、回答を生成できていました。昨年末に実施したベンチマーク評価では、指示を誤解したり、関係ない文章を出力してしまうモデルもありましたが、それから半年も経たないうちにオープンアクセスモデルの性能が大幅に伸びたと実感しています。

### 海外モデルの日本語性能向上

特に強調したいのは、今回評価したモデルがすべて海外発のモデルである、という点です。

これまでも Llama2 や Mistral など、性能の高さをうたうモデルはいくつか存在しましたが、「**公開されているモデルが日本語を理解できない**」あるいは「**日本語指示を理解していても日本語で回答できない**」という難点がありました。このため、海外勢 LLM を日本語タスクで用いる場合、日本語文章を用いて継続事前学習（CPT）したうえで、指示追従用途にファインチューンして日本語指示追従モデルを構築する、という手法が一般的でした。

これに対し、今年（2024年）4月に公開された Llama3 や Command-R-plus、Phi-3 は**追加の学習なしで日本語の回答を得ることができる**という点が大きな特徴です。学習データセットに日本語など英語以外のデータが含まれていることが要因と考えられますが、こうした特徴のおかげで、これらのモデルと日本語で意思疎通することが可能になっています。

こうした多言語学習が今後主流となれば、「英語圏では性能がよいモデルと評価されているのに、日本語ではモデルがまったく使えない」という状況は徐々に解消されていくと期待されます。

### データセットの質と規模

また、**データセットの質と規模**の重要性が高まっている点も注目に値します。

まずデータセット規模に関して、Llama3 は先代の Llama2 と比べてアーキテクチャやパラメタ数に大きな変化がない一方、データセットを大規模化しており、前世代モデルの Llama2 の7倍以上におよぶ **15Tトークン** のデータセットで学習しています。学習リソース最適化の観点からデータセット量とパラメタ数の最適解を示した [Chinchilla 則](https://arxiv.org/abs/2203.15556) によると、8B モデルの最適コーパス規模は 200B トークンですが、[Meta による Llama3 解説記事](https://ai.meta.com/blog/meta-llama-3/)によれば、コーパスを Chinchilla 最適解を2桁上回る規模にしても性能が (log-linear に) 向上したと報告しており、さらにデータ量を増やせば性能向上の余地があると示唆しています。

> We made several new observations on scaling behavior during the development of Llama 3. For example, while the Chinchilla-optimal amount of training compute for an 8B parameter model corresponds to ~200B tokens, we found that model performance continues to improve even after the model is trained on two orders of magnitude more data. Both our 8B and 70B parameter models continued to improve log-linearly after we trained them on up to 15T tokens. Larger models can match the performance of these smaller models with less training compute, but smaller models are generally preferred because they are much more efficient during inference.
>
> Meta, "[Introducing Meta Llama 3: The most capable openly available LLM to date](https://ai.meta.com/blog/meta-llama-3/)" (2024)

パラメタ数よりもデータセット規模を追求する、という Llama3 の戦略は、最近の大規模モデルのトレンドとも合致しています。パラメタ数を大きくして性能強化を図ると、できあがったモデルを実行できる環境が限られてしまうという難点があります。実際のところ、パラメタ数が100Bを超えるオープンアクセスモデルは、今回ご紹介した Command-R-plus のほか [Bloom](https://huggingface.co/bigscience/bloom), [Falcon-180B](https://huggingface.co/tiiuae/falcon-180B), [Grok](https://huggingface.co/xai-org/grok-1) などごく一部で、ほとんどのモデルはパラメタ数が 100B 未満です。1枚のGPUで実行できる程度のパラメタ数に抑えたうえで、Chinchilla 則を超えるデータセットを投入して学習することで、（学習予算としては最適でなくとも）パラメタ当たりの性能を限界まで引き上げる、という方針が、現在のモデル開発では主流と言えるでしょう。

データセットの質という観点では、2023年アドカレの [Kunishou](https://qiita.com/kunishou) さんの記事にもあるとおり、「大量のテキストデータをどのようにフィルタリングして、高品質なデータセットを作成するか」が重要になります。

https://qiita.com/kunishou/items/50559fb3fb3c9df3a41d

とくに **Phi シリーズ**では、少数のパラメタ数で高性能なモデルを開発する都合上、データセットの品質向上が重視されてきました。今回紹介した Phi-3 の2世代前にあたる Phi-1 の解説論文 "[Textbooks are all you need](https://arxiv.org/abs/2306.11644)" では、タイトル通り「教科書レベルの品質（textbook quality）データ」を学習させることで高性能なモデルを開発する方法が提案されており、Phi-3 も（学習トークン数こそ 10000 倍に拡大していますが）データ品質を重視する方針を引き継いでいます。

また、Llama3 でもデータセットの品質担保は大きなテーマとなっています。前出の Llama3 解説記事では、ヒューリスティックなフィルタや不適切コンテンツフィルタ、重複排除のほか「（前世代モデルの）Llama2 を使って高品質のテキストを選別する」という手法など、さまざまな方法を組み合わせてフィルタリングパイプラインを構築していることが説明されています。

既存のモデルを新たな LLM 開発に活用する手法としては、**LLMを用いたデータ拡張**も注目に値します。例えば Phi-3 では、フィルタリングしたWebコーパスを用いて一般的知識を身につけさせる「フェーズ1」の学習の後で、LLM が生成したデータを学習させて論理的思考力やさまざまな分野の専門技能を強化する「フェーズ2」の学習を行っています。LLMを使ってデータ拡張する手法についても、Kunishou さんのアドカレ記事で実例が紹介されていますので、ぜひご参照ください。

https://qiita.com/kunishou/items/1c78f4d55f8df90137eb

### 中小規模の組織はどうすればよいか

最後に、こうしたモデルを日本の（とくに中小規模の）組織が活用するにはどうすればよいか、という点に触れたいと思います。

高品質・大規模なデータセットを用いてモデルをゼロベースで開発するには、データのキュレーションに多くのリソースを投じる必要があります。他のモデルのベースとなる高性能なモデルを開発している企業のほとんどは、Meta や Microsoft など大きな資本力をもつ海外企業であり、こうした企業がモデルを矢継ぎ早に公開しています。それと同時に、モデルが陳腐化するスピードもきわめて速く、圧倒的な性能を誇っていたモデルが、1～2カ月後には新しいモデルに太刀打ちできなくなってしまうことも珍しくありません。こうした状況の中、とくに中小規模の組織が新規モデルをフルスクラッチ開発するのは非常に難しく、リスクが高いと考えられます。

より現実的な戦略としては、モデルの**ファインチューニング**があります。最新のモデルを適宜ファインチューニングすることで、そのモデルの性能を引き継ぎつつ、特定ドメイン・用途に特化したモデルを開発する、という方法です。ファインチューンの場合、学習サンプル数は数百～数千程度あれば十分な効果を発揮することが多く、データセットの構築は比較的容易です。また、[LoRA](https://huggingface.co/docs/peft/main/en/conceptual_guides/lora) や [DPO](https://huggingface.co/blog/dpo-trl) などリソース消費量の少ないファインチューニング手法を活用すれば、Google Colab などの安価なクラウド環境でも学習を実行することもできます。

ただし、オリジナルモデルのライセンス面には注意が必要です。例えば、今回ご紹介したモデルのうち Command-R-plus は CC BY-NC ライセンスで公開されており、商用利用ができません。また、Llama3 はほとんどの企業で商用利用が可能ですが、[利用規約](https://llama.meta.com/llama3/license/)によって派生型モデルの命名方法やライセンス表示が指定されています。企業によっては、こうした制約がブランディング戦略上の支障になるケースもあるかもしれません。

実際に Llama3 のライセンスに従って派生型モデルを公開している例としては、rinna 社の「**妖狐 (Youko)**」([PR](https://rinna.co.jp/news/2024/05/20240507.html), [HF](https://huggingface.co/rinna/llama-3-youko-8b)) があります。下図は HuggingFace のスクリーンショットですが、モデル名の先頭に、オリジナルモデルの名前が記載されていることがわかります。

![rinna が開発した Llama3 派生型モデル「妖狐（Youko）」のライセンス表示例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/ae635f20-f467-2abb-63a9-f4c765f7d4f8.png)

ライセンス上の制約が小さいモデルとしては、今回ご紹介した Phi-3-mini (MITライセンス）のほか、仏 Mistral AI 社の [Mixtral 8x22B](https://huggingface.co/mistralai/Mixtral-8x22B-Instruct-v0.1) (Apache 2.0) などが挙げられます。モデルの用途や企業の方針に合わせて、モデルを選択することが重要だと思います。

## まとめ

今回は LLaMA3、Command-R-Plus、Phi-3-mini の性能を ELYZA-tasks-100 で評価し、実際の回答例をご紹介しました。これまでの海外発モデルは「日本語を理解できない」「日本語指示を理解できても、回答が英語になってしまう」などの問題点がありましたが、今回ご紹介したモデルは、日本語に特化した追加学習を行わなくても、日本語で回答を返すことができるという点が大きな特徴です。

今後も「日本語を話せるオープンアクセスの海外モデル」は増えてくると考えられます。そうした中、モデル開発に割けるリソースが限られる中小規模の組織でLLMを活用するには、これらのモデルを適宜ファインチューンしながら、自社の課題に合わせたモデルを開発することが重要だと思います。

## 参考リンク

* 評価用 Colab ノートブック
    * [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1DQ0oFdj-QAzpyLMtes424AJmOVuwtAE3?usp=sharing) Llama3-8b
    * [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1gGlvI_SpSYqfHB-EoKkr2dL8PEKwgYOo?usp=sharing) Llama3-70b
    * [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1cycSPwY_TblvCEImhXncn4uWJfo1GJPT?usp=sharing) Command-R-Plus
    * [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1WgIPblYOMD6sqyc0CbdPA7RumIJLbbFT?usp=sharing) Phi-3-mini

## Appendix: Command-R-Plus API の性能はどの程度か？

本編では 2bit 量子化した Command-R-Plus を用いて性能評価しましたが、量子化が回答品質にどのくらい影響しているか調べるため、Cohere が提供している [Command R+ API](https://docs.cohere.com/docs/chat-api) の性能評価も行いました。

:::note info
**Command R+ 試用版 API について**

執筆時点で、Command R+ の試用版 API はレートリミットなどの制限がありますが、無料で使うことが可能です。API を利用するには、[Cohere AI のダッシュボード](https://dashboard.cohere.com) からユーザ登録します。試用版だけを使う場合は、支払い情報の登録は不要です。

レートリミットとして、1アカウントあたりリクエスト回数は**毎月1000回まで**、**毎分10回まで**に制限されています ([ドキュメント](https://docs.cohere.com/docs/going-live))。これを超えると API からはエラーが返却されます。
:::

GPT-4 による評価結果を図に示します。

![et100_cmdr_api_vs_2bit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/4d6ad9b8-1776-b1a1-53f8-2663bed911a5.png)


得点は **3.52** 点で、2bit 量子化版と比べると 0.15 点の得点向上となりました。...とはいえ、Llama3 や量子化 Command R+ に比べて、ずば抜けて高い得点ではありません。加えて、GPT-4 による回答評価にはある程度のぶれが存在するため、API版の性能が 2bit 版に比べて大幅に改善している、とまでは言えなさそうな結果です。

Command R+ API による実際の回答を 2bit 版の回答と比較すると、API 版のほうがより的確な回答をできているケースがある一方、2bit 版が正答した問題で誤答してしまうケースもありました。まず、API 版のほうが回答内容が改善した例として、本編で取り上げた「与えられた道具を使って昼ごはんを用意する問題」の回答を示します。

> Q. あなたは以下の道具を持っています。これらの道具を必要なだけ使って、今日の昼ごはんを準備してください。
> 
> チラシ: 宅配ピザならピザジャンボ！ S: 900円, M: 1200円, L: 1600円 電話番号も書いてある。
> 鍵: 家の戸締りに使う
> 携帯: 古いのでネット検索はできないが電話をするには十分
> ポイントカード: ラーメン屋のポイントカード
> 財布: 1000円しか入っていない。
>
> A: わかりました！ 限られた道具と予算内で昼食を用意しましょう。
> 
> まず、ピザを注文するオプションがあります。チラシによると、ピザジャンボでは S サイズで 900 円、M サイズで 1,200 円のピザを提供しているようです。残念ながら、インターネット検索ができない古い携帯電話を持っているので、ピザジャンボの電話番号を調べることはできません。しかし、チラシに電話番号が記載されているので、携帯電話を使ってピザを注文することができます。予算は 1,000 円なので、S サイズのピザを注文することができます。
> 
> もう一つのオプションは、ラーメン屋に行くことです。ポイントカードを持っているので、おそらくそのラーメン屋に行ったことがあるのでしょう。財布に 1,000 円入っているので、ラーメンを注文するのに十分な金額があるはずです。
> 
> ですので、昼食のオプションは、ピザジャンボに電話して S サイズのピザを注文するか、ラーメン屋に行ってラーメンを食べるかのどちらかになります。どちらを選びますか？

2bit 版の回答では、誤って「ピザを注文するのに必要なお金がない」と回答してしまいましたが、API 版では S サイズのピザを注文することができると正しく回答しています。

一方、2bit 版では正解した一方、API 版では誤答した例として、以下の質問に対する回答を見てみましょう。

> **Q.** こうして社会の秩序は政治家や教師や警官による物理的な強制のほか、メンバー個々人の自発的な意志にも支えられています。実際、学校の授業が自習になったときや、誰もいない場所で信号待ちをしているとき、誰も見ていない道端でタバコを捨てたくなったときなど、教室で大騒ぎをし、堂々とタバコを投げ捨てることが可能であるにもかかわらず、そうすることになんらかの躊躇を感じる人が大半だと思います。（&lt;a&gt;傍若無人にふるまう人もいますが。）
> 
> 上記の文章を読んで、&lt;a&gt; に入れるのに最も適したものを以下の選択肢から選び、その理由を答えなさい。
> 
> - だから
> - また
> - むしろ
> - もちろん
>
> **A (2bit)**: 「もちろん」が正しい表現です。「傍若無人にふるまう人もいますが。」という文章は、「社会秩序を守っている人が大半である一方で、そうでない者もいる」という意味合いを補足する説明文となっています。この場合の接続詞には、前後の内容を対比させる「もちろん」が適しています。「だから」「また」「むしろ」だと、前後で因果関係や列挙、強調の意味合いになってしまいます。
>
> **A (API)**: &lt;a&gt;に入れるのに最も適した言葉は「また」である。
> 
> 理由：この言葉は、前後の文脈から、例外や対比を示すために使用される。傍若無人にふるまう人がいるという事実は、社会秩序が個々人の自発的な意志によって支えられているという文脈とは対照的であり、例外的なケースであることを示している。

正解は接続詞「もちろん」であり、2bit 版の回答は正解、API版は不正解です。回答理由の説明をよく読むと、「カッコ内の記述と本文は対比構造にある」という部分はどちらのモデルも理解できているように見受けられます。しかし、2bit 版では正答の「もちろん」、API 版では誤答の「また」を対比の接続詞と説明しており、同じモデルであるにもかかわらず回答が矛盾しています。今回の問題では、文脈を理解したうえで妥当な接続詞を選ぶ必要がありますが、このような複雑な過程を必要とする問題への対応力は、GPT-4 のようなトップレベルのモデルに比べると改善の余地があると言えそうです。

このように、API と 2bit 版でそれほど大きな違いはなさそうだ、という意外な結果になりました。量子化がモデル性能に与える影響の度合いは、モデルの規模によって決まるとの指摘（[Li et al. 2020](https://arxiv.org/pdf/2002.11794))や、ハイパーパラメタの影響を受けるという報告 ([Cohere](https://cohere.com/blog/intriguing-properties-of-quantization-at-scale)) がありますが、今回のベンチマーク結果を見るかぎり、Command R+ は量子化に対してわりあい頑健なモデルであると言えそうです。