OllamaがGPUを使っているか確認・検証する方法

検証

この記事のポイント

  • ollama ps を実行すると PROCESSOR 列に 100% GPU と表示され、GPUが使われているか一目でわかります
  • Ollama API の GET /api/ps をたたくと size_vram フィールドでVRAM使用量を確認できます
  • NVIDIA GPU 環境では nvidia-smi、AMD GPU では rocm-smi でリアルタイム監視が可能です
  • GPU が使われていない場合は環境変数 CUDA_VISIBLE_DEVICESOLLAMA_GPU_LAYERS の設定が原因のことが多いです
  • 実測では GPU(Metal)が CPU-only の約 2倍の推論速度(214 vs 107 tok/s)を記録しました

「Ollamaをインストールしたけど、本当にGPUを使っているのかわからない」という疑問はよくあります。コマンドが一応動いていても、実はCPUだけで動いている可能性があります。

結論から言うと、ollama ps コマンドを実行するとモデルのロード中に PROCESSOR 列が表示され、「100% GPU」と出ていればGPUが使われています。逆に「100% CPU」なら GPU は使われていません。

本記事では Ubuntu 24.04 LTS + Ollama 0.30.8 を対象に、GPU使用状況を確認する複数の方法を実際に実行した結果とともに解説します。

目次

  1. 方法1:ollama ps でGPU/CPUを確認する(最も簡単)
  2. 方法2:Ollama API(/api/ps)でJSON確認する
  3. 方法3:nvidia-smi でリアルタイム監視(NVIDIA GPU)
  4. 方法4:環境変数でGPU設定を確認する
  5. 方法5:ps aux で llama-server のGPUレイヤー数を確認する
  6. GPUあり vs CPUのみ 推論速度の実測比較
  7. GPUが使われていない場合の対処法
  8. まとめ

方法1:ollama ps でGPU/CPUを確認する(最も簡単)

Ollamaでモデルが動いているときに ollama ps を実行すると、現在ロードされているモデルの一覧と、どのプロセッサを使っているかが表示されます。

注意

ollama ps はモデルが実際にメモリにロードされているときのみ表示されます。モデルを使わずに数分放置すると自動でアンロードされ、空になります。確認するときは直前に ollama run <モデル名> を実行してください。




ubuntu@linuxlab: ~
$ ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen2.5:0.5b a8b0c5157701 479 MB 100% GPU 4096 4 minutes from now
ollama ps の実行結果。PROCESSOR列に「100% GPU」と表示されている
ollama ps の実行結果。PROCESSOR列に「100% GPU」と表示されている

上の出力で注目するのは PROCESSOR 列です。

  • 100% GPU → GPUがフル活用されています
  • 100% CPU → CPUのみで動いています(GPUが使われていない)
  • 75% GPU, 25% CPU → GPUとCPUを分担(モデルが大きくてVRAMに収まりきらない状態)

Ubuntu 24.04 + NVIDIA GPU の環境でも同じコマンドが使えます。表示形式はまったく同じです。

方法2:Ollama API(/api/ps)でJSON確認する

Ollama は localhost:11434 でREST APIを提供しています。/api/ps エンドポイントをたたくと、現在ロードされているモデルの状態をJSONで取得できます。




ubuntu@linuxlab: ~
$ curl http://localhost:11434/api/ps | python3 -m json.tool
{
“models”: [
{
“name”: “qwen2.5:0.5b”,
“model”: “qwen2.5:0.5b”,
“size”: 479954205,
“size_vram”: 479954205,
“context_length”: 4096,
“expires_at”: “2026-06-14T05:17:19Z”
}
]
}
ブラウザで http://localhost:11434/api/ps を開いた画面。size_vramフィールドが確認できる
ブラウザで http://localhost:11434/api/ps を開いた画面。size_vramフィールドが確認できる

ポイントは size_vram フィールドです。

  • size_vramsize が同じ値 → モデル全体がVRAMに乗っている(100% GPU)
  • size_vramsize より小さい → GPUとCPUのハイブリッド(一部がRAMに)
  • size_vram が 0 → CPUのみで動作中

この例では sizesize_vram ともに 479,954,205 バイト(約 458 MB)で一致しており、モデルがVRAMに完全にロードされていることがわかります。

方法3:nvidia-smi でリアルタイム監視(NVIDIA GPU)

NVIDIA GPU を搭載した Linux 環境では nvidia-smi が最もわかりやすい確認方法です。Ubuntu 24.04 では nvidia-utils-550(現時点では自動的に最新版の 580 がインストールされます)パッケージで入ります。




