オフライン実行できる対話ＡＩ使ってみた！

この記事はKCS Advent Calender 2024の5日目の記事です。

４日目 **[はじめての本格的なモデリングがキャラクターモデリングだった人の奮闘記](https://qiita.com/tomo0211goo/items/7fab2f961c1668470d7e)**
　⇑
５日目 オフライン実行できる対話ＡＩ使ってみた！（この記事）
　⇓
６日目 **[LLM脆弱性入門～プロンプトインジェクションとは？～](https://qiita.com/3_Jugem/items/78559ff2a3786a2412bd)**

## はじめに
LMStudio は、対話型AIモデルをオフラインで簡単に操作できるインターフェースを提供するプラットフォームです。個人での利用は無料です。今回はLMStudioを使ってみた感想を簡単にまとめたいと思います。
ホームページ：[LM Studio](https://lmstudio.ai/)

### LMStudio の主な特徴
#### ノートPC上の完全にオフラインな環境でLLMを実行できる。
メモリ使用率は調整できるのでRAM 16GB以上あれば問題なく利用できると思います。
CPUとGPUの両方を使った演算をサポートしているので外部GPUを搭載していないPCでも実行できます。
データ収集を行わないとしっかり書いてある点も安心です。

> *The app does not collect data or monitor your actions. Your data stays local on your machine.*
>
> このアプリはデータを収集したり、ユーザーの操作を監視したりすることはありません。あなたのデータはローカル環境でマシン内に留まります。
> (筆者訳)


#### ローカルドキュメントを読み込むことができる
`.pdf`, `.txt`, `.docx`をサポートしています。

#### アプリ内のChat UIでChatGPTライクな対話型AIを利用できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448138/2e4a1514-8573-e29b-a4ed-3bf35bc68c29.png)
アプリ内での直感的なインターフェースを介して、ChatGPTのような対話を楽しむことができます。

#### OpenAI互換のローカルサーバーを通じてモデルを利用できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448138/fd1353c4-9ad0-c3b4-6c33-af6c88e9274c.png)
ローカル環境にAPIサーバーを立てることで、他のツールやアプリケーションからもモデルを利用できます。

#### アプリのDiscoverページから新しいLLMをダウンロードして利用できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448138/e2e918d2-9ffc-6f14-7f72-3f544a688ea7.png)
アプリ内で提供されるDiscoverページから、さまざまな大規模言語モデルを簡単にダウンロードして試すことができます。

## LM Studioで利用できる主なAIモデル
LM Studioでは2024年12月5日時点で29種類ものAIモデルが利用できます。ここでは~~筆者の独断と偏見で選んだ~~いくつかのAIモデルについて紹介します。**なおスピードや回答の精度に関しては筆者の印象であり具体的な数値に基づくものではありません。**

筆者の実行環境を以下に記載しておきます。
> #### ThinkPad X13 Gen 2
> - OS: Windows 10 Pro　64bit
> - CPU: Ryzen 7 Pro 5850U
> - GPU: Radeon RX Vega 8 (CPU内蔵)
> - RAM: 32 GB

私のPCには外付けのGPUがないため、**CPUのみでの推論**となっています。
PCによって動作速度がだいぶ異なると予想されます、ご注意ください。

モデルサイズは筆者のPCで推奨されたレベルの暗号化が適用されたモデルのサイズです。

モデル名に付属している `~B` という表記はそのモデルのパラメーター数を表しています。BilionのBです。一般にこの数値が大きくなるほどモデルサイズも大きくなります。

### Meta Llama3.2
Llama3.2は、InstagramやThreads、Facebookなどを運営しているMetaが開発した大規模言語モデルです。
### `Llama3.2 1B`
モデルサイズ：1.32 GB
LMStudioをインストールされると最初におすすめされるモデルです。軽量なモデルで、ノートPC上で動作させるのに適しています。スピードだけを見ればGPT-4o並です。ただし、一般に知られている事実について聞いても間違ったことを答えることが多かったです。
### `Llama3.2 3B`
モデルサイズ：3.42 GB
`Llama3.2 1B`よりも性能が向上しており、より複雑なタスクにも対応可能です。スピードはGPT-3.5並です。`Llama3.2 1B`よりは間違ったことを答えることが少なかったですが、実用にはまだまだ制度が足りない気がします。

### Qwen2.5　Coder
Qwen2.5は、Alibaba.comやAlipayなどを運営しているアリババ社の子会社であるアリババクラウドが発表した大規模言語モデルです。「Coder」とついている通り、コーディングタスクに特化していますが、コーディング能力を強化するだけでなく、数学や一般的な能力における強みも維持しています。
### `Qwen2.5 Coder 3B`
モデルサイズ：2.00 GB
スピードはGPT-3.5並で、コーディングに関わることについては`Llama3.2 3B`よりもスムーズに回答できていた気がします。ただAlibabaが中国企業だからなのか、文章が中国語風だったり中国語の漢字が多く混ざる気がしました。
### `Qwen2.5 Coder 14B`
モデルサイズ：8.52 GB
`Qwen2.5 Coder 3B`よりも高度なコーディングタスクをサポートするモデルで、性能もGPT-3.5程度はありそうだなといった感じでした。
中国語風の文章はほぼ見られませんでしたが、中国語の漢字は依然としてよく見かけました。
### `Qwen2.5 Coder 32B`
モデルサイズ：15.94 GB
公式ページによると現時点で最先端のオープンソースのコード向けLLMであり、そのコーディング能力はGPT-4oと同等の水準に達しているそうです。ただし、必要なリソースが大きく、私の環境ではモデルのダウンロードにとても長い時間がかかり、実行時も文字が出るまでが非常に長く、とてもゆっくりしか出力されないといった感じで実用には向かないなといった感じでした。

## 実際の応答
`Qwen2.5 Coder 14B`に様々な質問をした際の回答をまとめておきます。

### C言語でFizzBuzz
#### 質問
> C言語でFizzBuzzを書いてください。
#### 回答
> はい、C言語でFizzBuzzを書く方法を示します：
> 
> ```c
> #include <stdio.h>
> 
> int main() {
>     int n;
>     
>     for (n = 1; n <= 100; ++n) {
>         if (n % 3 == 0 && n % 5 == 0)
>             printf("FizzBuzz\n");
>         else if (n % 3 == 0)
>             printf("Fizz\n");
>         else if (n % 5 == 0)
>             printf("Buzz\n");
>         else
>             printf("%d\n", n);
>     }
>     return 0;
> }
> ```
> 
> このプログラムは1から100までの数を順に調べ、3と5の倍数かどうか判定します。3と5の両方の倍数（つまり15の倍数）なら"FizzBuzz"、3の倍数だけなら"Fizz"、5の倍数だけなら"Buzz"を出力します。それ以外の場合はその数字自体を出力します。
#### レビュー
FizzBuzzは問題なくかけるみたいです。日本語も自然でした。

### 慶應って何？
#### 質問
> 慶應義塾大学について教えて下さい。
#### 回答
> 慶應義塾大学（けいようぎじゅくだいがく）は、日本の私立高等教育機関の一つで、東京都に位置しています。以下は慶應義塾大学に関する主な特徴です：
> 
> 成立：1882年に設立されました。
> 
> 本校と支校：
> 
> 主本校：東京（新宿区）
> 支校・教育センター：神奈川、横浜、名古屋、京都など全国に分布
> 教育プログラム：
> 
> 大学部
> 研究科
> 博士課程
> 高等専門学校（国際情報通信学部など）
> 
> 学科：多様な分野が開設されており、特にIT分野や商学、法、経済が特徴的です。
> 教育 philosphy：実践的な教育に重きを置き、「実践力」の育成を目指しています。
> 国際化：海外留学プログラムや国際交流イベントが盛んです。
> 研究環境：企業との連携など、実践的な研究開発も重点的に進めています。
> 校風：現代的で革新的な教育理念を持ち、多様性を尊重する校风があります。
> 企業との関係：多くの大手企業の取締役や高幹社員が慶應義塾出身です。
> 名誉：日本を代表する高等教育機関の一つとして、高い評価を受けています。
> 
> 慶應義塾大学は、その多様な教育プログラムと実践的な教育理念で多くの学生を受容し、社会貢献に活躍している一方で、日本の経済発展に大きな役割を果たしています。
#### レビュー
まず名前の読み仮名から間違っていますね...
その他もあっているような間違っているような微妙な内容です。
また校風のところではじめは「校風」と表記しているのにその後何故か「校风」になってしまっています。
質問が日本語だからでしょうか？それとも慶應がマイナーなのでしょうか...

### Tell me about UCLA
#### 質問
> Tell me briefly about UCLA.
#### 回答
> UCLA, or the University of California, Los Angeles, is one of the world's leading public research universities. Founded in 1919, it is located in Westwood, California, and encompasses a network of 34 undergraduate and graduate programs across nine professional schools. UCLA is renowned for its academic excellence, with over 150 years of distinguished history and contributions to society. The university attracts students from all over the world and is particularly known for its strong performance in research, sports, and arts.
#### レビュー
所々間違っている点に関しては慶應のときと同じですね。別に質問が日本語だからでも慶應がマイナーだからでもないようです。それっぽいことは言えるけど細かい情報は間違っているところはまだ検索機能がついていなかったGPT-3.5にそっくりな感じがします。

## まとめ
モデルの精度や速度はChatGPTやGeminiなどのオンラインツールには及ばないものの、オフラインで動作するという点は非常に魅力的で、今後の発展を見守っていきたいなといった感じでした。機会があればローカルサーバー機能も使ってみたいと思います。