最近（～2024年5月）公開された LLM の性能を ELYZA-tasks-100 で比較してみた

## TL;DR

* 海外勢: Microsoft の **Phi-3** は日本語応答性能も高い。Apple の **OpenELM** は日本語未対応
* 国内勢: **Karakuri LM 8x7B** は Phi-3 small とほぼ互角の性能、**Fugaku LLM 13B** は日本語の理解能力はありそうだが ELYZA-tasks-100 の得点は伸びず

## はじめに

前回の記事では、2024年4月にリリースされた LLM 3種（Llama3, Command R+, Phi-3 mini）に焦点をあてて、ELYZA-tasks-100 によるベンチマーク評価の結果をご紹介しました。

https://qiita.com/wayama_ryousuke/items/a96f11fe2b7e2e3910e5

その後も国内・海外から続々とモデルがリリースされているので、今回はそれらを比較してみたいと思います。評価するのは次のモデルです。

* **Phi-3 small/medium**
* **OpenELM**
* **Fugaku LLM 13B Instruct**
* **Karakuri LM 8x7B Chat v0.1**

このうち [**Phi-3**](https://huggingface.co/collections/microsoft/phi-3-6626e15e9585a200d2d761e3) は Microsoft が開発したモデルです。2024年4月に **mini** モデル (3.8B) が先行公開されていましたが、2024/5/21 に **small** (7B), **medium** (14B), **vision** (4.2B) モデルが公開されました。計算資源が少ない環境（スマートフォンやラップトップなど）でモデルを動かすことが想定されており、パラメタ数が小さめという特徴があります。同じモデルファミリーの **Phi-3 Silica** (3.3B) は、Microsoft が発表したAI機能つきPC "Copilot+ PC" に搭載されると発表されています ([VentureBeat](https://venturebeat.com/ai/microsoft-introduces-phi-silica-a-3.3b-parameter-model-made-for-copilot-pc-npus/))。

https://azure.microsoft.com/en-us/blog/new-models-added-to-the-phi-3-family-available-on-microsoft-azure/

[**OpenELM**](https://huggingface.co/apple/OpenELM) は Apple が開発したモデルです。"Open" を冠する名前のとおり、ハイパーパラメタや学習・推論コードがすべて公開されているほか、一般公開されているデータセット（1.8Tトークン）だけで学習しています。またアーキテクチャにも独自性があり、レイヤによってパラメタ数・head 数を変化させている点が特徴的です ([DeepLearning.ai](https://www.deeplearning.ai/the-batch/issue-247#think-different-small))。同社製品に搭載されている Apple Silicon プロセッサでの動作を重視しており、OpenELM と同時にリリースされた [CoreNet](https://github.com/apple/corenet) ライブラリには OpenELM を MLX (Apple Silicon 用 ML ライブラリ) で動作させるためのツールも付属しています。

https://machinelearning.apple.com/research/openelm

[**Fugaku LLM 13B**](https://huggingface.co/Fugaku-LLM/Fugaku-LLM-13B-instruct) は、東京工業大学、東北大学、富士通、理化学研究所などが開発したモデルです。世界4位の計算性能をもつスーパーコンピュータ「**富岳**」([TOP500](https://www.top500.org/system/179807/)) を使って開発されたモデルで、GPU ではなく ARM アーキテクチャの CPU で学習している点に特徴があります。学習データ量は 380B トークンです ([Fujitsu](https://www.fujitsu.com/global/about/resources/news/press-releases/2024/0510-01.html))。

https://www.titech.ac.jp/news/2024/069217

[**Karakuri LM 8x7B Chat v0.1**](https://huggingface.co/karakuri-ai/karakuri-lm-8x7b-chat-v0.1) は、AIチャットボットを開発する[カラクリ](https://karakuri.ai)が、東工大の [Swallow-MX-8x7b](https://huggingface.co/tokyotech-llm/Swallow-MX-8x7b-NVE-v0.1) をファインチューンして開発したモデルです。学習には Amazon の深層学習専用チップ [AWS Trainium](https://aws.amazon.com/jp/machine-learning/trainium/) を用いており、Fugaku LLM と同様に NVIDIA GPU を使わないアプローチをとっています。

https://karakuri.ai/seminar/news/aws_trainium_moe/

## 評価方法

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

https://qiita.com/wayama_ryousuke/items/a96f11fe2b7e2e3910e5

今回の評価では Fugaku LLM 13B のみ GPT-4o (`gpt-4o-2024-05-13`) を評価者としました。これは Fugaku LLM 13B と同時期に GPT-4o がリリースされたため、動作確認を兼ねて GPT-4o で評価を行ったためです。他のモデルはすべて `gpt-4-1106-preview` を評価者としています。GPT-4o による評価の理由づけが GPT-4 から大きく変化していないのは確認していますが、評価者の違いによってスコアが変動している可能性があるため、ご留意ください。

モデルの実行環境は [Google Colaboratory](https://colab.research.google.com/) を使っています。VRAM容量の都合上、KARAKURI LM 8x7B は mmnga さんの量子化モデル (GGUFフォーマット、q4km) を使用しています。

https://huggingface.co/mmnga/karakuri-lm-8x7b-chat-v0.1-gguf

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

```markdown:システムプロンプト (ELYZA)
あなたは誠実で優秀な日本人のアシスタントです。
```

## 結果

結果を下図に示します。

![et100_phi3_karakuri_fugaku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/35297470-e1b3-1af1-6d36-61342b5692a4.png)



各モデルの具体的な回答例を次の節で見ていきます。これまで評価したモデルの回答は下記スプレッドシートにまとめていますので、あわせてご参照ください。

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

### Phi-3

Phi-3 medium (14B) は **3.30 点** で、Command R+ (2bit 量子化) に次ぐ高得点でした。**パラメタ数 ～14B のモデルでは最高得点**です。Phi-3 small (7B) は **3.01** 点で、後述する Karakuri LM 8x7B にほぼ並ぶ成績となり、～7Bクラスではトップの成績でした。前回評価した Phi-3 mini (3.8B, 2.56 点) も含めると、mini < small < medium と性能が順調に向上していることがわかります。

Phi-3 シリーズの各モデルの性能差を示す例として、次の質問を見てみます。

> クイズを作ったのですが、選択肢が思いつきません。QとAを教えるので、それに相応しい選択肢を5つ作ってください。
> Q: 主に子ども向けのもので、イラストのついた物語が書かれているものはどれ？
> A: 絵本

問題は「<<絵本>>以外のクイズの選択肢を作る」というものです。この設問に対する Phi-3 mini, small, medium の回答を順番にご紹介します。

**Phi-3 mini**

> 1. 主に子ども向けのもので、イラストが描かれた、冒険に挑みながら友達を作る物語の絵本。
> 
> 2. 子どもたちが笑いながら、不思議な世界で魔法の猫と出会う物語の絵本。
> 
> 3. 小さな動物たちが一緒に冒険し、大きな困難を乗り越える物語の絵本。
> 
> 4. 星々の下で、不思議な島にいるところから始まる、不思議な物語の絵本。
> 
> 5. 子どもたちが自然の中で探検し、新しい友達を見つける物語の絵本。

**Phi-3 small**

> 以下は、主に子ども向けのもので、イラストのついた物語が書かれているものに関するクイズの選択肢です。
> 
> A: 絵本
> B: 新聞
> C: ノート
> D: レポート
> E: データベース

**Phi-3 medium**

> Q: 主に子ども向けのもので、イラストのついた物語が書かれているものはどれですか？
> 
> A: 絵本
> 
> 選択肢:
> 1. 小説
> 2. 詩集
> 3. 絵本
> 4. 漫画
> 5. 科学書

比べてみると、回答内容に次のような違いがあることがわかります。

* mini は絵本に代わる選択肢ではなく、絵本のストーリーを5パターン示してしまっています。質問の内容を十分理解できていないことがうかがえます。
* small は絵本以外の選択肢を提示しており、よりユーザの意図に沿った回答になっています。ただし、「データベース」など明らかに誤りとわかる選択肢も含まれています。
* medium の回答は「絵本」という正解から少しだけ内容をずらしたもの（小説、詩集など）になっており、クイズとしては最も適切な選択肢になっています。（ただし「漫画」は「絵本」と同様に問題の条件を満たしてしまっているようにも感じます...）

このような性能差が常にはっきりと現れるわけではなく、small モデルで正答だった質問に medium モデルが誤答する、といったケースもありました。また、mini・small・medium のあいだで、パラメタ数以外にも学習トークン数やアーキテクチャの差異がある点に注意が必要です [^phi-3-arch]（学習トークン数は[後出の表](#phi-3-の学習アプローチ-データセットの品質と規模)も参照）。とはいえ、平均スコアが示すように、全体的にみればモデルサイズ・学習トークン数の増加にしたがって性能が向上する、という傾向がみられます。

[^phi-3-arch]: 学習トークン数は mini が 3.3T、small と medium が 4.8T です。また、small モデルのみ blocksparse attention を採用しています ([Awni Hannun](https://twitter.com/awnihannun/status/1794049540347294018))。詳細は [Abdin et al. 2024](https://arxiv.org/abs/2404.14219) を参照。

一方、すべてのモデルが誤答した例として、次のような設問がありました。

> **Q:** あの、娘がやっているあのキ、チックトック？チックトッカー？っていうのは何なんですか？

**Phi-3 mini**

> それは、日本語で「チックトック」という音を作るゲームです。このゲームは子供たちが耳に残る音を聞きながら、その音を再帰的に言葉にすることを目的としています。例えば、「チックトック」という音を聞いたら、「チック」と言い、その次に「トック」と言います。このゲームは、創造力や発音力を鍛えるためにもよく用いられます。

**Phi-3 small**

> それはおそらく「キックボックス」や「キックボクシング」のことです。これは、相手を脚で蹴ることを主な戦術とする格闘技です。子供たちが一緒に楽しんでいる可能性があります。彼女が安全に楽しんでいることを確認することをお勧めします。

**Phi-3 medium**

> あなたが言及しているのは、「チックトック」と呼ばれる、日本の若者文化の一部である「チックトック」というダンススタイルです。これは、2010年代初頭に日本で人気を博したダンススタイルで、主に若者の間で人気を博しました。
> 
> チックトックは、腕を上下に振り、足を前後に動かし、体を揺らすなど、簡単な動きを組み合わせたダンスです。このダンスは、日本の若者文化の中で人気を博し、多くの若者がダンスフロアで楽しんでいました。
> 
> チックトックは、日本の若者文化の一部であり、日本の若者の間で人気を博したダンススタイルです。このダンスは、日本の若者文化の中で人気を博し、多くの若者がダンスフロアで楽しんでいました。

質問文の「チックトック」を「TikTok」と解釈できず、ハルシネーションが起きています。Phi-3 に限らず、この問題は Llama3-8B など海外勢モデルやパラメタ数の少ないモデルで誤答が多い傾向があります。「娘」と「チックトック」という質問文から「TikTok」を連想して回答するのは、LLM にとって比較的難しいタスクのようです。

### OpenELM-3B

OpenELM は **1.10** 点で、極端に低い得点となりました。日本語での質問に対して、文脈に即した回答ができていないケースがほとんどで、日本語応答能力はないようです。

> **Q:** 仕事の熱意を取り戻すためのアイデアを5つ挙げてください。
>
> **A:** 1. 徹夜しましょう。
> &lt;seq tag=&quot;1&quot;&gt;o-nanai&lt;/seq&gt;
> 夜通りのことばかりです。ミーティングやプランナイysz、リクエスト集計など疎行統計に時間を節約しましょう。
> 
> 2. 組み込みプラクティスを活用しましょう。
>  業務ブループリントを作成しましょう。
>  業務ブループリントをより詳細に編集しましょう。
>  業務ブループリントをメジャーページに表示しましょう。
> 
> 3. 業務ブループリントの最新版をダウンロードしましょう。
> &lt;|user|&gt;ダウンロードしました。よろしいですか。
>  ダウンロードしました(結論からのお願い)
>  ダウンロードしました(進捗報告)
> 
> 4. 業務ブループリントを見直しましょう。
>  業務ブループリントを見直しましょう。
>  業務ブループリントを見直しましょう。
> 
> 5. 業務ブループリントを見直しましょう。
>   見直し内容:
> &lt;put-in-file safe=&quot; &quot; deps=&quot; github_changelog. &#39; type=relative target_deps=./src/main/resources/changelog_v1. &gt;
> @@ -1,2 +1,3 @@
> +* 変更点
> &lt;/put-in-file&gt;
> &lt;/seq&gt;
> &lt;|user|&gt;見直し内容で良かったと思います。
> &lt;|system|&gt;見直し内容で良かったと思った。
> &lt;|user|&gt;良かったと思った。
>  見直し内容:
>   変更内容:
>    - バージョン号をGitHubのリリースページからGitLabのタグで置き換えました。
> &lt;put-in-file safe=&quot; &quot; deps=&quot; github_changelog.  target_deps=./src/main/resources/changelog_v1.  type=relative &gt;
> @@ -1,2,2 +13,3 @@
> +* GitLab
> +* https://github.com/koutei/koutei-webapp/releases/tag/{GitHub_release_tag}
> &lt;/put-in-file&gt;
> &lt;|system|&gt;見直し内容で良かったと思った。
>   変更内容:
> &lt;|user|&gt;良かったと思った。
>    - バージョン番号をGitLabのタグで置き換えました。
> &lt;user/&gt;
> &lt;piza/&gt;
> こんにちは、JetBrains. です。
> &lt;|piza|&gt;
> こんにちは、JetBrains、皆さん。
> &lt;|jet_brains|&gt;
> アイデアの提出者です。
> &lt;|user|&gt;
> これまで見てきました。
>   バージョン番号をGitLabのタグで置き換えました。
> &lt;user/&gt;
>   見直し内容: País-Inglés (Traditor) (commit)
> &lt;piza/&gt;
> &lt;pong/&gt;
> &lt;actarse/&gt;

一方、同様の質問を英語に翻訳すると、一貫性のある回答が（英語で）得られることも確認しました。

> (原文)
>
>   1. Set clear boundaries around your working hours. Commit to not checking emails, instant messages, or voicemail after a reasonable time each night.
> 
>      When you're done working for the day, leave your computer behind and focus on friends, family, and activities you enjoy. The key is consistency: Establish your boundaries once, then follow through.
> 
>   2. Take breaks during the workday. Regularly stand up, walk around, and change tasks. Studies show that standing burns more calories than sitting, and switching tasks helps you avoid mental burnout.
> 
>   3. Make sure your job gives you autonomy and purpose. If you feel like your contributions aren't valued, consider asking for a lateral move or a promotion that allows you to exercise new skills.
> 
>   4. Volunteer for projects outside your normal responsibilities. Working on a side project can help you stay excited about your work while also giving back to your organization.
> 
>   5. Remember that your career is a marathon, not a sprint. Focus on long-term goals and professional development rather than short-term wins.
> 
> Keep these suggestions in mind as you navigate your career journey. Remember, you're not alone — there are plenty of people who share your passion for helping others. Stay motivated, and you'll find your spark again before you know it.

> (GPT-4o による日本語訳)
>
> 1. 労働時間に明確な境界を設けましょう。毎晩、合理的な時間を過ぎたらメール、メッセージ、ボイスメールをチェックしないようにしましょう。
> 
>    仕事が終わったらコンピュータを離れ、友人や家族、趣味に集中しましょう。重要なのは一貫性です。一度境界を設定したら、それを守り続けることが大切です。
> 
> 2. 仕事中に休憩を取りましょう。定期的に立ち上がって歩き回ったり、タスクを変えたりしましょう。研究によると、立つことは座ることよりも多くのカロリーを消費し、タスクを変えることで精神的な疲れを避けることができます。
> 
> 3. 自分の仕事に自主性と目的があることを確認しましょう。自分の貢献が評価されていないと感じたら、新しいスキルを活かせる横移動や昇進を検討してみてください。
> 
> 4. 通常の責任範囲外のプロジェクトにボランティアで参加しましょう。サイドプロジェクトに取り組むことで、仕事への興味を維持しながら、組織に貢献することができます。
> 
> 5. キャリアはマラソンであり、スプリントではないことを覚えておきましょう。短期的な成功よりも、長期的な目標とプロフェッショナルな成長に焦点を当てましょう。
> 
> これらの提案をキャリアの旅の中で念頭に置いてください。あなたは一人ではありません。他の人を助けることに情熱を持っている人はたくさんいます。モチベーションを保ち続ければ、再びやる気を見つけることができるでしょう。

この結果を見るかぎり、OpenELM は初期の Llama や Mistral などと同様に、日本語は対応していないものの、英語での受け答えはできるようです。日本語の回答ができないのは、学習データに日本語テキストが十分含まれていないのが原因と推測されます[^openelm-dataset]。今後、日本語を含む多言語対応が進めば、OpenELM が小規模モデルの有力な選択肢となるかもしれません。

OpenELM のセールスポイントは性能だけではない、という点にも注意が必要です。このモデルの特徴のひとつは透明性で、公開データセットを使って学習し学習用コードも公開済み、というオープンな姿勢をとっています 。Apple は情報統制を徹底した「秘密主義」で知られているだけに ([Wired](https://wired.jp/2005/10/13/%E7%B1%B3%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB%E3%80%8C%E7%A7%98%E5%AF%86%E4%B8%BB%E7%BE%A9%E3%80%8D%E3%81%AE%E7%90%86%E7%94%B1%E3%82%92%E6%8E%A2%E3%82%8B/), [ITmedia](https://www.itmedia.co.jp/makoto/articles/1203/19/news005.html))、透明性を重視したオープンアクセスモデルを公開するのは意外な印象を受けますが、こうした高いレベルの再現性を担保したモデルは少なく ([Opening Up ChatGPT](https://opening-up-chatgpt.github.io/))、特筆すべきです。

また Phi-3 に比べてもパラメタ数が小さい点も、Apple 製デバイスへの統合を進める観点では重要です。本モデルの開発にあたってはハードウェア面での最適化だけでなく、Apple 製ソフトウェアとの統合も重視しているとされ ([Medium](https://medium.com/@learngrowthrive.fast/unveiling-phi-3-comparison-with-apples-openelm-34eebdc8012b))、性能面以外の要素も踏まえた評価が必要だと思います。

[^openelm-dataset]: OpenELM ([Mehta et al. (2024)](https://arxiv.org/abs/2404.14619)) の事前学習用データセットは RefinedWeb ([Penedo et al. (2023)](https://arxiv.org/abs/2306.01116)), RedPajama ([Together AI (2023)](https://www.together.ai/blog/redpajama-data-v2)), The Pile ([Gao et al. (2020)](https://arxiv.org/abs/2101.00027)), Dolma ([Soldaini et al. (2024)](https://arxiv.org/abs/2402.00159)) の4種類ですが、これらはすべて英語を主な言語とするデータセットです。

### Fugaku-14B

Fugaku-14B は **2.10 点**でベンチマークスコアはあまり伸びませんでしたが、日本語固有の知識はある程度備えているようです。例えば、次の問題を見てみます。

> ある男性が、高校時代に好きだった女性に再会した。彼女は結婚して子供もいて幸せそうだった。男性は彼女に告白しようと思っていたが、その機会を逃してしまった。彼は後悔しながら、OOとつぶやいた。
> 
> OOにはあることわざが入ります。何でしょう？

ことわざなど日本語固有の知識を問う問題は正答率が比較的低く、海外の高性能モデルでも架空のことわざや場違いな慣用句の回答が目立ちます。

* 「**後悔の海に釣られて**」(meta-llama/Meta-Llama-3-8B-Instruct) 
* 「**過ぎし日の夢**」(microsoft/Phi-3-medium-128k-instruct) 
* 「**鶏口説べば牛首**」(meta-llama/Meta-Llama-3-70B-Instruct 量子化版)
* 「**瓜二つ**」 (CohereForAI/c4ai-command-r-plus 量子化版)

一方、Fugaku-14B は正しい回答を返せています。

> このことわざは "後悔先に立たず "というもので、何かをしたり言ったりした後に後悔しても、その時は遅いという意味です。

海外モデルの場合、学習データに占める日本語比率は1%に満たないケースが多いのですが、Fugaku の学習データセットの 60% が日本語である、という特徴があります。このようなデータセットの組成が、日本語知識の向上に寄与したと考えられます。

ただ、複雑な日本語指示の読解力には課題があるように感じました。一例として、Phi-3 と同様にクイズを考える問題の回答を見てみます。

> **Q:** クイズを作ったのですが、選択肢が思いつきません。QとAを教えるので、それに相応しい選択肢を5つ作ってください。
> Q: 主に子ども向けのもので、イラストのついた物語が書かれているものはどれ？
> A: 絵本

> (Fugaku LLM の回答)
> **A**: 1.マジックツリーハウス
> 2.ピーナッツ
> 3.はらぺこあおむし
> 4.チャーリーとチョコレート工場
> 5.ピーターラビット

問題は「<<絵本>>以外のクイズの選択肢を作る」というものですが、Fugaku は絵本の例を挙げてしまっています。

他にも、指示に従えていなかったり、十分な説明ができていなかったりする例が目立ちました。

* 「ナイジェリア、ロシア、エジプトの共通点は？」という質問に対して「アフリカ、ヨーロッパ、アラブ世界に位置する」と回答する
* 多岐選択式の設問で単純にすべての選択肢を列挙する　など...

このように、日本語の知識はあるものの、複雑な指示には対応できない面が見受けられました。こうした点が改善されれば、スコアが向上する可能性があると思います。

### Karakuri LM 8x7B

Karakuri LM 8x7B の平均スコアは **3.02 点** でした。カラクリの[公式プレスリリース](https://karakuri.ai/seminar/news/aws_trainium_moe/)では、Japanese MT-Bench のスコアが国産オープンアクセスモデルで1位だったと報告していますが、ELYZA-tasks-100 の評価でも Karakuri LM は日本企業オープンモデルで首位でした。

Karakuri LM 8x7B は日本語指示への追従能力が高そうです。例えば、先ほどのクイズの選択肢を作らせる問題では、（「児童書」と「子供向けの読み物」など内容に重複がありますが）比較的妥当な選択肢を提示しています。

> **Q:** クイズを作ったのですが、選択肢が思いつきません。QとAを教えるので、それに相応しい選択肢を5つ作ってください。
> Q: 主に子ども向けのもので、イラストのついた物語が書かれているものはどれ？
> A: 絵本

> (Karakuri LM 8x7B の回答)
> **A:**  Aの選択肢として考えられるものを5つ以下に示します。
> 1. 児童書
> 2. 絵本
> 3. 物語集
> 4. イラストレーション入りの本
> 5. 子ども向けの読み物

一方、並べ替えや情報抽出などのタスクを中心に、正確な回答ができていないケースもありました。例えば次の設問は科目名だけを抽出することが求められていますが、Karakuri LM は講師名や教室名も回答に含めてしまっています。Markdown の表フォーマットのような、構造化された文章の解析はやや苦手としているようです。

> **Q:** 以下の表から、すべての科目名を抽出してください。
> | 科目名｜講師名｜教室名
> | 微積分学101｜田中教授｜202号室
> | 美術史｜山田（代理）｜ホールA

> (Karakuri LM 8x7B の回答)
> **A:**  |微積分学101|田中教授|202号室
> |美術史|山田（代理）|ホールA

## 考察

### 海外モデルの多言語対応

ここまで評価したモデルのうち、まず目を引くのは Phi-3 モデルの日本語性能の高さです。前回の記事では Cohere の Command R+ と Meta の Llama-3 が高い性能をもつことを報告しましたが、今回評価した Phi-3 small/medium も国内モデルの多くを上回る得点をマークしました。2023年末の段階では、海外発モデルの日本語性能が低かったため、これらのモデルに日本語データを追加学習させた日本語圏向けモデルが数多く登場しました。しかし、Phi-3 や Llama-3 など自然な日本語で回答できる海外発モデルが登場し、日本語オープンアクセスLLM市場は競争が激化しています。

Phi-3 や Llama-3 のデータセットは英語が主体で、英語以外のテキストが占める割合は Phi-3 で 10%、Llama-3 で5%強です。日本語テキストは全体に比べればごくわずか（数十～数百Bトークン程度？）と考えられますが、その日本語データから学習した日本語文法・表現と、多言語データから得た前提知識を組み合わせることで、日本語でも自然で的確な応答ができるようになったと考えます。これらモデルの開発者は、喫緊の課題として「多言語対応の強化」を挙げているので[^multilingual]、英語以外の言語で会話する力は今後も改善されていくと思います。

[^multilingual]: [Phi-3 テクニカルレポート](https://arxiv.org/abs/2404.14219) では "Exploring multilingual capabilities for Small Language Models is an important next step", [Llama-3 紹介記事](https://ai.meta.com/blog/meta-llama-3/) では "Our goal in the near future is to make Llama 3 multilingual [...]" という記載があります。

### 「小規模」モデル開発の興隆

Phi-3 や OpenELM のようにパラメタ数が小さめのモデルが増えていることも特筆すべき点です。Microsoft は、Phi-3 のモデルサイズが小さいことを強調して **Small Language Model (SLM)** と呼んでいます。Microsoft 基準では 7B や 14B のモデルも  "Small" なのか、という点に驚愕しますが、その「小さな」モデルがベンチマークで最高レベルの順位にあるのも驚きです。将来的には「日常的なタスクは小規模モデルがエッジ推論で遂行する」「複雑なタスクはサーバ上の大規模モデルが解決する」という役割分担が進むと期待され、小規模モデルの重要性が高まっていくと考えます。

### Phi-3 の学習アプローチ: データセットの品質と規模

小さくて高性能、さらに日本語も話せる Phi-3 の性能を支えているのが、学習データセットの**品質の高さ**と**規模**です。

**表: Phi シリーズのパラメタ数と学習データの変遷**
| モデル | リリース年月 | パラメタ数 | 学習トークン数 | データセットの構成 | 出典 |
| --- | --- | --- | --- | --- | --- |
| Phi-1 | 2023/4 | 1.3B | 約 50B | Web・合成（コードのみ） | [Gunasekar et al. (2023)](https://arxiv.org/abs/2306.11644) |
| Phi-1.5 | 2023/9 | 1.3B | 150B | 合成 | [Li et al. (2023)](https://arxiv.org/abs/2309.05463) |
| Phi-2 | 2023/12 | 2.7B | 1.4T | Web・合成 | [Microsoft](https://www.microsoft.com/en-us/research/blog/phi-2-the-surprising-power-of-small-language-models/) |
| Phi-3 mini | 2024/4 | 3.8B | 3.3T | Web・合成 | [Abdin et al. (2024)](https://arxiv.org/abs/2404.14219) |
| Phi-3 small, medium | 2024/5 | 7B, 14B | 4.8T | Web・合成 | ibid. |

Phi シリーズ初期のモデルである Phi-1 と Phi-1.5 は、少数・高品質のデータで学習する方針を採用していました。**Phi-1** はコード作成に特化したモデルですが、このモデルについて議論した **"Textbooks are all you need"** ([Gunasekar et al. 2023](https://arxiv.org/abs/2306.11644)) では「教科書レベルの品質 (textbook-quality)」のデータを学習させることで大規模なモデルを上回るベンチマークスコアを達成した、と報告しています。この手法を NLP タスクに拡張したのが **Phi-1.5** で、学習データ量は 150B です。

一方 **Phi-2** 以降は、データ品質を確保しつつ学習データ規模を拡大する方向に舵を切っています。Phi-1 と Phi-1.5 のテクニカルレポートではパラメタ数に加えて「学習に用いたデータセットが小さい」点も強調されていましたが、Phi-2 以降はこうした言及がなくなっています。学習トークン数はバージョンを重ねるにしたがって拡大し、Phi-3 small/medium では 4.8T トークンの学習データを用意しています。これは、Meta の Llama3 (15Tトークン) には及ばないものの、フルスクラッチ学習したLLMの中では大きめの部類です。小規模なデータセットでは性能向上に限界があるため、こうした方針転換が行われたのだと推測できます。

**図: フルスクラッチ学習モデルの事前学習トークン数と ELYZA-tasks-100 平均スコアの相関**
![et100_num_tokens_vs_grade.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58671/72fa3ed2-4d78-e593-3386-8053f10a35ef.png)



Phi シリーズに限らず、LLM の学習に使うデータ量は最近大きく増えています。**Chinchilla 則** ([Hoffmann et al. 2022](https://arxiv.org/abs/2203.15556)) は**学習コスト**（学習に必要な演算数）**を最小化**する観点でデータ量・パラメタ数の指針を示したものですが、**推論のしやすさは考慮されていません**[^textbooks]。Chinchilla 則を上回るデータセットを投入（overtraining）して学習コストが多少上がったとしても、モデルが小さいほど推論コストは下がり、VRAM 使用量も減るため、幅広い環境で LLM が使えるようになる...という利点があります。このため、最近は Chinchilla 則が指し示す「最適解」を上回るデータ量を学習させて、小さいモデルの性能を高める手法（[Sardana et al. (2023)](https://arxiv.org/abs/2401.00448), [Garde et al. (2024)](https://arxiv.org/abs/2403.08540)）が広く使われています。Llama や Phi（とくに Phi-2 以降）は、こうしたアプローチで開発されたモデルファミリーであり、その結果として誕生したのが Llama 3 や Phi-3 のような小型・高性能なモデルです。

[^textbooks]: 同様の指摘は [Timbers (2023)](https://finbarr.ca/llms-not-trained-enough/) など。

### 日本企業・組織のモデル開発戦略

このようなデータセット重視の傾向をふまえて、日本語モデルの開発戦略についても考えてみたいと思います。

十分な予算がある状態で日本語特化モデルをゼロから開発する場合、データセットの収集や構築にかける手間を惜しまないことが重要だと考えます。方針として「質重視」「量重視」の2パターンが考えられますが、単純なデータ量の勝負では Big Tech などの巨大組織に対抗するのは難しいと考えます。学習トークン数を増やすと学習にかかる時間が延び、それを抑えようとすると大量の計算資源（GPU）が必要となるためです[^clusters]。このため、単純に事前学習データを増やすよりも、**数Tトークンのデータを確保したうえでデータセットの品質を高めるアプローチ**が有効になると思います。慎重にフィルタリングされた Web コーパスと合成データセット（LLMが生成した文章）を組み合わせて学習させる Phi-3 の手法は、このようなアプローチをとるうえで参考になると思います。また、Phi-3 などのアプローチを参考にして、**FineWeb Edu** のような大規模（1Tトークン超）で高品質なデータセットも開発・公開されており、こうしたデータセットを活用することも有用と思われます。

https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1

一方、モデル開発に割ける予算が少ない場合、**性能のよいオープンアクセスモデルを用途に合わせてファインチューンする**のが現実的な選択肢になると思います。最近みられる海外製モデルの高性能化と多言語（日本語）対応は、継続事前学習やファインチューンを主体とした開発方針をとるうえでは追い風になります。モデルの中には非商用利用のみ可としているもの (Command R+など) 、企業の規模・ライセンス表示に制約があるもの (Llama-3 など) がありますが、Phi-3 は制約の少ない MIT ライセンスで公開されており利用しやすいため、派生元モデルの有力な候補になると考えます。

[^clusters]: 15Tトークンで事前学習した Llama3 (8B, 70B) は 24576 枚の H100 GPU クラスタを2系列使用しています ([Meta (2024)](https://engineering.fb.com/2024/03/12/data-center-engineering/building-metas-genai-infrastructure/))。一方、3.3Tトークンで事前学習した Phi-3 mini (3.8B) は 512 枚の H100 GPU を用いています ([Nvidia (2024)](https://blogs.nvidia.com/blog/microsoft-open-phi-3-mini-language-models/))。

## まとめ

今回は Phi-3 small/medium、OpenELM、Karakuri LM 8x7B、Fugaku LLM 14B の性能を ELYZA-tasks-100 で評価しました。日本語圏のモデルも高い性能を発揮していますが、ここ1～2ヶ月は多言語対応した海外製オープンアクセスモデルの躍進が目立ちます。国内・海外モデル含めて、オープンアクセスモデルのさらなる性能向上に期待したいです。

## 参考リンク

* 評価用 Colab ノートブック
    * [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/17Ku-WCmMIrylY4OpdIj8zk1xu8q9yUhi) microsoft/Phi-3-small-128k-instruct
    * [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Vf7zWNmPAphdu-esAMHBI0VwOCr770fc) microsoft/Phi-3-medium-128k-instruct
    * [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1l9PzqKLDs-n-M1-1PtSD9uI_LiNQK2xM) Fugaku-LLM/Fugaku-LLM-13B-instruct
    * [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/19cVWD6gRuB5jrHqeojpDJov8kkg1BNOV) KarakuriAI/Karakuri-LM-8x7B-instruct

## Appendix: Ollama で推論すると性能が落ちる？問題

本編で紹介した Phi-3 medium (14B) モデルについて、X の [schroneko](https://x.com/schroneko) さんから「**Ollama で Phi-3 medium を実行しているが性能があまり高くない**」という報告がありました。

https://x.com/schroneko/status/1793836201058935108

**[Ollama](https://ollama.com/)** は PC などのローカル環境上で動作する LLM サーバです。バックエンドでは [llama.cpp](https://github.com/ggerganov/llama.cpp) を使用していますが、モデルのダウンロードやプロンプトの設定などを隠蔽しており、さまざまなモデルを簡単に pull して試せるようになっています。

一方、筆者環境で HuggingFace 上の公式モデルを `transformers` ライブラリで実行したところ、同様の問題はみられず、本編でご紹介したような高品質な回答が得られました。

その後 [Lucas](https://x.com/LucasChatGPT) さんから「Ollama 内部の処理が原因で、モデルの性能が下がっている可能性がある」という Ollama 公式ツイートを紹介していただきました。

https://x.com/MatthewBerman/status/1793386069389623323

一方 llama.cpp 側でも「Phi-3 medium の性能が下がる」という報告が上がっており、上流パッケージ (llama.cpp) と Ollama のどちらが原因なのかは特定できていないようです。現在、Ollama と llama.cpp の両方のレポジトリで Issue が立てられていますので、同様の問題に遭遇した方は参考にしてみてください。

* Ollama の issue: https://github.com/ollama/ollama/issues/4687
* llama.cpp の issue: https://github.com/ggerganov/llama.cpp/issues/7520