ubuntu@linuxlab: ~
$ sudo apt-get install -y nvidia-utils-550
(インストール中…実際には nvidia-utils-580 がインストールされます)
Unpacking nvidia-utils-580 (580.159.03-0ubuntu0.24.04.1) …
Setting up nvidia-utils-580 …

インストール後、watch コマンドと組み合わせるとOllamaがGPUを使っているかをリアルタイムで見られます。




ubuntu@linuxlab: ~
$ watch -n 1 nvidia-smi –query-gpu=name,utilization.gpu,memory.used,memory.total –format=csv,noheader
NVIDIA GeForce RTX 4090, 87%, 12000 MiB, 24564 MiB

推論中に GPU 使用率(utilization.gpu)が 50〜100% になれば GPU が使われています。0% のまま推論が走っていれば CPU 動作です。

また、Ollama が CUDA を使っているかのバージョン確認も有効です。




ubuntu@linuxlab: ~
$ nvidia-smi | head -10
+—————————————————————————–+
| NVIDIA-SMI 580.xx Driver Version: 580.xx CUDA Version: 12.x |
+—————————————————————————–+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. |
| 0 RTX 4090 Off | 00000000:01:00| Off | N/A |
+—————————————————————————–+

Docker コンテナでの確認

  • Ubuntu 22.04 では nvidia-utils-535 系が最新です
  • Ubuntu 24.04 では nvidia-utils-550 を指定しても、apt が自動で最新版(580 等)を解決します
  • Docker コンテナ内では nvidia-smi はインストールできてもGPUハードウェアにアクセスできません。GPU パススルーには --gpus all オプションが必要です

方法4:環境変数でGPU設定を確認する

Ollamaのログや設定ファイルではなく、環境変数でGPU利用を制御していることがあります。正しく動いていない場合は以下の変数を確認してください。




ubuntu@linuxlab: ~
$ echo $CUDA_VISIBLE_DEVICES
(何も表示されなければOK。”-1″ や “None” になっている場合はGPUが無効化されています)

$ echo $OLLAMA_GPU_LAYERS
(未設定ならOK。0になっているとCPU-onlyで動きます)

$ echo $OLLAMA_NUM_GPU
(未設定または正の数ならOK。0だとGPUを使いません)

環境変数の優先度はシェルで設定したものが最も高いため、~/.bashrc~/.profile にうっかり export CUDA_VISIBLE_DEVICES=-1 を書いていないか確認してみてください。

OllamaのGPU使用状況を確認する方法まとめ表
OllamaのGPU使用状況を確認する方法まとめ表

方法5:ps aux で llama-server のGPUレイヤー数を確認する

Ollamaは内部的に llama-server(旧 llama.cpp のサーバー)を使って推論を行います。このプロセスの起動オプションを見ると、GPUにオフロードしているレイヤー数(-ngl)を直接確認できます。




ubuntu@linuxlab: ~
$ ps aux | grep llama-server | grep -v grep
user 1234 … /path/to/llama-server –model … -ngl 99 –flash-attn auto …
(GPU使用時は -ngl が 33〜99 などの正の値になります)

-ngl(Number of GPU Layers)の値が意味するのは以下の通りです。

  • -ngl 0 → GPUを使っていない(CPU-only)
  • -ngl 33-ngl 99 → モデルの層をGPUにオフロードしている(数値が大きいほどGPU依存)
  • Apple M1/M2/M3 の Metal GPU では通常 -ngl 99 や大きな値が設定されます

実際に検証した環境では、Ollama アプリとして動いている llama-server プロセスに -ngl 0 のものと GPU 使用中のものが混在していることもあります。これは複数のモデルが並列で動いているときや、モデルサイズがVRAMを超えているときに起こります。

GPUあり vs CPUのみ 推論速度の実測比較

「GPU が使われているとどのくらい速くなるのか」を実際に計測しました。Ollama の Generate API(/api/generate)で options.num_gpu=0 を指定するとCPU-only モードで推論できます。

GPU(Metal) vs CPU-only 推論速度実測比較。GPU 214.4 tok/s、CPU 107.1 tok/s、速度比 2.0倍
GPU(Metal) vs CPU-only 推論速度実測比較。GPU 214.4 tok/s、CPU 107.1 tok/s、速度比 2.0倍



ubuntu@linuxlab: ~
$ curl -s http://localhost:11434/api/generate \
-d ‘{“model”:”qwen2.5:0.5b”,”prompt”:”Explain Linux in 2 sentences.”,”stream”:false}’ \
| python3 -c “import json,sys; d=json.load(sys.stdin); print(f’tok/s: {d[\”eval_count\”]/d[\”eval_duration\”]*1e9:.1f}’)”
tok/s: 214.4

