【画像付き】WindowsでOllamaの環境構築!ローカルLLMに「回答はどれ?」と聞く羽目になった話

夜のデスクでPCの画面に流れる文字を見つめ、戸惑った表情を浮かべるトカゲのイラスト。ローカルLLMを動かしたときの様子を表している 生成AI・LLM

こんにちは!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公式サイトのダウンロードページ。Windowsが選択されている

公式サイト(ollama.com/download)を開いて、Windowsを選んで、

「Download for Windows」を押すだけです。

PowerShellにコマンドを貼る方法も用意されていましたが、私はボタンのほうを選びました。

Ollamaのインストーラー画面。Installボタンが表示されている

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

「Install」を押します。

インストール中の進捗バー

あとは待つだけでした。

ここまで、詰まるところは一つもありません。

Ollamaアプリの Launch 画面。Claude CodeやChatGPTなどが並んでいる

インストールが終わるとこんなアプリも入っていて、

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 です。

つまり、モデルは自分で選んでいません。選べる自信がなかったからです。

PowerShellでollama --versionとollama pullを実行した画面。3.4GBのダウンロードが成功している

ollama pull qwen3.5:4b-q4_K_M と打つと、3.4GBのダウンロードが始まりました。

success と出れば完了です。

ここもすんなりでした。

動いた! ……けど、画面が読めない

ollama run qwen3.5:4b-q4_K_M で対話を開始して、最初に投げた質問がこれです。

あなたが使用しているモデル名を教えてください。その後、日本語でローカルLLMのメリットを3つ説明してください。

Enterを押したら、英語がものすごい勢いで流れ始めました。

PowerShellの画面が英語のThinking Processで埋め尽くされている

Thinking... と出たあと、Thinking Process: から始まる英語がひたすら続きます。

自分のPCの中だけでAIが動いている、というのは素直に嬉しかったです。

クラウドに何も送っていないのに、文章が出てくるわけですから。

ただ、、、

どこからどこまでが考え事で、どこが答えなんだ、、、?

日本語で聞いたのに、流れているのはほとんど英語です。

途中に日本語が混ざって、また英語に戻ります。

これは自分の読解力の問題かな、と思っていました。

(後で測ったら、違いました。その話は後半に書きます)

答えが途中で消えたぁああ!

しばらく眺めていたら、英語の独り言がようやく終わって、日本語が出てきました。

……と思ったら、こうなりました。

思考の最後で日本語が途中で切れ、入力待ちに戻っている画面

私はアリババのテンシィラボ (Tongyi Lab) が開発した大規模

「大規模」で切れています。

そして次の行は >>> Send a message に戻っていました。

答えが完成しないまま、勝手に終わってしまったわけです。

このときは何が起きたのか、まったくわかりませんでした。

私の質問が悪かったのか、モデルが壊れているのか、PCのスペックが足りないのか。

そして私は「回答はどれ?」と聞きました

考えてもわからなかったので、本人に聞くことにしました。

「回答はどれ?」と入力し、今度は日本語の回答が最後まで返ってきている画面

>>> 回答はどれ?

我ながらひどい質問だと思います。

でも、これが正直な反応でした。

そしたら今度は、ちゃんと最後まで返ってきました。

私のモデル名は Qwen3.5 です。ローカルLLMのメリットとして、以下の三点が挙げられます:1) データプライバシーを確保できるため、機密情報の外部送信リスクがない;2) 長期使用における API コスト削減で経済的になる;3) データ主権の強化により、規制対応やコンプライアンス要件を満たしやすくする。

続けて「他のLLMと比較して今のモデルがどのくらい性能に差があるか教えて」と聞いたら、これも問題なく答えてくれました。

比較の質問に対して、日本語の回答が最後まで表示されている画面

動くには動く。

ただ、最初の1問だけ答えが消えたのが引っかかったままでした。

ちなみに、動いている最中にGPUの使用状況も見てみました。

nvidia-smiの出力。5273MiB / 8192MiB、GPU使用率87%

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_M9b-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 にまとめてあるので、あわせてどうぞ。

圧縮率(量子化)による品質と速度の変化については、まだ測ったデータが残っているので、

また後日まとめようと思います。

ではでは!

コメント

タイトルとURLをコピーしました