「ローカルLLMって、GPUがないと使い物にならないの?」——Ollamaを触り始めると、誰もが一度はこの疑問にぶつかります。結論から言うと、GPUを使うと同じモデルでも2〜3倍速く回答が生成されます。ただし「CPUだと全く使えない」わけではない、というのが実際に計測して分かったことでした。
本記事では、Apple M1 Max(32GB)上のOllama 0.30.8で、GPU(Metal加速)とCPU-onlyモードの推論速度を実際に計測しました。qwen2.5:0.5b・qwen3:0.6b・llama3.2:1b・gemma3:1bの4モデルを、それぞれGPUとCPU-onlyで各3回ずつ実測した生データを数値で示します。
すべての数字は POST /api/generate のレスポンスに含まれる eval_count と eval_duration から計算した実測値です。「GPUなしのVPSで動かすとどうなるのか」という視点にも、実際のVPS料金データを取得して触れます。
この記事のポイント
- GPU(Metal)があると、CPU-onlyより約2.1〜3.2倍の推論速度が出た(4モデル実測)
- Apple M1 MaxでGPUモード最速 257.6 tok/s(qwen3:0.6b)、CPU-onlyでも最速 111.9 tok/s を実測
- 速度差が最も大きかったのは llama3.2:1b(Q8_0・1.2B)で 3.19倍。モデルが大きいほど差が広がる傾向
- CPU-onlyへの切り替えは
num_gpu: 0オプション、またはOLLAMA_NUM_GPU=0で可能 - GPUなしのVPS(例: Vultr 1GB $5/月)でも0.5B〜1Bの小型モデルなら動くが、GPU付きクラウドは $43/月〜
GPUとCPUで推論速度が変わる理由
LLM(大規模言語モデル=大量の文章で学習させたAIモデル)の推論は、行列演算の塊です。1トークン生成するたびに、数億〜数十億個のパラメータに対して乗算・加算が走ります。
CPUは少数の高性能コアで逐次的に計算するのに対し、GPUは数千〜数万の小さなコアで膨大な行列演算を一気に並列処理します。LLMの推論はこの並列性と相性が良いため、同じモデルでもGPUとCPUで速度が大きく変わるわけです。
Apple Silicon(M1/M2/M3)の場合、CPUとGPU・Neural Engineが同一チップ上にあり、メモリも共有しています(Unified Memory=CPUとGPUが同じメモリを使う仕組み)。そのためNVIDIA GPUのように「モデルをVRAMに転送する」手間がなく、OllamaはMetal(AppleのGPU描画・演算フレームワーク)経由で自動的にGPUを使います。
注意:本記事の計測環境について
本記事の実測はmacOS(Apple M1 Max)上で行っています。Ubuntu Linuxで使う場合のGPUバックエンドはCUDA(NVIDIA)またはROCm(AMD)です。MetalのUnified Memory特性の影響があるため、NVIDIA GPU環境とは数値が異なる場合があります。一方で「GPUとCPUで何倍違うか」という傾向はどの環境でも共通して見られます。
実測環境と計測方法
以下の環境で実測しました。ハードウェアの情報は sysctl と system_profiler で実際に確認した値です。
| 項目 | 詳細 |
|---|---|
| ハードウェア | Apple M1 Max(MacBookPro18,2)/ 10コア(高性能8+高効率2) |
| メモリ | 32GB Unified Memory |
| OS | macOS 15.5(ビルド 24F74) |
| Ollamaバージョン | 0.30.8 |
| GPUバックエンド | Metal(Apple GPU加速・デフォルト) |
| CPU-onlyモード | options.num_gpu: 0 をAPIリクエストで指定 |
| 計測モデル | qwen2.5:0.5b / qwen3:0.6b / llama3.2:1b / gemma3:1b |
| 計測方法 | Generate APIの eval_count ÷ eval_duration から tok/s を算出 |
| 計測回数 | 各モード ウォームアップ1回+計測3回、平均値を採用(2026-06-15) |
まずローカルでOllamaが本当に動いているか、APIエンドポイントをブラウザで叩いて確認しました。/api/tags はインストール済みモデルの一覧を返します。

