ローカルLLMを動かしても、生成が遅い・メモリ不足で落ちる——そんな不満は、ハードウェア選びと設定の見直しでかなり減らせます。
この記事では、Windows上でOllamaの推論速度と安定性を上げるための手順を整理します。GPU活用から量子化、並列処理、キャッシュ、環境変数まで、今日から試せる内容に絞っています。
この記事でわかること
- Windowsで環境変数を反映する正しい手順
- 量子化フォーマット(Q4_K_Mなど)の選び方
- 並列リクエストとKVキャッシュのメモリ計算
- Flash Attentionとキャッシュ量子化の組み合わせ
- モデルのプリロードとメモリ保持の設定
まず押さえる課題とゴール
OllamaはCPUだけでも動きますが、公式ドキュメントのGPU対応状況を見ると、NVIDIA GPU(CUDA)やAMD GPU(ROCm・Vulkan)を使った推論の方が、CPU単体より大幅に速くなります。7Bクラスのモデルなら、GPU利用時とCPUのみではトークン生成速度に10倍以上の差が出るケースもあります。
一方で、VRAM不足のまま大きなモデルや長いコンテキストを要求すると、レイヤーがCPUに逃げて速度が落ちます。目標は「自分のGPUメモリに収まる量子化を選び、並列数とコンテキスト長のバランスを取る」ことです。
前提条件:WindowsとGPUの確認
OllamaのWindows版は、Windows 10 22H2以降(Home・Pro)で動作します。NVIDIA GPUを使う場合は、ドライバ551.61以降が必要です。AMD RadeonではROCm v7対応ドライバ、またはVulkan対応ドライバが前提になります。
GPUが使われているかは、ollama psで確認できます。Processor列に100% GPUと出れば、モデル全体がGPUに載っています。48%/52% CPU/GPUのように混在している場合は、VRAM不足で一部レイヤーがCPUにオフロードされています。
ステップ1:ハードウェアとストレージを整える
モデルファイルはC:\Users\ユーザー名\.ollama\modelsに保存されます。初回ロード時はディスクからメモリへ読み込むため、NVMe SSDに置くと待ち時間が短くなります。空き容量が少ないとスワップが増え、体感速度が落ちやすくなります。
システムRAMは、GPUのVRAMと同程度以上、できれば1.5〜2倍を確保しておくと安定します。GPU推論中もモデル重みの読み込みやページキャッシュにRAMが使われるためです。ノートPCでは電源接続とWindowsの電源プランを「高パフォーマンス」に設定し、バックグラウンドの重いアプリを閉じてから推論を始めてください。
ステップ2:量子化フォーマットを選ぶ
量子化(quantization)は、モデルの重みを低精度に圧縮してVRAMとRAMの使用量を減らす手法です。OllamaはGGUF形式の量子化モデルを扱い、タグで精度を指定します。
| フォーマット | 特徴 | 向いている用途 |
|---|---|---|
| Q4_K_M | 4bit・バランス型 | 日常利用の第一候補 |
| Q5_K_M | 5bit・高精度寄り | VRAMに余裕がある場合 |
| Q8_0 | 8bit・ほぼ元精度 | 品質重視でVRAMに余裕がある場合 |
Ollamaはモデル取得時、多くの場合Q4_K_Mをデフォルトでダウンロードします。明示的に指定する例は次のとおりです。
ollama pull llama3:8b-instruct-q4_K_M
VRAM 8GB以下なら7BクラスのQ4_K_Mが現実的なラインです。14B以上を載せたい場合は、量子化を下げるか、CPUオフロードを許容する覚悟が必要になります。
ステップ3:環境変数をWindowsに設定する
Ollamaのサーバー設定は、起動時に読み込む環境変数で制御します。Windowsでは次の手順が公式FAQで案内されています。
- タスクバーのOllamaアイコンから終了する
- 設定(Windows 11)またはコントロールパネル(Windows 10)で「環境変数」を検索
- 「ユーザー環境変数の編集」を開く
- 変数を新規作成または編集して保存
- スタートメニューからOllamaを再起動
設定を変えただけでは反映されません。トレイから一度終了してから起動し直す必要があります。
速度とメモリに効く主要な変数
OLLAMA_FLASH_ATTENTION=1
Flash Attentionは、コンテキストが長くなるほどメモリ効率が良くなる最適化です。公式FAQでは、サーバー起動時に1を設定して有効化します。CUDA環境で特に効果が出やすい設定です。
OLLAMA_KV_CACHE_TYPE
KVキャッシュは、生成中に過去トークンのKey/Valueを保持する領域です。デフォルトはf16(16bit浮動小数点)です。Flash Attention有効時にq8_0へ変更すると、メモリ使用量がおよそ半分になります。q4_0はさらに省メモリですが、長いコンテキストでは品質低下が目立つ場合があります。公式FAQではq8_0を、品質への影響が小さい選択肢として推奨しています。
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=q8_0
OLLAMA_CONTEXT_LENGTH
デフォルトのコンテキスト長は4096トークンです。長い会話やドキュメント要約が必要なら、この値を上げます。ただしコンテキストが長いほどKVキャッシュが増え、VRAMを多く消費します。
OLLAMA_NUM_PARALLEL
1モデルあたりの同時推論数です。デフォルトは1です。値を上げるとスループットは上がりますが、公式FAQの説明どおり、必要メモリはOLLAMA_NUM_PARALLEL × OLLAMA_CONTEXT_LENGTHに比例して増えます。たとえば2Kコンテキストで4並列にすると、8Kコンテキスト相当のKVキャッシュが必要になります。VRAMに余裕がある場合のみ2〜4から試してください。
OLLAMA_MAX_LOADED_MODELS
同時にメモリ上に載せられるモデル数です。デフォルトはGPU数×3(CPU推論時は3)です。メモリが逼迫するなら1に下げます。WindowsのRadeon GPUは、ROCm v5.7のVRAM報告制限により、デフォルトが1モデルに制限されている点に注意してください。
OLLAMA_KEEP_ALIVE
アイドル状態のモデルはデフォルトで5分後にアンロードされます。繰り返し同じモデルを使うなら-1(無期限保持)や24hなどに設定し、再ロードの待ち時間を省けます。メモリを空けたいときはollama stop モデル名で即座にアンロードできます。
OLLAMA_MODELS
モデル保存先を変更する変数です。高速なドライブにパスを向けたい場合に使います。
ステップ4:Modelfileでコンテキストを固定する
実行のたびにコンテキスト長を変えると、モデルの再ロードが走ります。本番運用ではModelfileでnum_ctxを固定する方法が安定します。
FROM phi4-mini:3.8b
PARAMETER num_ctx 32768
ollama create phi4-mini-ctx32k -f Modelfile
ollama run phi4-mini-ctx32k
ステップ5:キャッシュを活用して初回応答を速くする
モデルの初回ロードには数十秒かかることがあります。サービス起動時に空リクエストでウォームアップすると、最初のユーザー待ちを減らせます。
ollama run llama3.2 ""
APIを使う場合は、/api/generateまたは/api/chatにモデル名だけ送る空リクエストでも同様です。keep_aliveパラメータに-1を付ければ、ロード後もメモリに保持したまま運用できます。
トラブルシューティング
生成が極端に遅い
ollama psでCPU/GPUの比率を確認してください。CPU比率が高い場合は、より小さいモデルか低い量子化(Q4_K_Mなど)に切り替えます。NVIDIA GPUで複数枚ある場合は、CUDA_VISIBLE_DEVICESで使用GPUを指定できます。
並列数を上げたらOOMになる
OLLAMA_NUM_PARALLELを下げるか、OLLAMA_KV_CACHE_TYPE=q8_0とFlash Attentionを組み合わせてKVキャッシュを圧縮します。並列処理はスループット向上の代わりに、1リクエストあたりのレイテンシが上がるため、対話用途ではデフォルトの1のままが無難です。
キュー溢れで503エラー
リクエスト過多時、Ollamaは503を返します。OLLAMA_MAX_QUEUE(デフォルト512)を調整するか、クライアント側でリトライ処理を入れてください。
AMD GPUで複数モデルを同時ロードできない
Windows Radeon環境では、VRAM報告の制限により同時ロード数が1に制限されています。ROCm v6.2以降で改善見込みと公式FAQに記載があります。現状は1モデルに絞って運用するのが安全です。
設定の優先順位
効果が大きい順に整理すると、次の流れが実践的です。
- GPUドライバを最新に保ち、
ollama psでGPU載せを確認する - VRAMに合った量子化(まずQ4_K_M)を選ぶ
OLLAMA_FLASH_ATTENTION=1とOLLAMA_KV_CACHE_TYPE=q8_0を設定する- 用途に応じて
OLLAMA_NUM_PARALLELとOLLAMA_CONTEXT_LENGTHを調整する - 繰り返し利用するモデルはプリロードと
OLLAMA_KEEP_ALIVEで再ロードを防ぐ
OllamaのWindows版は、インストール直後でもGPU推論は動きます。ボトルネックの多くは、VRAMを超えたモデル選びと、並列数・コンテキスト長の過剰設定にあります。まず自分のGPUメモリを把握し、上記の環境変数を1つずつ変えながらollama psで状態を確認するのが、最も確実な高速化ルートです。