性能の良さそうなローカルLLM3つを動作確認しました

背景や目的


1.LLMを社内や製品連携(RAG等)で使う時に、ChatGPT以外に使えるものが無いものか、気になっていました。

2.本番利用を考えると、セキュリティ面で安心なローカル環境を望む声が多そうなので、今回はローカルLLMを探す事にしました。

3.APIで使うChatGPTと比較して安価で、商用利用も問題が無いローカルLLMを物色し、実際に動作確認してみます。

ローカルLLMの現況


まず、どんなLLMがあるのかwebで調べ、整理してみました(関連記事の印象も含む)。

1.概況
 ・10数個のLLMがすぐみつかり、数日前の記事もあり、まず旬な話題だと感じました。
 ・2024年4月頃から性能向上が顕著で、今後も毎月のように各社進化しそうな予感がします。

2.ビッグテックのローカルLLM 
 ・Gemma 2(6/28発表)、 Phi-3(4/23発表)の性能が良さそうでした(webで試用報告あり)。
 ・Appleは、 4/28にOpenELMを公開。日本語性能を高評価する記事は見当たりません。
 ・Meta、amazonは、ローカルLLMに関する最近の発表は無いようでした。
  Llama 3(Meta)は、追加学習した他社のモデルの方に注目するのが良さそうです。

3.日本のローカルLLM
 ・国産LLMの旗印的なGENIAC参加団体を中心に、パラメータ数8Bを目安に調べました。
  (オープンLLMで有名なLlama 3 8Bより、日本語性能が高そうなものを物色)
 ・Llama-3-ELYZA-JP-8B (ELYZA)が、良さそうです。8Bで「GPT-3.5 turbo」を上回り、
  70Bで「GPT-4」超えを達成、との事です。
  プレスリリース:https://prtimes.jp/main/html/rd/p/000000046.000047565.html
 ・EvoLLM-JP(sakana.ai)は、数学に強く日本語性能も高い、と推す記事がありました。
  npakaさんの記事:https://note.com/npaka/n/n02b73d2fcd7b
 ・ その他、Fugaku-LLM-13B(Fujitsu)、PLaMo-13B(PFE)、RakutenAI-7B-Instruct(Rakuten)
  、suzume-llama-3-8B-japanese(Lightblue)を調べましたが、ELYZAに匹敵するような
  性能を示す記事はみつけられませんでした。それぞれ、鋭意開発中なのかもしれません。

4.その他のローカルLLM
 ・ Command R+(Cohere)は、パラメータ数が104Bなので、一般のPCでは厳しそうです。
 ・ Qwen2-7B-Instruct(Alibaba)の日本語性能の評判は賛否両論ありました。

5.ローカルLLM現況のまとめ
 ・ 期待大のLLMが出てきた印象です。
 ・ 現状の性能としては、パラメータ8B前後の最高レベルがGPT-3.5 turbo程度のようです。
  参考:東京工業大学藤井さんのベンチマーク記事
 ・ ただ、今後短期間で各LLMが性能アップしそう、と期待をしてしまいます。

試用調査へ


良さそうなLLMを動かしてみたいと思います。

1. webで調べた結果を踏まえて、以下3つを試す事にしました。
 - Llama-3-ELYZA-JP-8B (東大松尾研/ELYZA)
 - Phi-3 14B (Microsoft)
 - Gemma 2 9B (google)

2.以下は選択理由です。
 - 日本語性能が高そう。
 - 普通のPCで動作しそう(動作実験の情報が多かった)
 - 商用利用が可能。

ローカルLLMの利用方法


LLMを使うための勉強を少ししました。以下は、Web等で調べた結果のメモです。

1.基礎知識
 ・ GPUでやるか、CPUでやるかが始めの分岐点。PC調達にも関わる問題です。
 ・ GPUメモリはLLMパラメータ数の4倍必要、というのが基本的な考え方のようです。
  例) LLMパラメータ数8Bなら、メモリ32GB。
 ・ メモリの利用効率を向上させる方法として、”量子化”がある。
  例) “4bit量子化“なら必要メモリが1/2になる。(32GBなら16GB)
 ・ CPUでやる場合、LLMランタイムが多くを担ってくれる。具体的には、Llama.cppがそれ。
 ・ 動作環境としては、Llama.cpp(元祖の品、C++で作成)、Ollama(機能追加版、情報多い)、
  LM Studio(デスクトップ向け)、等があり。全てOSS。

