こんにちは!zhackです。
自分のPCの中だけでAIを動かす「ローカルLLM」、前から気になっていたので試してみました。
インストール自体は、正直すんなりいきました。
ただ、いざ質問を投げてみたら画面が英語でびっしり埋まってしまい、
どこが答えなのか、まったくわからなくなってしまいまして、、
最終的に私は、AIに向かって「回答はどれ?」と打ち込む羽目になりました。
今回はその一部始終と、後日ちゃんと測り直した数字をまとめます。
ただの体験記ですが、ご参考までに、、、
なお「そもそもローカルLLMって何?」という方は、先にこちらを読んでもらうと分かりやすいと思います。
→ ローカルLLM入門|PCでAIを動かすメリットとOllama
私のPC環境
まず、私の環境です。
| 項目 | 内容 |
|---|---|
| GPU | NVIDIA GeForce RTX 3070 Ti(VRAM 8GB) |
| CPU | Core i7-12700(20スレッド) |
| RAM | 15GB |
| OS | Windows(普段の開発はWSL2を使っています) |
| Ollama | 0.32.1 |
ゲーミングPCというほどではないですが、GPUは載っている、くらいの構成です。
インストール手順
先に白状しておくと、手順は自分で調べていません。
ChatGPTに「Ollamaをwindows環境で構築する手順を教えて」と聞いて、
返ってきたとおりにやりました。
※ この記事の画像はクリックすると拡大表示されます。ターミナルの画面は文字が細かいので、実際の出力を確かめたいときは拡大してみてください。

公式サイト(ollama.com/download)を開いて、Windowsを選んで、
「Download for Windows」を押すだけです。
PowerShellにコマンドを貼る方法も用意されていましたが、私はボタンのほうを選びました。

ダウンロードしたexeを実行すると、こんな画面が出ます。
「Install」を押します。

あとは待つだけでした。
ここまで、詰まるところは一つもありません。

インストールが終わるとこんなアプリも入っていて、
Claude CodeやChatGPTを起動するメニューが並んでいました。
今回は使いませんでしたが、こんなことができるんだ、と思いました。
モデル選びは、丸投げしました
Ollamaは「動かす仕組み」なので、動かすAIモデル本体は別で入れる必要があります。
ここで手が止まりました。
モデルの名前が qwen3.5:4b-q4_K_M みたいな形をしていて、
4b とか q4_K_M が何を意味しているのか、さっぱりわからなかったんです。
自分のPCにとって大きいのか小さいのかも判断できません。
そこで、またChatGPTに聞きました。
メモリの確認方法を教えてもらい、タスクマネージャーでCPUとGPUの数値を見て、その結果を共有しました。
そうして提案されたのが qwen3.5:4b-q4_K_M です。
つまり、モデルは自分で選んでいません。選べる自信がなかったからです。

ollama pull qwen3.5:4b-q4_K_M と打つと、3.4GBのダウンロードが始まりました。
success と出れば完了です。
ここもすんなりでした。
動いた! ……けど、画面が読めない
ollama run qwen3.5:4b-q4_K_M で対話を開始して、最初に投げた質問がこれです。
あなたが使用しているモデル名を教えてください。その後、日本語でローカルLLMのメリットを3つ説明してください。
Enterを押したら、英語がものすごい勢いで流れ始めました。

Thinking... と出たあと、Thinking Process: から始まる英語がひたすら続きます。
自分のPCの中だけでAIが動いている、というのは素直に嬉しかったです。
クラウドに何も送っていないのに、文章が出てくるわけですから。
ただ、、、
どこからどこまでが考え事で、どこが答えなんだ、、、?
日本語で聞いたのに、流れているのはほとんど英語です。
途中に日本語が混ざって、また英語に戻ります。
これは自分の読解力の問題かな、と思っていました。
(後で測ったら、違いました。その話は後半に書きます)
答えが途中で消えたぁああ!
しばらく眺めていたら、英語の独り言がようやく終わって、日本語が出てきました。
……と思ったら、こうなりました。

私はアリババのテンシィラボ (Tongyi Lab) が開発した大規模
「大規模」で切れています。
そして次の行は >>> Send a message に戻っていました。
答えが完成しないまま、勝手に終わってしまったわけです。
このときは何が起きたのか、まったくわかりませんでした。
私の質問が悪かったのか、モデルが壊れているのか、PCのスペックが足りないのか。
そして私は「回答はどれ?」と聞きました
考えてもわからなかったので、本人に聞くことにしました。

