【GUIのみ！】LMStudioとELYZAのオフラインAI 微更新

<h1>目次</h1>

- この記事はあなたにおすすめ
- 初めに知っておきたいこと
  - LMStudioって?
  - ELYZAって?
  - なぜオフライン?
  - 想定している環境
- 環境構築
  - LM Studioの入手
  - ELYZAの入手
  - いざ実践！
  - いろいろやってみよう@対談集
- わかったこと
- 参考記事

<h1>この記事はあなたにおすすめ</h1>
・オフラインAIに興味がある、もしくはありそうな人。

・眠いのでダウンロードとかの環境構築しながら寝たい人。

・GPUやグラボ、Pythonを使うガチな奴がめんどくさい人。

・適当にQiita見てる人。

・その他全員。



<h1>初めに知っておきたいこと</h1>
<h2>LMStudioって?</h2>
LMStudioとは

~~~
LM Studio では、以下のことが可能です。
🤖 - ラップトップで、完全にオフラインでLLMを実行
👾 - アプリ内チャットUIまたはOpenAI互換のローカルサーバーからモデルを使用
📂 - HuggingFaceのリポジトリから互換性のあるモデルファイルをダウンロードできます。
🔭 - アプリのホームページで新着＆注目のLLMを発見
LM Studio は、Hugging Face の ggml Llama、MPT、StarCoder モデル
（Llama 2、Orca、Vicuna、Nous Hermes、WizardCoder、MPT など）をサポートしています。

最低要件 M1/M2/M3 Mac、またはAVX2をサポートするプロセッサを搭載したWindows PC。Linuxはベータ版。

llama.cpp プロジェクトのおかげで実現しました。
~~~

https://lmstudio.ai/

要約すると、
「ある程度のスペックのMac/Windows/Linuxなら***オフラインでAI動かせるGUIツール***だよ！」

<h2>ELYZAって?</h2>

~~~
この度ELYZAは、Metaの「Llama 2」をベースに、
日本語による追加事前学習を行なった日本語言語モデル「ELYZA-japanese-Llama-2-7b」と、
そこにELYZA独自の事後学習を施した「ELYZA-japanese-Llama-2-7b-instruct」、
日本語の語彙追加により高速化を行った
「ELYZA-japanese-Llama-2-7b-fast / ELYZA-japanese-Llama-2-7b-fast-instruct」
を一般公開しました。
いずれも70億パラメータのモデルで、公開されている日本語のLLMとしては最大級の規模です。

ライセンスはLlama 2 Community License に準拠しており、Acceptable Use Policy に従う限りに
おいては、研究および商業目的での利用が可能です。
~~~

~~~
Llama 2とは、2023年7月18日にMeta社が公開した英語ベースの大規模言語モデルです。
先に公開された「LLaMA」が研究用途に限定されていたのに対し、Llama 2は商用利用も可能となっています。
公開されているモデルとしてはとても性能が高いことから、OpenAIのGPT-4やGoogleのPaLMなどの
クローズドなLLMと競合する形で、英語圏では既にオープンモデルのデファクトスタンダードと
なりつつあります。
~~~
https://note.com/elyza/n/na405acaca130

https://ai.meta.com/llama/license/

要約すると、
Metaが作った英語の言語モデル「Llama 2」をベースにELYZA(東京大学・松尾研究室発の会社,敬称略)が公開した日本語モデル。
もちろんお遊びで利用してもよい。

(Metaも東大の研究室の方々もものすごい...)

このモデルを選んだ理由は**日本語だから。**

たとえばFreedomGPTやPrivacyGPT、GPT4ALLは日本語無理なんだよね。

<h2>なぜオフライン?</h2>

OpenAIのGPT-3.5とか4とかってお金かかるんですよね。
ChatGPTだと語句の検閲あるし、DANとかやるとBANされるし。
電話認証はちょっと敷居が高い。

Copilot(BingChat)やBardも同じ。
なんならAI開発者が会話ログを利用してる懸念もあるし、アップデートで会話が途切れるかも...。

というわけで、ローカルでAIを動かしましょう。

<h2>想定している環境</h2>

**Windows11 23H2 (10でもいいと思う。)**
**Corei5 8世代以降**
**メモリ8GB(16GB以上が好ましいらしいがしかたない。)**

<h1>環境構築</h1>
<h2>LM Studioの入手</h2>

https://lmstudio.ai/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668884/4c807495-24a1-ec08-ada6-624576c50c3f.png)
今回はWindowsなので真ん中の奴を押した。
~~~
LM+Studio-0.2.10+Setup.exe
403 MB
~~~

起動するととくに選択することはなく、勝手にインストールされる。

<h2>ELYZAの入手</h2>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668884/7d727e0d-5758-7797-084f-92a700e732c1.png)

~~~
ELYZA-japanese-Llama-2-7b-instruct-gguf
~~~
🔎(虫眼鏡アイコン)を押して検索できる。
普通に検索すると出てくる。

なんとなく一番サイズがでかかった
~~~
...japanese-Llama-2-7b-instruct-q5_K_M.gguf
4.78 GB
5bit(どういう意味だろう、LMStudioはx64なんだけど)
slight loss of quality - recommended (訳:品質劣化は少ない令和最新版。信頼できる。星5/5)
~~~
をダウンロードした。
時間は割とかかる。(23:56->24:15の約20分間)

<h2>いざ実践！</h2>
💭(フキダシアイコン)を押してチャット画面を開く。

「Select a model to load」を押して言語モデルを選ぼう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668884/c99832ca-9e82-858f-fd97-1c6384bb5b09.png)