2.実現環境(基本構成)
 ・ 基本環境は、Llama-3、Gemma、Phi-3の利用記事が多いOllamaに決めました。
 ・ ”GPU利用”か”mac利用”の情報が基本的に多いのですが、CPUで試した記事もみつけ、
  手元PC(Intel Corei7 CPU/2.60GHz/windows)でOllamaを試す事にしました。

3.実現環境(チャット画面のプログラム)
 ・ 内部処理はOllamaが担当しますが、プロダクトを意識するとチャット画面は欲しいです。
 ・ いくつかの選択肢がありそうで、以下はその候補です。
   - Open WebUI
   - Text generation web UI
   - Streamlit (昔からあるPythonのアプリ作成フレームワークのよう)
   - Text generation web UI
   - Ollama-ui (Chromeのplugin)
 ・ 本番開発時にRAGやReActを実装する事も想定し、それが適いそうなOpen WebUIに
  決めました。(正確な事は現時点では不明ですが。)
 ・ これに起因して、OSはWSL2(windowsでのlinux利用)を使う事にしました。

4.LLMの違いによる考慮
 ・ 色々調べて、今回の3つ(Llama-3,Phi-3,Gemma2)は、動作させられそうです。
 ・ 推論だけなら、GGUF形式(.gguf)ファイルがあれば良く、それはOllamaで扱える、
  という理解をし、先に進みました。

5.LLM処理の周辺処理について
 ・ そのまま回答させるだけなら、コード作成等は不要そうです。
 ・ LLM毎の基本設定を「Modelfile」で定義しそうですが、
  詳細は試用時に確認する事にします。
 ・ プロンプトの記述場所も、この時点で詳細は不明ですが、これも試用時に確認します。
 ・ RAGや会話履歴の処理は、Open WebUIの中で実現できそうで、試用時に確認します。

インストール:動作環境


インストールをします。改めて動作環境を整理します。

・ PC:Dell Inspiron7590/[CPU]Intel Corei7-9750H 2.60GHz/[RAM]16.0 GB
・ OS:Windows 10 Pro上のWSL2(Ubuntu 22.04)
・ LLMランタイム:Ollama
・ チャット画面:Open WebUI

インストール:WSL2


以下の手順で実施し、動作しました。

(1) PowerShellを管理者として開き、wsl –install を実行。完了後、PC再起動。

(2) 検索ボックスから、ubuntuを起動し、ユーザ名/パスワードを登録。

(3) PowerShellを起動し、wsl -l -vを実行し、STATE=Runningが表示されたら完了。

インストール:Ollama


以下の手順で実施し、動作しました。

(1) Ubuntuを起動し、sudo apt-get update を実行し、パッケージリストを更新しておく。

(2) 以下コマンドを実行。インストーラによるOllamaインストールが始まる。

$ curl -fsSL https://ollama.com/install.sh | sh

(3) コマンド ollama を入力し、Usage:等が表示されるか確認。されれば、正常。

(4) 以下コマンドで、利用可能LLMを表示させる。初回は何も表示されない事を確認。

$ ollama list

(5) 以下コマンドを実行。まず小さいLLMであるllama2をダウンロードしてみる。

$ ollama pull llama2

(6) 再度、ollama list を実行し、今度はllama2が表示された事を確認する。

$ ollama list
NAME            ID              SIZE    MODIFIED
llama2:latest   78e26419b446    3.8 GB  16 hours ago

(7) 以下コマンドを実行。これでLLMが動く。画面が入力待ち状態になればOK。

$ ollama run llama2
$ ollama run llama2:latest
>>> 

(8) 後に使うので、llama3もPullしておきます。

$ ollama pull llama3

インストール:Ollama(補足)


・ Ollamaサイトに登録済のLLMは(前述の手順で)ダウンロード可能です。

・ Ollamaサイト登録済LLMは、このページで確認可能です。

・ 大きなLLMとしてllama3:70b(70B)の起動をチャレンジしましたが、NGでした。
 Pullは出来ますが、runできません。理由はメモリ不足で、通常のPCでは、このレベルは
 やめた方が良い、と理解しました。