Ollama APIで推論速度を計測する方法
Ollamaの /api/generate エンドポイントは、レスポンスに推論の詳細な時間情報を含めて返します。これを使うと、正確なトークン生成速度(tok/s)が計算できます。
-d ‘{“model”:”qwen3:0.6b”,”prompt”:”Explain what the Linux kernel is.”,”stream”:false}’ \
| python3 -c “import sys,json; d=json.load(sys.stdin); \
print(f\”{d[‘eval_count’]/(d[‘eval_duration’]/1e9):.1f} tok/s\”)”
257.6 tok/s
eval_count が生成したトークン数、eval_duration(ナノ秒)を秒に変換して割ると tok/s が求まります。Ollamaが返す公式の計測値なので、ストップウォッチで測るより正確です。
CPU-onlyモードに切り替えるには
GPU加速を無効にしてCPU-onlyで動かすには、APIリクエストの options に num_gpu: 0 を指定します。num_gpu は「モデルの何レイヤーをGPUに載せるか」を表す値で、0にすると全レイヤーがCPU側で動きます。
-d ‘{“model”:”qwen3:0.6b”,”prompt”:”Explain what the Linux kernel is.”,
“stream”:false,”options”:{“num_gpu”:0}}’ \
| python3 -c “import sys,json; d=json.load(sys.stdin); \
print(f\”{d[‘eval_count’]/(d[‘eval_duration’]/1e9):.1f} tok/s\”)”
111.9 tok/s
環境変数で永続的に切り替えることもできます。ollama serve を起動する前に設定しておくと、すべての推論がCPU-onlyになります。
(以降の推論はすべてCPU-onlyで実行される)
本当にCPUに切り替わっているか確認する
「num_gpu: 0 を付けたつもりでも、実はGPUで動いていた」ということがないように、ollama ps で確認できます。これはロード中のモデルがどのプロセッサで動いているかを表示するコマンドです。同じ qwen2.5:0.5b で実際に切り替わる様子を撮りました。
$ ollama ps
NAME ID SIZE PROCESSOR CONTEXT
qwen2.5:0.5b a8b0c5157701 479 MB 100% GPU 4096
# num_gpu=0 でロードした直後
$ ollama ps
NAME ID SIZE PROCESSOR CONTEXT
qwen2.5:0.5b a8b0c5157701 628 MB 100% CPU 4096
PROCESSOR 列が 100% GPU から 100% CPU に変わっているのが分かります。これでCPU-onlyモードが本当に効いていると確認できました。ちなみにCPUモードだとメモリ使用量(SIZE)が 479MB → 628MB と増えていますが、これはGPU側の最適化が効かなくなるためです。
実測結果:GPU vs CPU で出た速度差
4モデルそれぞれをGPU(Metal)とCPU-only(num_gpu: 0)で各3回計測し、平均を取った結果です。まずはハイライトから。

最速はGPUモードの qwen3:0.6b で 257.6 tok/s、同じモデルのCPU-onlyは 111.9 tok/s でした。一方、速度差そのものが最も大きかったのは llama3.2:1b の 3.19倍です。下の端末ログは、実際に打ったコマンドと4モデルの結果をまとめたものです。

モデルごとの差をグラフにすると、GPU(色つきの棒)とCPU-only(灰色の棒)の差が一目で分かります。

数値を表でも整理しておきます。平均値の横の括弧は3回の最小〜最大です。