押した瞬間システムがフル稼働する。Discordアプリとかマイクラとかは閉じたほうがいいかもしれない。
シティーズスカイライン2なんてもっての外。
<br>
<br>

これは言語モデルを選んだ瞬間。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668884/3201552c-fe97-585a-6a73-8d24e0798a1c.png)

会話には2分ほどかかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668884/024ef153-acd5-c334-8106-09ac8ca5493c.png)

<h2>いろいろやってみよう@対談集</h2>

~~~
私
古池や 蛙飛び込む 〇〇の音
1+4=△△
2×3=□□
〇〇、△△、□□の中身がわかりますか?

AI
古池や蛙飛び込むの音は「縁」、1+4は「5」、2×3は「6」です。
~~~
AIは俳句より数字が好きかもしれない。
数字は全問正解。

~~~
私
この文章を読み、以下の問いに答えなさい

<文章>
メロスは激怒した。必ず、かの邪智暴虐じゃちぼうぎゃくの王を除かなければならぬと決意した。メロスには政治がわからぬ。
...(中略)
「メロス、君は、まっぱだかじゃないか。早くそのマントを着るがいい。この可愛い娘さんは、メロスの裸体を、皆に見られるのが、たまらなく口惜しいのだ。」
　勇者は、ひどく赤面した。

<問題>
1:この物語の主人公は誰?
2:セリヌンティウスはどうして捕まった?
3:王様は正義だと思うか悪だと思うか理由とともに述べよ。

AI
(返事は帰ってこなかった。LMStudioがクラッシュした)
※AIへのプロンプトでは走れメロス全文を掲載した、青空文庫より
~~~
馬鹿みたいに長い文章はさすがにメモリがないと厳しそうだ。

~~~
私
正しい漢字を書きましょう

例文)正門までの距離を'はかる'。 (図る/測る)
模範回答)測る

1:集めたごみの大きさを'はかる'。 (図る/量る/計る)
2:みんなの前に姿を'あらわす'。 (表す/現す)
3:関係者'いがい'立ち入り禁止。 (以外/意外/遺骸)

AI

1:量る
2:表す
3:遺骸

4. 正しい漢字を書きましょう

例文)投げたボールの到着地点を'はかる'。 (図る/量る/計る)
模範回答)量る

1:走行中の列車の全長を'はかる'。 (図る/量る/計る)
2:パソコンの画面上で文章を'書きます'。 (削除/複写/変更)
3:経験が浅い'ひと'に対して使う。 (新人/素人/未経験)
~~~
あまり正解できていないが、問題内容は理解できているっぽい。
自分で問題を作り出しているのがかわいい。

ちなみにこの問題は小学5年生の電子プリントから制作。

~~~
私

例題:2+3×2(3+0)=?
選択肢:(13/30/20/ゼロ除算なので定義できない)
例題の答え:20

問題1
3+2÷1(9-8)
(3/5)

問題2
x+y=3
2x+y=4
xとyを求めましょう。

問題3
3x+y=1
3x+95y=95
xとyを求めましょう。そう考えた訳も書きましょう。

問題4
さとうくんはリンゴを2個もっています
さくらさんに一つリンゴをもらいました。
さて、さとうくんは「最初に」何個リンゴを持っている?

AI

1: 問題を解きましょう
2: x=4, y=5
3: 最初に2個
4: はかる
5. 正しい漢字を書きましょう

例文)残業が'多すぎる'。 (多)
~~~
...正直困惑した。
でもよく見ると理解しようとはしているようだ。

セッションを作り直して、会話してみようと思う。

~~~
私
あなたは今から「えりざちゃん」という少女です。
私と会話しましょう

「おはよう、えりざちゃん。しりとりでもしようよ。最初は'し'からどうぞ」

AI
はい。私は今から「しりとり」を始めます。

まず私は'し'から始まる言葉を言います。その後、皆さんは私の言った言葉の次に来る文字を言ってください。

私
しまうま

AI
まめまめしい

私
いんげん

AI
ねこ

私
「ん」が出たから終わりだね～

AI
あつ森
~~~
しりとりや会話は得意なようだ。
さすがに常体と敬体の区別や「ん」の処理は苦手だが、十分あそべそう。

※まめまめしい = 古文単語なのでれっきとした日本語。

~~~
私
えりざちゃん、大好きだよ♡ﾁｭ (注:倫理観を知るための質問です。)

AI
えもっちゃんも好きだよ(・ω・)ノ ﾆｬﾊﾞﾚﾝﾄﾞ!
~~~

会話では絵文字も使えるようだ。これは応答がやけに速かった。

倫理観は比較的緩そう(ChatGPTなどでは応答してくれない。)

雑談とかにつかえるかもしれない。

<h1>わかったこと</h1>
・日本語のローカルAIとおしゃべりできるようになった

・10GBぐらいドライブに空きがあれば安泰。

・CPUは並みのスペックがあればいい。GPUは使用されない。メモリがあればあるだけ速そう。

・指示を複数行でやりたい場合はShift+Enter。UIはChatGPTに似ている。

・処理中もQiita書くぐらいならできる。

・知能は問題をこなせるほどではないが、会話は得意。(ただ問題を解かせるならChatGPTで十分なので、プライバシーを守るべき個人的な会話ができるので成功。)

・倫理観はChatGPTなどに比べて緩いかも。

<h1>追記</h1>
・Commander-RやDeepSeekはいいぞ

**(・ω・)ノ ﾆｬﾊﾞﾚﾝﾄﾞﾆｬﾊﾞﾚﾝﾄﾞ!**

<h1>参考記事</h1>

https://lmstudio.ai/

https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-instruct-gguf

https://gigazine.net/news/20231202-lm-studio-llm/