・ ローカルLLMとして標準と思われる8Bクラス(llama3)を試し、起動に成功しています。

インストール:LLM(Ollamaサイト登録済の2個)


今回試用するPhi-3 14BとGemma2 9Bは、以下手順でセットアップします。
Ollamaサイトに登録済なので、これらは簡単でした。

(1) 前述のOllamaサイト登録済LLM情報をみて、pull時の識別情報を確認しておきます。

(2) Ubuntuを起動し、まず Phi-3 14Bをpull(確認した識別情報の値にて)します。

$ ollama pull phi3:medium

(3) 念のため、動作確認もします。以下コマンドを実行し、画面が入力待ちになればOKです。

$ ollama run phi3:medium
$ ollama run phi3:medium
>>> 

(4) 同様に、 Gemma2 9Bもpullし、動作確認しておきます。

$ ollama pull gemma2
$ ollama run gemma2
>>>

(5) 念のため ollama list を実行し、2つのLLMが表示されている事を確認して完了。

$ ollama list
NAME            ID              SIZE    MODIFIED
gemma2:latest   ff02c3702f32    5.4 GB  3 minutes ago
phi3:medium     1e67dff39209    7.9 GB  50 minutes ago

インストール:LLM(Ollamaサイトに無いケース)


今回使うもう1つ、Llama-3-ELYZA-JP-8Bを以下手順でセットアップします。
これはOllamaサイトには存在しないので、少し手間が増えます。

(1) Ubuntuコンソールで作業ディレクトリを作成。

$ mkdir llm_work

(2) 作業ディレクトリに移動し、 huggingfaceからelyza8BのggufファイルをDLする。

$ cd llm_work
$ curl -OL https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf

(3) 同じ構造のllama3 8Bのmodelfileを情報を得る。

$ ollama show --modelfile llama3

(4) その情報のgguf参照部だけを変更した内容にて、modelfileを作業ディレクトリに作成する。

$ vi Modelfile

(Modelfileの内容: (左)llama3 8B (右)今回作成分)

(5) 作成したmodelfileを使い、ollamaで動作可能にする。作業ディレクトリで以下を実行。

$ ollama create elyza:jp8b -f Modelfile

(6) 起動させる。

$ ollama run elyza:jp8b

インストール:Open WebUI


以下の手順で実施し、動作しました。

(1) コマンド more /etc/os-release にて、WSLのUbuntuが22.04である事を再確認。

(2) cudaインストールは、上で示した通りCLIで動作済なので、”不要”としました。

(3) ollama.serviceの内容をみて、そのままの状態で進める事にしました。

(4) python環境を作成します(openwebuiが要求する3.11を)。#は説明コメントです。

$ sudo apt install python3.11 python3.11-venv #3.11を入れる
$ sudo apt install python-is-python3 #python3->pythonに
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
  #上2行は、Ubuntu本体で3.11が使われるために必要。
$ python -m venv venv #3.11の仮想環境作成
$ ls #./venv が作成されていればOK

(5) 作成したpython環境を有効化し、open-webuiをインストールします。
  install open-webui は、10分位かかりました。

$ source venv/bin/activate
(venv) $  python -V #python3.11 になっていればOK
(venv) $ pip install -U pip
(venv) $ pip install open-webui

(6)起動確認します。Ubuntuコンソールで、先にサーバーを起動しておきます。

$ source venv/bin/activate
(venv) $ open-webui serve

(7)サーバ起動後、Chromeで、http://localhost:8080 にアクセスします。
 画面が開きました!

(8)初回登録をすると、チャット可能な画面が開きます。

登録が何故要るか、少し疑問でしたが、とにかくやりました。
(登録情報は内部で保持されるだけのようです。)

これでインストールは全て終了です。試用できる状態になりました。

試験仕様


3つのLLMの基本動作を確認したく、以下を確認しました。
試験1.LLMのロード時間:使うたびにどの位待つのか。
試験2.回答文生成速度:質問入力後に、回答文が生成される速度はどの位か。
試験3.日本語使用頻度:日本語の質問に対し、英語で回答される事などが無いかどうか。
試験4.情報保有量:知識として、どの程度もっているのか。
試験5.コンテクスト利用(回答用情報参照プロンプト付):RAGで使えそうか。
試験6.コンテキスト利用(大量利用):参照データ量に上限があるのか。