| モデル | パラメータ / 量子化 | GPU (tok/s) | CPU (tok/s) | 速度比 |
|---|---|---|---|---|
| llama3.2:1b | 1.2B / Q8_0 | 186.9 | 58.5 | 3.19× |
| gemma3:1b | 999.89M / Q4_K_M | 147.5 | 60.6 | 2.43× |
| qwen3:0.6b | 751.63M / Q4_K_M | 257.6 | 111.9 | 2.30× |
| qwen2.5:0.5b | 494.03M / Q4_K_M | 230.6 | 110.0 | 2.10× |
面白い結果が出ました。速度差が最も大きかったのは llama3.2:1b の3.19倍です。このモデルは4つの中で唯一 Q8_0(8ビット量子化)で、パラメータ数も1.2Bと最大。行列演算の量が多いほど、GPUの並列処理の恩恵が大きくなるという仕組みどおりの結果です。
逆に最も差が小さかったのは qwen2.5:0.5b の2.10倍でした。0.5B〜0.6Bクラスでも、Q4_K_M(4ビット量子化)で計算量が少ないモデルは、CPUでもそれなりに速く回るためGPUとの差が縮まります。
実測で分かったこと
- GPU(Metal)の推論速度は 147.5〜257.6 tok/s、CPU-onlyは 58.5〜111.9 tok/s の範囲だった
- 速度比(GPU/CPU)は 2.10〜3.19倍。「3〜4倍」というより「2〜3倍」が実際の体感に近い
- モデルが大きく・量子化が緩い(Q8_0)ほどGPUの恩恵が大きい
- 0.5B〜1Bの小型モデルなら、CPU-onlyでも58 tok/s以上は出るので会話自体は成立する
GPUは速いだけでなく「安定」している
もう一つ印象的だったのが、計測値のブレ(変動幅)の小ささです。例えば gemma3:1b のGPUモードは3回とも 147.3〜147.7 tok/s とほぼ一定でしたが、CPU-onlyは 44.8〜69.4 tok/s と大きく揺れました。llama3.2:1b のCPUも 50.0〜66.5 tok/s とブレています。
CPU-onlyモードが役に立つ場面
「GPUが常に正解」かというと、そうでもありません。CPU-onlyに切り替えると便利なケースがあります。
①GPUメモリ(VRAM)が足りない場合
NVIDIA GPU環境で大きなモデルを動かすとき、VRAMが不足すると推論が自動でCPU・システムRAMにあふれ出します(オフロード)。このとき中途半端にGPUとCPUをまたぐより、num_gpu でGPUに載せるレイヤー数を明示的にコントロールしたほうが安定することがあります。GPUレイヤー数の調整はで詳しく解説しています。
②GPUを別の用途と取り合う場合
画像生成(Stable Diffusion等)やゲームと並行してOllamaを動かす場合、GPUの取り合いになります。そんなときは OLLAMA_NUM_GPU=0 でOllamaをCPU側に逃がすと、他のGPUタスクへの影響を抑えられます。今回の実測でも、0.5B〜1BモデルのCPU推論は58 tok/s以上出ていたので、軽い用途なら十分実用範囲です。
GPUなしのUbuntu/VPSで動かすとどうなるか
VultrやDigitalOceanの一般的なVPS(数vCPU・数GB RAM)にはGPUが付いていません。実際にそういう「GPUなし環境」がどんなものか、Ubuntu 24.04の公式Dockerイメージで確認しました。nvidia-smi(NVIDIA GPUの状態表示コマンド)を叩いてみます。
Linux 5.10.76-linuxkit x86_64
nvidia-smi: not found (GPUなし環境)
5
このようなGPUなし環境では、OllamaはCPU-onlyで動きます。OllamaのLinux向け公式インストールスクリプトはCPU環境でもそのまま動作し、実際に取得してみると 15,902バイトのシェルスクリプトでした。
15902
$ head -2 /tmp/i.sh
#!/bin/sh
# This script installs Ollama on Linux and macOS.
では、そのGPUなしCPUの基礎性能はどのくらいか。同じ ubuntu:24.04 コンテナで sysbench(定番のCPU/メモリベンチマークツール)を3回回しました。