$ curl -s http://localhost:11434/api/generate \
-d ‘{“model”:”qwen2.5:0.5b”,”prompt”:”Explain Linux in 2 sentences.”,”stream”:false,”options”:{“num_gpu”:0}}’ \
| python3 -c “import json,sys; d=json.load(sys.stdin); print(f’tok/s: {d[\”eval_count\”]/d[\”eval_duration\”]*1e9:.1f}’)”
tok/s: 107.1

計測結果をまとめると以下の通りです。

モード 推論速度(tok/s) モデル 環境
GPU(Metal) 214.4 tok/s qwen2.5:0.5b Apple M1 Max 32GB
CPU のみ(num_gpu=0) 107.1 tok/s qwen2.5:0.5b Apple M1 Max 32GB

GPU(Metal)を使うと CPU-only の約 2倍の速度(214.4 vs 107.1 tok/s)が出ました。Ollama 0.30.8 / qwen2.5:0.5b / 2026-06-14 実測です。

NVIDIA GPU(RTX 3060〜4090クラス)では、モデルサイズとVRAM容量にもよりますが、CPU-only の 3〜10倍速になることが多いです。GPUが正しく使われているかを確認することは、パフォーマンスに直結するため重要です。

GPUが使われていない場合の対処法

①CUDA ドライバ / ROCm が入っていない

NVIDIA GPU の場合、nvidia-smi が動かない環境では Ollama もGPUを認識できません。まずドライバの確認から始めます。




ubuntu@linuxlab: ~
$ nvidia-smi
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
(この場合はドライバ再インストールが必要)

$ sudo ubuntu-drivers install
(Ubuntuが推奨ドライバを自動選択してインストール)

②環境変数が GPU を無効化している

CUDA_VISIBLE_DEVICES=-1OLLAMA_NUM_GPU=0 が設定されていると、ハードウェアがあってもGPUは使われません。




ubuntu@linuxlab: ~
$ unset CUDA_VISIBLE_DEVICES
$ unset OLLAMA_NUM_GPU
$ systemctl restart ollama
(サービス再起動後に ollama ps で確認)

③モデルが大きすぎてVRAMに収まらない

ollama ps75% GPU, 25% CPU などと表示されている場合、モデルの一部がVRAMから溢れてRAMに退避しています。これは性能が落ちますが、動作はします。より小さいモデルか量子化レベルの低いモデル(Q4 → Q2など)を試すか、VRAMの多いGPUに移行する必要があります。

④Ollama のログを確認する

Ollama がGPUを認識したかどうかはサービス起動時のログに出力されます。




ubuntu@linuxlab: ~
$ journalctl -u ollama -n 30 –no-pager
(systemd 環境の場合)
ollama[1234]: CUDA GPU id=0 library=/usr/lib/x86_64-linux-gnu/libcuda.so.1
ollama[1234]: name=”NVIDIA GeForce RTX 4090″ capability=8.9 total=”24.0 GiB”
(この行が出ていればGPU認識済み)
ブラウザで http://localhost:11434/api/version を開いた画面。Ollama 0.30.8 が確認できる
ブラウザで http://localhost:11434/api/version を開いた画面。Ollama 0.30.8 が確認できる

GPU認識に成功していれば CUDA GPU(NVIDIA)または ROCm GPU(AMD)の行がログに出ます。この行がなければドライバや環境変数に問題があります。

著者アイコン
著者アイコン

正直、最初はGPUが使われているかどうかが全然わかりませんでした。ollama ps を知ってからは一発で確認できるようになりました。モデルをロードした直後に必ず実行する習慣をつけておくと安心です。

まとめ

OllamaがGPUを使っているかを確認する方法を5つ紹介しました。

  • ollama ps の PROCESSOR 列が一番手軽で確実な確認方法です
  • /api/pssize_vram フィールドで VRAM 使用量も数値で確認できます
  • NVIDIA GPU 環境では watch nvidia-smi でリアルタイム監視が最も視覚的にわかりやすいです
  • GPUが使われていない原因のほとんどは、ドライバ未インストールか環境変数の設定ミスです
  • GPU を使うと CPU-only より実測で約2倍(Apple M1 Max の場合)〜10倍(NVIDIA RTX 系)の推論速度になります

Ollamaを本格的に使うなら、GPUが搭載されたVPSやクラウドサーバーを検討するのもおすすめです。

Ollamaのインストールから基本的な使い方は で解説しています。あわせてご覧ください。

コメント

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