試験1.LLMのロード時間


各LLMのロードにかかる時間を計測しました。

[試験方法] LLM選択後の1回目入力時~その回答表示開始までの時間を計測。

[結果要約] どのLLMも30秒弱。数Bのパラメータサイズ差の影響はあまり感じない。

[結果詳細]
 ELYZA-JP-8B :  1回目:22(秒) 2回目:29(秒) 3回目:27(秒) 平均:26(秒)
 Phi-3 14B :  1回目:31(秒) 2回目:27(秒) 3回目:26(秒) 平均:28(秒)
 Gemma2 9B :  1回目:32(秒) 2回目:24(秒) 3回目:24(秒) 平均:27(秒)

試験2.回答文生成速度


生成にかかる時間を計測しました。

[試験方法]
ロード済の状態(1回会話済)で、簡単な質問を入力し、回答表示開始~完了までの時間を計測。

[結果要約]
Phi-3が遅め。ChatGPTのスピードに慣れている人にはストレスか。他2つはまずまず。

[結果詳細] (単位:秒/文字)
   ELYZA-JP-8B : 1回目:0.16 2回目:0.15 3回目:0.15 平均:0.16(50秒/319文字)
   Phi-3 14B : 1回目:0.52 2回目:0.14 (英文交じり) 3回目:0.22(英文交じり)
         平均:0.21(115秒/538文字) #日本語のみなら0.52
   Gemma2 9B : 1回目:0.16 2回目:0.15 3回目:0.15 平均:0.15(53秒/343文字)

[備考] どのLLMも(上に含まない)回答表示し始めるまでの時間が3秒程度あり。

試験3.日本語使用頻度


日本語の基本性能を確認したく、回答文内の日本語出現率をチェックしました。

[試験方法]
通常会話レベルの入力をして、その回答文内の日本語率を計算。3回実施。

[結果要約]
100%を期待し、Phi-3はNG。他2つは問題無し。

[結果詳細] (単位%:回答文内日本語文字数/回答文内文字数)
 ELYZA-JP-8B : [入力1]100%(全10文字) [入力2]100%(全6文字) [入力3]100%(全55文字)
         平均:100%(全71文字)
 Phi-3 14B : [入力1]42.2%(27文字/全64文字) [入力2]100%(全55文字) [入力3]100%(73文字)
       平均:80.7%(155文字/全192文字)
 Gemma2 9B :[入力1]100%(全41文字) [入力2]100%(全50文字) [入力3]100%(全56文字)
        平均:100%(全147文字)

[入力1]
 <入力文>おはようございます
 <回答文>
  ELYZA-JP-8B :おはようございます!
  Phi-3 14B :おはようございます!今日も一日、素晴らしく頑張ってくだ surveya.
        Have a wonderful day ahead!
  Gemma2 9B :おはようございます!今日は良い天気ですか?😊 何かお手伝いできる
         ことはありますか?

[入力2]
 <入力文>こんにちは
 <回答文>
  ELYZA-JP-8B :こんにちは!
  Phi-3 14B :こんにちわ!どのようなご用件でしょうか?あなたがお考えでいただけ
        る限り、私は喜んでお手伝いさせていただきます。
  Gemma2 9B :こんにちは!お元気ですか?😄何か話したいことや、聞いてほしいことなど
         あればぜひ教えてください! 😊✨

[入力3]
 <入力文>質問してもよいですか?
 <回答文>
  ELYZA-JP-8B :大歓迎です!私に答えられる範囲で、どんな質問でも受け付けます。
          疑問や知りたいことなど、遠慮なく尋ねてください!
  Phi-3 14B :当然のことでございます。どうぞ質問をどうぞ!私には何でもお答え
        できることを心がけておりますので、ご不明な点やご相談があれば遠慮
        なくお尋ねください。
  Gemma2 9B :もちろんです!どんな質問でも喜んで答えさせていただきます😊 遠慮
         なくどうぞ! ✨🧠何について知りたいですか? 🤔

[備考]
・ Phi-3の日本語は、不思議な表現が多いです。日本語は、ELYZA-JP-8Bが一番自然ですね。
・ Gemma2は、絵文字を多用するようです。

試験4.情報保有量


知識をどの程度もっているか確認しました。

