GPT4allをノートパソコンで使ってみた

# はじめに

GPT4Allがリリースされたというニュースを読んだので試してみました。一般的なスペックのPCで実行できるということなので、手持ちのM1 MacBookでちょっと試してみました。

# 前提条件

使用したデバイスは以下の通りです。
- Apple MacBook Pro 13-inch, M1, 2020, 16GB Memory, macOS Ventura 13.2.1

# 環境の準備

手順は[こちら](https://github.com/nomic-ai/gpt4all)にある通りなのですが、以下の通りサクッとセットアップは完了します。
`Try it yourself`セクションに手順が記載されています。簡単に訳すと、1. `gpt4all-lora-quantized.bin`をダウンロード(リンクはgithubを参照下さい、ファイルサイズが3.9GBと大きいです)、2. 上記をcloneします `git clone https://github.com/nomic-ai/gpt4all.git`、3. chatというディレクトリ配下にダウンロードした`gpt4all-lora-quantized.bin`を移動します。4. それぞれの環境に合わせて実行して下さい。

```sh
chat % ls -lh
total 8261096
-rwxr-xr-x  1 vfuji  staff   401K  4  3 19:47 gpt4all-lora-quantized-OSX-intel
-rwxr-xr-x  1 vfuji  staff   335K  4  3 19:47 gpt4all-lora-quantized-OSX-m1
-rwxr-xr-x  1 vfuji  staff   401K  4  3 19:47 gpt4all-lora-quantized-linux-x86
-rw-r--r--  1 vfuji  staff   182K  4  3 19:47 gpt4all-lora-quantized-win64.exe
-rw-r--r--@ 1 vfuji  staff   3.9G  4  3 18:59 gpt4all-lora-quantized.bin
```


# 起動方法と質問の例

## 起動方法

私のM1 Macbookでは、`./gpt4all-lora-quantized-OSX-m1`で起動し、`Ctrl+C`で終了します。

## 起動と簡単な質問

ひとまず起動してみました。起動も動作も十分高速だな、という感じです。
![mov001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/7b89fd2b-c0ea-cd99-a76d-cafa2376fba2.gif)

# 試してみた質問

## こんにちは / あなたの名前を教えてください

日本語だと対応できるのか、試してみました。控えめに言っても、日本語の会話は成立していないかと思います。
![qa002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/f0a5ce12-ed82-c127-4c43-d9e2380d7e49.png)

## what is mqtt? / what is kafka?

日本語が辿々しいので簡単な英語で質問してみます。MQTTって何、Kafkaって何、を英語で聞いてみました。
![qa003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/c82ee84d-8acb-a662-99a8-4452a893018c.png)

せっかくなので、日本語でも聞いてみます。日本語で返してくれたり、英語で返してくれたりします。簡単な質問は日本語でも理解しているようです。
![qa004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/ea1d8a32-89ff-6228-b686-86f454cc08d1.png)

## tell me top three mobile phone vendor in Japan / tell me top three mobile phone vendor in global

英語で上位3つのモバイル端末のベンダーを日本とグローバルで質問してみました。日本ではApple iPhoneがシェアトップを継続しているのかな、と理解しており、回答がちょっと違うようです。グローバル市場での情報については、top threeと質問したのですが、Huawei、Samsung、Xiaomi、Appleと4つ答えてくれました。順位もないので、これがどういう意味なのか、判断がつきかねます。
![qa005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/c3ebed82-0931-83f2-3807-5b423ff31df3.png)

## tell me web browser share in Japan

いつ頃までの情報を学習しているのか確認したく、英語でwebブラウザのシェアを質問してみました。2019年4月のStatCounterの情報と回答してくれました。
![qa006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/ceecf2f6-f4ad-ce58-3ca4-1cf165eab9ea.png)

正しい情報なのか、StatCounterで確認すると、日本の数字と言っていますが、ちょっと違っています。
![statcounter_2019Apr_all_Japan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/dad5f84f-2a17-7093-41b5-f1b2b79ff8a8.png)

グローバルの情報なのかな、と確認してみたのですが、こちらも違うようです。
![statcounter_2019Apr_WW.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/5afe3bb3-3551-dd7d-a4e8-b66ee707091b.png)

日本のDesktopの数字を確認するとChromeの値は近いのですが、Firefoxの数字が全く違います。ただ、StatCounterを確認すれば詳しく確認できる、ということはわかったので、調べ方を知る、という意味では、良いのかもしれません。
![statcounter_2019Apr_desktop_Japan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/6590a80a-5fed-d9e8-94fb-53af870a03fa.png)

## 正規表現とはなんですか？ / 正規表現のサンプルをpythonで教えて

日本語で質問すると、英語で返すケースもあります。日本語の意図は理解してくれているようなので、もう少し改善すると、色々使い勝手がよくなりそうな気がします。
![qa007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/8c99f173-c9bf-a9a0-9792-06150c1414b2.png)

## dockerについて、いくつか質問

dockerについて、いくつか質問してみました。いくつかの質問は回答してくれませんでした。また、Ubuntuのバージョンが古めな結果なことを考えると、学習データが古い、ということがありそうです。
![qa008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/da46d339-3ffe-31a2-c083-14392bfc95dd.png)

## tell me result of recent formula one grand prix.

最近のF1の結果を聞いてみました。直近の結果は、アブダビGPであり、ルイス・ハミルトンが優勝と回答してくれました。2023年4月2日にオーストラリアGPがありましたし、2020年から2022年の3年間のアブダビGPの結果は、いずれもマックス・フェルスタッペンが優勝しています。このことからも学習データが2019年で止まっているようだ、ということがわかりました。
![qa009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/48558b38-1f1d-7595-5b9b-093aba33ee60.png)


# 動作時の負荷

回答中は、CPU負荷が50%を超える程度まで上がりました。通常使っているアプリケーションは落とさず、TerminalでGPT4Allを起動して試した結果となります。
![cpu_usage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/4a6ad9ad-0b77-1880-f411-eb27baf41d10.png)


# 感想

今回のGPT4Allの動作結果とこちらの記事の結果を比較してみるとだいぶ違う精度のように感じます。

https://qiita.com/ysv/items/2b72d5c7d6ab7a1473c6

GPT4Allでも日本語入力は解釈できているようですが、英語で返ってくるケースが多くあります。また日本語入力に対して、日本語で返ってくる場合、解釈できない回答である場合があります。また、マーケットシェアなどを確認した限り、学習データとして2019年ごろまでのデータしか取り込めていないように思えます。
[こちらの英文記事](https://www.enterpriseappstoday.com/stats/chatgpt-4-statistics.html)の#13によると、ChatGPT-3で1750億のパラメータと570GBのデータを学習しており、ChatGPT-4は、GPT-3から大幅増加ではないだろうと記載があります。学習データの量と質に差異が出ているのかもしれませんが、大規模なシステムを使わずにこのような結果が出せること自体は素晴らしいと思います。学習データの改善がポイントなんだろうと思いますが、現時点では、ユーザーベースの多いChatGPTの方が強みがある、ということかもしれません。
あと、同じ回答を延々と続ける場合や突然落ちることも何度かありました。これらも含めて、改善が続くと良いなと期待しています。