>>> 回答はどれ?
我ながらひどい質問だと思います。
でも、これが正直な反応でした。
そしたら今度は、ちゃんと最後まで返ってきました。
私のモデル名は Qwen3.5 です。ローカルLLMのメリットとして、以下の三点が挙げられます:1) データプライバシーを確保できるため、機密情報の外部送信リスクがない;2) 長期使用における API コスト削減で経済的になる;3) データ主権の強化により、規制対応やコンプライアンス要件を満たしやすくする。
続けて「他のLLMと比較して今のモデルがどのくらい性能に差があるか教えて」と聞いたら、これも問題なく答えてくれました。

動くには動く。
ただ、最初の1問だけ答えが消えたのが引っかかったままでした。
ちなみに、動いている最中にGPUの使用状況も見てみました。

VRAM 8192MiBのうち5273MiBを使っていて、GPU使用率は87%でした。
ちゃんとGPUが働いているみたいです。
後日、ちゃんと測り直しました
ここからは後日談です。
「答えが消えた」のがどうしても気になったので、時間を取って測り直しました。
結果を先に書くと、あれは私のせいではありませんでした。
画面の97.8%は「独り言」でした
まず、出力の内訳を測ってみました。
「Transformerのアテンション機構を、中学生にもわかるように300字で説明してください」と投げた結果です。
| 内訳 | 文字数 |
|---|---|
| 思考(英語の独り言) | 15,958文字 |
| 回答(日本語) | 367文字 |
| 思考が占める割合 | 97.8% |
今回入れた qwen3.5 は「思考モデル」と呼ばれる種類のモデルで、
答える前に、長い検討過程を全部出力するタイプでした。
画面に流れていたものの97.8%が独り言だったので、答えが見つからないのは当たり前でした。
私の読解力の問題ではなかったです。よかった。
ちなみに思考の中身がなかなか強烈で、300字という指定を守るために、こんなことで悩んでいました。
Wait, “Transformer” is Latin script. Usually when counting characters for these tasks in Japan (“字”), English letters count as 0.5 or full width depending on tool?
(待てよ、”Transformer” はラテン文字だ。日本語で「字」を数えるとき、英字は0.5文字か全角か、ツールによるのでは?)
全角半角の数え方に悩んでいます。人間くさいです。
4問中3問は、そもそも答えが返ってきませんでした
もっと深刻なことがわかりました。
設定を何もいじらないまま4つ質問を投げた結果です。
| 質問 | 思考 | 回答 | 終了理由 | 所要 |
|---|---|---|---|---|
| 日本語で自己紹介して | 6,779字 | 198文字 | 正常終了 | 23.3秒 |
| アテンションを300字で説明して | 12,092字 | 0文字 | 打ち切り | 43.1秒 |
| ブログ記事のタイトルを5案 | 13,644字 | 0文字 | 打ち切り | 45.3秒 |
| 名前・年齢・職業をJSONで(説明不要) | 17,624字 | 0文字 | 打ち切り | 39.8秒 |
4問中3問が、一文字も返さずに終わっていました。
しかも唯一成功した1問目も、思考6,779文字に対して回答198文字です。
うまくいった場合でも、97%は独り言でした。
いちばん驚いたのは最後の質問です。
「山田太郎、30歳、エンジニアをJSONで返して。説明は不要」という、
これ以上簡単にしようがない依頼に対して、17,624文字を英語で考えた末に、
こう疑い始めたまま力尽きていました。
Wait, re-reading “JSON with other explanations not required”. This often appears in testing scenarios where regex is used to find
json ....
(待てよ、「JSONで、説明不要」を読み直すと……これはテスト用途で正規表現でjsonを探されるやつでは?)
40秒考えて、何も出しませんでした。
原因は「コンテキスト長」でした
打ち切りの理由を調べたら、length と記録されていました。
Ollamaは初期設定だと、一度に扱える範囲(コンテキスト長)が4,096トークンに制限されています。
これは「質問 + 思考 + 回答」の合計枠です。
思考モデルは思考だけで4,000トークン以上使うことがあるので、
枠を思考で使い切ってしまい、答えを書く余裕が残らないまま強制終了していたわけです。
あの日「大規模」で切れたのは、これでした。
この設定を16,384に広げたら、同じ質問がちゃんと最後まで答えるようになりました。
しかし、それは間違っていました
コンテキスト長を広げれば解決、と思ったのですが。
広げると、今度は速度が落ちます。
llama3.1:8b(ファイルサイズ4.9GB)で、コンテキスト長だけを変えて測りました。
| コンテキスト長 | 処理の分担 | 生成速度 |
|---|---|---|
| 4,096(初期設定) | 100% GPU | 87.30 トークン/秒 |
| 16,384 | 13%がCPUに流出 | 40.63 トークン/秒 |
同じモデル、同じ質問。変えたのは設定ひとつだけです。
それで速度が半分以下になりました。
理由は、コンテキストを広げるとその分の作業メモリもVRAMを食うからです。
4.9GBのモデルはVRAM 8GBに余裕で収まるはずなのに、作業メモリを足すと収まらなくなって、
はみ出した分がCPUに回されます。
もうひとつ、測って初めて知ったことがあります。
VRAM 8GBは、8GB使えません。
何もしていない状態でもデスクトップの表示に約0.7GB使われていて、
実際に推論に回せるのは約7.4GBでした。
つまり、こういうことになります。
VRAMに載るか = モデルのファイルサイズ + コンテキスト長の分の作業メモリ
「8GBあるから7Bクラスが動く」という説明はよく見かけるのですが、
この式の後半が抜けています。
VRAM 8GBで、何が載って何が載らないか
せっかくなので、4つのモデルを同じ条件で比べました。
コンテキスト長 4,096(初期設定)のとき
| モデル | ファイル | 処理の分担 | 生成速度 |
|---|---|---|---|
| qwen3.5:4b-q4_K_M | 3.4GB | 100% GPU | 109.78 トークン/秒 |
| llama3.1:8b | 4.9GB | 100% GPU | 87.30 トークン/秒 |
| qwen3.5:9b-q4_K_M | 6.6GB | 12%がCPU | 52.85 トークン/秒 |
| qwen3.5:9b-q8_0 | 10GB | 47%がCPU | 5.78 トークン/秒 |
コンテキスト長 16,384(思考モデルに必要な設定)のとき
| モデル | 処理の分担 | 生成速度 |
|---|---|---|
| qwen3.5:4b-q4_K_M | 100% GPU | 111.14 トークン/秒 |
| llama3.1:8b | 13%がCPU | 40.63 トークン/秒 |
| qwen3.5:9b-q4_K_M | 19%がCPU | 30.07 トークン/秒 |
| qwen3.5:9b-q8_0 | 49%がCPU | 5.29 トークン/秒 |
いちばん上と下で21倍の差があります。
注目してほしいのは下の2行で、9b-q4_K_M と 9b-q8_0 は同じモデルで、圧縮率だけが違います。
それだけで52.85→5.78、9倍も変わりました。
圧縮しないとVRAMに載りきらず、半分がCPUに回ってしまうためです。
ちなみにCPUだけで動かしたら 5.90トークン/秒でした。
GPUに全部載った場合(87.30)と比べて約15倍の差です。
GPUがあると速い、というのは本当でした。
勧められた4Bは、正しかったのか
最初の話に戻ります。
ChatGPTはタスクマネージャーの数値を見て qwen3.5:4b を勧めてくれました。
VRAM 8GBに対して3.4GBなので、かなり余裕を持たせた選択です。
速度の面では、結果的に正解でした。
上の表のとおり、コンテキスト長を広げても100% GPUに留まったのは4Bだけです。
8Bや9Bを勧められていたら、設定を広げた時点でCPUに流出していました。
ただ、正しかったのは速度だけです。
もし思考モデルではない llama3.1:8b を勧められていたら、
初期設定のまま87トークン/秒で、思考の出ない直接の答えが返ってきていました。
私が画面を読めずに「回答はどれ?」と打ち込む展開には、なっていなかったと思います。
スペックには合っていたけれど、初心者にとっての読みやすさは見ていなかった、ということみたいです。
そして私には、その違いを判断する材料がありませんでした。
さいごに
以上が、OllamaでローカルLLMを動かしてみた記録でした。
わかったことを並べておきます。
- VRAM 8GBは8GBまるまる使えない(実際に使えたのは約7.4GB)
- モデルのファイルサイズだけでは、VRAMに載るか決まらない
- 初期設定のコンテキスト長4,096は、思考モデルには狭い(4問中3問が無言)
- 広げれば直るが、今度は速度が半分になる
- 圧縮率を下げるとVRAMからはみ出して、9倍遅くなる
- スペックに合ったモデルが、使いやすいモデルとは限らない
入門記事の多くは「必要スペックを満たしているか」を判断基準として書いています。
私も満たしていました。
満たしたうえで、詰まりました。
これから試す方には、まず一番小さいモデルで動かして、
画面に何が流れるかを先に確かめることをおすすめします。
速度や品質を気にするのは、そのあとで十分です。
私みたいに「動いたけど何が起きてるのかわからない」状態から始めることになるので、
そこを先に潰したほうが早いと思います。
ローカルLLMの仕組みやメリットについては ローカルLLM入門|PCでAIを動かすメリットとOllama にまとめてあるので、あわせてどうぞ。
圧縮率(量子化)による品質と速度の変化については、まだ測ったデータが残っているので、
また後日まとめようと思います。
ではでは!

コメント