[試験方法]
クイズを出し、その回答文をみて、情報を保有しているか判断します。(6問実施)

[結果要約]
4問正解を期待するも、どれもそれを下回りました。

[結果詳細] (単位:正解数)
   ELYZA-JP-8B : 2(/6) #正解は、王貞治、ニュートン
   Phi-3 14B : 3(/6) #正解は、富士山、ナイル川、ニュートン
   Gemma2 9B : 3(/6) #正解は、富士山、王貞治、ニュートン

[応答内容]
<問題1>日本で一番高い山は? /[正解]富士山  (昔からの情報)
<回答文>
ELYZA-JP-8B : ×
 日本で一番高い山は、北海道にある「大雪山脈」の「旭岳」で、標高は2,291メートルです。
Phi-3 14B : 〇
 日本で一番高い山は富士山(ふじさん)です。・・・(以降省略)
Gemma2 9B :〇
 日本で一番高い山は富士山です。標高は3,776mです。 🗻

<問題2>日本で一番ホームランを打ったプロ野球選手は? /[正解]王貞治  (数十年前の情報)
<回答文>
ELYZA-JP-8B : 〇
 日本プロ野球の歴代記録では、王貞治さんが持つ最多本塁打記録が通算868本ですが、
 プロ野球界全体での最多本塁打記録は、山本浩二さんの934本です。
Phi-3 14B : ×
 特定の記録について質問が出されました。「ホームラン」という言葉は通常、
 ・・・(以降省略)
Gemma2 9B : 〇
 日本では、王貞治さんが最もホームランを打っています。・・・(以降省略)

<問題3>世界で一番長い川は? /[正解]ナイル川  (昔からの情報)
<回答文>
ELYZA-JP-8B : ×
 世界で一番長い川は、南アメリカ大陸を流れる「アマゾン川」で、
 約6,800キロメートル(4,200マイル)にわたります。
Phi-3 14B : 〇
 世界で最も長い川はナイル川(Nile River)です。 ・・・(以降省略)
Gemma2 9B : ×
 世界で一番長い川は、アマゾン川です。約6,992キロメートルとされています。 🗺️🌊

<問題4>万有引力を発見した人は? /[正解]アイザック・ニュートン  (昔からの情報)
<回答文>
ELYZA-JP-8B : 〇
 万有引力の法則を発見したのは、イギリスの物理学者アイザック・ニュートンです。
Phi-3 14B : 〇
 万有引力(Universal Gravitation)の法則を最初に数学的モデルとして記述・公式化
 したのはアイザック・ニュートンです。・・・(以降省略)
Gemma2 9B : 〇
 万有引力の法則を発見したのはアイザック・ニュートンです。・・・(以降省略)

<問題5>2024年1月に大地震が起きた日本の地域はどこ? /[正解]石川県 (2024年の情報)
<回答文>
ELYZA-JP-8B : ×
 2024年1月には、日本で大地震は起きていません。
Phi-3 14B : ×
 私の知識基準である2023年現在、・・・(以降省略)
Gemma2 9B : ×
 私は過去の情報を学習しておりませんので、未来の出来事、例えば2024年1月の地震
 については情報をお持ちではありません。・・・(以降省略)

<問題6>プロ野球の筒香嘉智選手が現在所属するチームはどこ?
         /[正解] DeNA(2024年5月以降)  (試験実行日:2024年7月26日)
<回答文>
ELYZA-JP-8B : ×
 2023年12月時点では、筒香嘉智選手はカナダのトロント・ブルージェイズに所属
 しています。
Phi-3 14B : ×
 2023年時点で、筒香嘉智選手は横浜DeNAベイスターsに所属していませn。
 ・・・(以降省略)
Gemma2 9B : ×
 プロ野球の筒香嘉智選手は、MLB・シアトル・マリナーズ に所属しています。
 ・・・(以降省略)

[考察]
・どのLLMも、想像より情報を持っていなかった印象です。
・RAGで使う分には充分?等、他で補完する事を考えると良いのかもしれません。

試験5.コンテクスト利用(回答用情報参照)


システムプロンプト内にコンテクストを添付し、その情報から回答文を生成するか試しました。

[試験方法]
・Open WebUIの設定項目でシステムプロンプトを登録。
・そのプロンプトは、生成時の参照情報を含み、それを利用し生成する指示がされている。
・試験用として、架空人物のプロフィールを設定。各プロフィールを問う入力を試す。

