ローカルLLMのススメ～LM Studioを使おう～

去年春頃からChatGPTをきっかけにしてChat型AIがいろいろと流行してきました。
各社しのぎを削ってLLMの開発が進んでくることでより回答精度の高いモデルを使用したAIという方向では、OpenAIのGPT-4oやGoogle Gemini Pro 1.5、Anthropic Claude Opusなど様々なモデルが出てきていますが、最近ローカルLLMの方向でもちらほら動きがあるようでしたので実際にローカル環境で試してみました。

## 利用環境
自宅の環境はほとんどお金をかけていないため、マシン自体に大した性能はありません。つまり、この程度の環境ならだれでも用意しやすいだろうという想定で私の環境を紹介します。

CPU：AMD Ryzen 5 5600U
GPU：オンボードRadeon Graphics
メモリ：40.0 GB

もともと16GBで運用していましたが、メモリ不足でCPUファンの音がうるさくなったので32GBのメモリを買い足したところ、もともと搭載されていたメモリが8GB×2だったので40GBメモリという状態です。HDDも元々のNUCに搭載されていた500GBのものになりますので、少なくはないが多くもないという状態になります。

## ローカルLLMを試す
ローカルでLLMを試す方法はいくつかありますが、今回は簡単に環境構築ができるLM Studioというソフトを使用してローカルLLMを試してみました

https://lmstudio.ai/

## 設定
「Download LM Studio for Windows」からインストーラーをダウンロードしてインストールしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/5ef04859-21d2-5fa0-4cb7-ef2b3351779f.png)

## モデルのダウンロード
LM Studioを起動すると、下記のような画面が表示されますので、任意のモデルを選択して「Download」をクリックすればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/d85d48ef-5338-08db-82e8-0b9e03b24a69.png)

## 実際にチャットしてみる
それでは、実際に会話してローカルLLMの実力を試してみましょう！
過去に別のPCを使ってCPUモードで試したときは、入力後から回答まで5分程度待たされましたので、早く応答が返ってくるといいなと期待をしながら試してみました。

まず、①の会話ページを開きます。
次に、②でLLMモデルを選択します。
最後に下の枠に会話を入力して完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/663b601e-08e1-244d-2831-a98ec215c474.png)

今回使用するのは下記の４モデルです。

* Meta Llama 3 Instuct
* Phi 3 mini 4k instruct
* openhermes 2 5 mistral
* gemma it

また、質問は公平を期すために「日本の首都はどこですか？」としました。

それでは、レッチラゴー！

### Meta Llama 3 Instuctの場合

#### 動作時間
回答が開始されるまでの待ち時間は約15秒、回答が終わった時間は画面キャプチャの通り23秒でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/f22903f4-bda3-d744-93b2-c70042dde40f.png)


#### 回答内容
回答自体は間違っちゃいないのですが、日本語と英語と混じっていて、なんだかなぁ・・という印象でした。

> That's an easy one! 🇯🇵 The capital of Japan is Tokyo (東京)!

### Phi 3 mini 4k instructの場合

#### 動作時間
回答が開始されるまでの待ち時間は約3秒、回答が終わった時間は画面キャプチャの通り約38秒かかりました。文字の表示は遅いものの、マシンスペックから考えると最初の文字が表示されるまでの時間は割と早い印象です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/80d0d59f-758f-1537-1777-85c4f93ab7b4.png)


#### 回答内容
回答内容は悪くないのですが、「世界最大国之一の人口を持っています」はちょっと違いますね。スピードを考えるとローカルLLMの候補にはなりそうですが、用途は限られるかもしれません。

> 日本の首都は東京です。東京は日本の政治、経済、文化の中心地であり、世界最大国之一の人口を持っています。首都としても重要な位置を占めるため、多くの観光客やビジネスパーソンが日常的に東京で行きます。

### openhermes 2 5 mistralの場合

#### 動作時間
回答が開始されるまでの待ち時間は約15秒、回答が終わった時間は画面キャプチャの通り約42秒かかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/df21b907-6bcd-9407-f46e-f8bac1dddc70.png)

#### 回答内容
首都が首府になっているのはまぁいいとして、トウキョウ市ですか・・・。何かのロボットアニメでトウキョウ市って名前を聞いたことがあるようなないような。。

ちなみに[トウキョウ市について調べてみた](https://ja.wikipedia.org/wiki/%E6%9D%B1%E4%BA%AC%E5%B8%82)ところ、Wiki情報によると「1889年（明治22年）に東京府（現・東京都）東部の15区を区域として設立された」とあって、どうやら現在の東京23区相当が旧東京市だったそうです。

余談な話は横において、回答内容としてはイマイチと評価せざるを得ませんね。

> 日本の首府はトウキョウ市です。Tokyo is the capital city of Japan. It is located on the island of Honshu, which is the main island in Japan and where its largest metropolitan area is situated. Tokyo has a rich history dating back hundreds of years and is known for its cultural and economic significance within Japan and globally.


### gemma itの場合
#### 動作時間
回答が開始されるまでの待ち時間は約2秒、回答が終わった時間は画面キャプチャの通り約10秒かかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620986/b4ce1662-a45a-065f-2fbf-8bc7753b1bec.png)

個人的には時間の速さより、10秒ピッタリでストップできた方が感動的でしたｗ

#### 回答内容
無駄もないが、足りない部分もない最低限だけどすばらしい表現だと思います。スピードもさることながら、この回答内容ならローカルLLMの候補としては十分かと思います。

>日本の首都は東京です。
>
>東京は日本の東部の首都で、日本国の政治的、経済的、文化的な中心都市です。


## まとめ
たまたま手持ちでオンボードGPUが搭載されているマシンがあったので、LM Studioを使ってローカルLLMを試してみましたが、みなさんいかがだったでしょうか。このLM Studioは言語モデルサーバの機能もありますので、開発言語経由でローカルLLMにアクセスしてといったような使い方もできます。ChatGPTなどのAPIを使うとお金がかかりますが、ローカルLLMなら電気代だけで済むので実質LLMが動かし放題というわけです。

なお、今回検証に使ったPCはメモリ追加を含めても5万円でおつりがくる程度のスペックです。それならもっと費用を積むとスピードアップもできますし、その程度の費用でも十分実用的なローカルLLMを動かせるという考え方もアリでしょう。