events per second: 522.45 (run1)
events per second: 523.38 (run2)
events per second: 521.19 (run3)
平均 522.3 events/sec(最小521.2〜最大523.4)でした。これはDocker仮想環境上の参考値ですが、実際のVPSではプランによってこの値が上下します。CPUの基礎性能が高いほど、ローカルLLMの推論も速くなります。VPSのCPU性能を実測ベンチで比較した記事はにまとめています。
VPSでの体感速度について
今回のCPU実測はApple M1 Maxという高性能チップ上の値です。一般的なVPS(共有vCPU)のCPU性能はこれより低いことが多く、同じCPU-onlyでもtok/sはさらに落ちる傾向があります。VPSでローカルLLMを快適に動かしたいなら、GPU付きインスタンスを検討する価値があります。
GPU付きクラウドVPSの料金(実データ)
「結局、GPUを使うにはいくらかかるのか」を確認するため、Vultrの公式API(https://api.vultr.com/v2/plans)から通常VPSとクラウドGPUプランの実料金を取得しました(2026-06-15時点)。

| プラン | 種別 | GPU / VRAM | vCPU / RAM | 月額 |
|---|---|---|---|---|
| vc2-1c-1gb | 通常(GPUなし) | — | 1 / 1GB | $5 |
| vc2-2c-2gb | 通常(GPUなし) | — | 2 / 2GB | $15 |
| vcg-a16-2c-8g-2vram | クラウドGPU | NVIDIA A16 / 2GB | 2 / 8GB | $43 |
| vcg-a16-2c-16g-4vram | クラウドGPU | NVIDIA A16 / 4GB | 2 / 16GB | $86 |
| vcg-a16-3c-32g-8vram | クラウドGPU | NVIDIA A16 / 8GB | 3 / 32GB | $172 |
GPUなしの通常VPSは $5/月〜で、学習や小型モデルのお試しには十分です。一方、GPUを使いたいなら最安のクラウドGPU(NVIDIA A16・VRAM 2GB)が $43/月〜。VRAMが2GBあれば0.5B〜1Bの小型モデルは余裕で載りますし、本記事で見たような2〜3倍の速度向上が期待できます。
どう使い分ければいいか
今回の実測を踏まえると、用途ごとの選び方はこうなります。
| 用途 | おすすめ | 理由 |
|---|---|---|
| 手元で学習・お試し | ローカルのGPU or CPU | 0.5B〜1Bなら手持ちのMac/PCでCPUでも58 tok/s以上は出る |
| 速度・安定性を重視 | GPU(Metal/CUDA) | 2〜3倍速く、計測値のブレも小さい |
| VPSで小型モデルを常駐 | 通常VPS($5〜) | 小型モデルならGPUなしでも動く。コスト最優先 |
| VPSで本格運用・大型モデル | GPU付きクラウド($43〜) | 速度・VRAM容量とも有利。複数ユーザーやAPI公開向き |
Ollamaの基本的なインストールや使い方からおさらいしたい方はを、APIの詳しい使い方はも参考にしてください。
まとめ
Apple M1 MaxでOllama 0.30.8を使い、GPU(Metal加速)とCPU-onlyの推論速度を4モデルで実測比較しました。
- GPUはCPU-onlyより約2.1〜3.2倍速かった(最大は llama3.2:1b の3.19倍)
- GPU最速は qwen3:0.6b の257.6 tok/s、CPU-onlyでも最速111.9 tok/sは出た
- モデルが大きく・量子化が緩いほどGPUの恩恵が大きい
- CPU-onlyは num_gpu: 0 または OLLAMA_NUM_GPU=0 で設定でき、ollama ps で切替を確認できる
- GPUなしVPS($5〜)でも小型モデルは動くが、本格運用ならGPU付きクラウド($43〜)が現実的
まずは手元の環境でOllamaを動かして体感速度を確かめ、物足りなくなったらGPU環境やクラウドGPUへの移行を検討してみてください。GPUなしのVPSで始めたい方は、まず安価な通常プランで試すのがおすすめです。



コメント