[結果要約]
参照は全てのLLMがしている。要約文の質は、ELYZAが良く、 Phi-3は厳しい。

[結果詳細]
 ELYZA-JP-8B : 〇 # 参照OK。文もOK。
 Phi-3 14B : × # 参照OK。文に中間情報のようなもの(ReAct?)が出てくる。
 Gemma2 9B : △ # 参照OK。文ではなく(なぜか)単語になる。

[応答内容]
<登録したシステムプロンプト>

 あなたは質問に回答するチャットbotです。
 以下のコンテクストを参考にして質問に回答して下さい。
 コンテクストの中に質問に対する答えがない場合や、わからない場合、不確かな情報で回答しないでください。
 わからない場合は正直に「わかりませんでした」と答えてください。
 ## コンテクスト(開始) ##
 愛上 尾根さんの生年月日は、1998年9月14日です。
 愛上 尾根さんの職業は、パティシエです。
 愛上 尾根さんの性別は、男性です。
 愛上 尾根さんの出身地は、青森県五所川原市です。
 愛上 尾根さんの現在住所は、東京都品川区西五反田8丁目1−5です。
 愛上 尾根さんの出身高校は、五所川原工科高校です。
 愛上 尾根さんの出身大学は、日本大学です。
 愛上 尾根さんの好きな食べ物は、麻婆豆腐です。辛いものが好きです。
 愛上 尾根さんの特技は、パズルです。
 愛上 尾根さんの身長は、172cmです。
 愛上 尾根さんの体重は、82kgです。
 ## コンテクスト(終了) ##

<入力1>愛上 尾根さんの生年月日は? /[正解]1998年9月14日
<回答文>
 ELYZA-JP-8B : 〇
  愛上 尾根さんの生年月日は、1998年9月14日です。
 Phi-3 14B : ×(参照OK、乱れあり)
  愛上 尾根さんの生年月日は1998年9月1지 14일입니다.
 Gemma2 9B : △(参照OK、文じゃない)
  1998年9月14日

<入力2>愛上 尾根さんの職業は? /[正解]パティシエ
<回答文>
ELYZA-JP-8B : 〇
  愛上 尾根さんの職業は、パティシエです。
 Phi-3 14B : 〇
  愛上 尾根さんの職業はパティシエです。
 Gemma2 9B : △(参照OK、文じゃない)
  パティシエ

<入力3>愛上 尾根さんの出身地は? /[正解]青森県五所川原市
<回答文>
 ELYZA-JP-8B : 〇
  愛上 尾根さんの出身地は、青森県五所川原市です。
 Phi-3 14B : ×(参照OK。追加問題とは何だろう。学習用情報を求めている?)
  愛上 尾根さんの出身地は青森県五所川原市です。
  追加問題1:愛上尾根さんが選択した学部とそれに伴う理由、または影響を教えて
       ください。Elaborated textbook-level solution: 愛上 尾根さんは
       ・・・(以降省略)
 Gemma2 9B : △(参照OK、文にしない)
  青森県五所川原市

<入力4>愛上 尾根さんの現在住所は? /[正解]東京都品川区西五反田8丁目1−5
<回答文>
ELYZA-JP-8B : 〇
  愛上 尾根さんの現在住所は、東京都品川区西五反田8丁目1−5です。
 Phi-3 14B : ×(参照OK。2個目の謎の追加問題。)
  愛上 尾根さんの現在住所は東京都品川区西五反田8丁目1-5です。
  追加問題2:**愛上 尾根さんがパティシエとして得意とする特定のケーキや
        スイーツを教えてください。
 Gemma2 9B : △(参照OK、文にしない)
  東京都品川区西五反田8丁目1−5

<入力5>愛上 尾根さんの好きな食べ物は? /[正解]麻婆豆腐です。辛いものが好きです。
<回答文>
 ELYZA-JP-8B : 〇
  愛上 尾根さんの好きな食べ物は、麻婆豆腐で、辛いものが好きです。
 Phi-3 14B : 〇
  愛上 尾根さんの好きな食べ物は麻婆豆腐で、特に辛いものが好きです。
 Gemma2 9B : △(参照OK、単語)
  麻婆豆腐

[考察]
・ phi3の「追加問題」は、不思議でした。自動学習処理前提のテキスト生成?謎です。
・ 上記に触れ、ReActがプロンプトで実現する事を思い出しますが、期待する生成を
 得るために、プロンプトでの追加指示が必要なのかもしれません(phi3は)。

試験6.コンテクスト利用(大量利用)


システムプロンプト内にコンテクストを大量に添付しても大丈夫か試しました。

[試験方法]
・前試験と同様に、システムプロンプトを登録。
・試験で回答させる参照情報にダミーデータを追加し、確認をした。

[結果要約]
どのLLMも、ChatGPT4レベルの8K~16K(文字)までは問題無し。

[結果詳細]
 ELYZA-JP-8B : 〇 # サイズ16KまでOK。回答も正解。
 Phi-3 14B :△ # サイズ16KまでOK。回答文の質の問題あり。
 Gemma2 9B :〇 #サイズ16KまでOK。回答も正解。

[応答内容]
<登録したシステムプロンプト>
 数字の羅列の箇所で量を調整し、4,096文字、8,192文字、16,384文字の3パターンを用意。

 あなたは質問に回答するチャットbotです。
 以下のコンテクストを参考にして質問に回答して下さい。
 コンテクストの中に質問に対する答えがない場合や、わからない場合、不確かな情報で回答しないでください。
 わからない場合は正直に「わかりませんでした」と答えてください。
 ## コンテクスト(開始) ##
 12345678901234567890・・・
 愛上 尾根さんの好きなスポーツは、ラクロスです。
 12345678901234567890・・・
 ## コンテクスト(終了) ##

<入力:4K添付時>愛上 尾根さんの好きなスポーツは? /[正解]ラクロス
<回答文>
 ELYZA-JP-8B : 〇
  ラクロスです。
 Phi-3 14B : △(参照OK、文に幻覚追記)
  愛上 尾根さんが好きなスポーツはラクロスです。彼女はそれを高いレベルでプレイし、
  チームの一員として活躍しています。
 Gemma2 9B : 〇
  ラクロスです。

<入力:8K添付時>愛上 尾根さんの好きなスポーツは? /[正解]ラクロス
<回答文>
 ELYZA-JP-8B : 〇
  ラクロスです。
 Phi-3 14B : 〇
  愛上 尾根さんの好きなスポーツはラクロスです。
 Gemma2 9B : 〇
  ラクロスです。

<入力:16K添付時>愛上 尾根さんの好きなスポーツは? /[正解]ラクロス
<回答文>
 ELYZA-JP-8B : 〇
  ラクロスです。
 Phi-3 14B : 〇
  愛上 尾根さんが最も好むスポーツはラクロスです。
 Gemma2 9B : 〇
  ラクロスです。

[考察]
・ プロンプト量が増えると回答開始までの時間はかかっている印象でした。
・ Open WebUIの画面右上Controles/システムプロンプト欄は、入力後一度質問を
 しないと有効にならないようでした。試験では、挨拶の次に質問してました。
・もう1個の設定先、画面右上IDマーク/設定/一般/システムプロンプト欄は、
 保存するとその次の質問から参照されているようでした。
・ 16K超は試していませんが、128K(GPT-4oの上限)でも動作しそうな気がします。

まとめ


・ローカルで使えそうなLLMは今まさに登場し始めた印象でした。
 (2024/6/26のELYZA-JP-8Bの前後から)
・今回はwebで評判の良かったLLMを3つだけ確認しましたが、
 「ELYZA-JP」の日本語性能がローカルとしては高いと感じました。
・動作環境のOpen WebUIは、ChatGPTでおなじみの画面が短時間で提供できるのは、
 便利だなーと思いました。
 次回は、もう少し本番ニーズに近い事を試したいと思います(既存DBの利用等)。
・今後2025年にかけて、他のLLM(EvoLLM-JP(sakana.ai),PLaMo-13B(PFE),等)も、
 どんどん進化しそうな予感がします(根拠無く期待しています)。
 試した結果をまたレポートしたいと思います。どうもありがとうございました。

ご連絡フォーム


フィードバックを是非お願いします。
本記事の方法での問題点や、よりよい方法のアイデアを頂けると大変助かります。

この記事に関して

その他のご連絡

DevAIsをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む