「NVIDIAのGPUを積んでいるサーバーなのにOllamaがGPUを認識しない」
そんな悩みを抱えるインフラエンジニアは少なくない。GPUが使われていない状態では、7Bパラメータのモデルでも1トークン生成に数秒かかることがあり、実務ではとても使い物にならない。この記事では、NVIDIA CUDAとAMD ROCmそれぞれのLinux向けGPU有効化手順を実際のコマンドで解説する。ドライバのインストールからOllamaのGPU認識確認、推論速度の比較、トラブルシュート、マルチGPU設定まで一通り押さえる。
この記事のポイント
・`ollama ps` コマンドで現在のモデルがGPUを使っているか即座に確認できる
・NVIDIAはCUDA 12.x系ドライバ、AMDはROCm 6.x系が現時点でのOllama動作確認済み推奨バージョン
・GPU未認識の第一原因はドライバ未インストール・バージョン不一致・グループ権限の未設定
・マルチGPUは `CUDA_VISIBLE_DEVICES` 環境変数で使用するGPUを選択できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
OllamaがGPUを使うための仕組みとハードウェア要件
OllamaはCUDA(NVIDIA)またはROCm(AMD)のランタイムをシステムから自動検出する設計になっている。ただし「自動」とはいえ、ドライバが正しく入っていなければ起動時に静かにCPUフォールバックするだけで、エラーも警告も出さない。この無音の動作仕様が「GPUで動いていると思っていたらCPUだった」という事態を生む。対応GPUの最低ラインは次の通りだ。
NVIDIA: Compute Capability 5.0以上(Maxwell世代以降)。GTX 900シリーズ以降、RTX系は全て対象。VRAM目安として7Bモデルのq4_0量子化で約5GB、13Bモデルで約8GB必要になる。
AMD: ROCm対応GPU。RX 6000シリーズ(RDNA2)以降が実績豊富。RX 5000シリーズ(RDNA1)はGFXバージョンのオーバーライドが必要なケースがある。
Apple Silicon(M1/M2/M3)はMetal経由でGPU推論が動くため本記事の対象外だ。Linux x86_64サーバー環境を前提として読み進めてほしい。
NVIDIA CUDA環境をUbuntuで構築する手順
Ubuntu 22.04 LTS / 24.04 LTSを前提に手順を示す。OllamaはCUDA 12.x系との組み合わせで安定動作が確認されている。ステップ 1. 既存ドライバの確認と削除
クリーンな状態から始めるために、古いNVIDIAドライバが入っている場合は先に削除する。
# 既存ドライバを確認 $ dpkg -l | grep nvidia # 古いドライバをまとめて削除(入っていない場合はスキップ) $ sudo apt purge 'nvidia-*' -y $ sudo apt autoremove -y
手動でバージョンを探すより、ubuntu-driversを使って推奨ドライバを一発インストールする方が確実だ。
$ sudo apt update $ sudo apt install ubuntu-drivers-common -y $ sudo ubuntu-drivers autoinstall $ sudo reboot
ステップ 3. CUDA Toolkitのインストール
NVIDIAの公式リポジトリからCUDA 12.xをインストールする。OllamaはToolkit側のライブラリを使うため、このステップを省くとGPU推論が動かないことがある。
# Ubuntu 22.04向けCUDAリポジトリを追加 $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb $ sudo dpkg -i cuda-keyring_1.1-1_all.deb $ sudo apt update # CUDA 12.xをインストール(cudaメタパッケージで最新安定版が入る) $ sudo apt install cuda -y $ sudo reboot
$ nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 NVIDIA RTX 4090 Off | 00000000:01:00.0 Off | Off | | 30% 42C P8 20W / 450W | 120MiB / 24564MiB | 0% Default | +-----------------------------------------------------------------------------+
AMD ROCm環境をUbuntuで構築する手順
AMD GPUを使う場合はROCm(Radeon Open Compute)を導入する。RDNA2(RX 6000シリーズ)以降であれば、ROCm 6.xで安定して動く。ステップ 1. ROCmリポジトリの追加
# AMDの公式スクリプトでリポジトリとキーを追加 $ sudo apt update $ sudo apt install wget gnupg -y $ wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null # Ubuntu 22.04向けROCm 6.xリポジトリを追加 $ echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.1 jammy main" \ | sudo tee /etc/apt/sources.list.d/rocm.list $ sudo apt update
$ sudo apt install rocm-hip-sdk -y # ROCm利用にはrenderおよびvideoグループへの追加が必要 $ sudo usermod -aG render,video $USER # ROCmのパスを通す $ echo 'export PATH=$PATH:/opt/rocm/bin' >> ~/.bashrc $ source ~/.bashrc $ sudo reboot
$ rocminfo | grep -A5 "Agent 2" Agent 2 ******* Name: gfx1100 Uuid: GPU-xxxxxxxx Marketing Name: AMD Radeon RX 7900 XTX Vendor Name: AMD
RDNA1(RX 5000シリーズ)を使う場合の追加設定
RX 5000シリーズはROCmの公式サポート外だが、GFXバージョンを上書きする環境変数でOllamaに認識させられることがある。
# RX 5700 XTの場合(gfx1010相当としてOverride) $ export HSA_OVERRIDE_GFX_VERSION=10.3.0 $ ollama serve
OllamaがGPUを使っているか確認する方法
GPUを有効化した後、実際にOllamaがGPU推論を行っているかを確認する方法を3つ示す。方法 1. ollama ps で確認する(最も手軽)
モデルをロードした状態で `ollama ps` を実行すると、使用しているプロセッサが表示される。
# まずモデルを起動しておく $ ollama run llama3.3:70b-instruct-q4_0 # 別ターミナルで確認 $ ollama ps NAME ID SIZE PROCESSOR UNTIL llama3.3:70b-instruct-q4_0 abc123def456 42 GB 100% GPU 4 minutes from now
方法 2. nvidia-smi でリアルタイム確認(NVIDIA)
# 1秒ごとに更新(推論中にVRAMと使用率が上がれば正常) $ watch -n 1 nvidia-smi # より詳細なモニタリング $ nvidia-smi dmon -s u
方法 3. デバッグログで詳細を確認
# デバッグログを有効にしてOllamaを起動 $ OLLAMA_DEBUG=1 ollama serve 2>&1 | grep -i gpu
モデル選定で迷ったときはローカルLLMのモデルを比較する方法も参考にしてほしい。VRAM容量に合ったモデルと量子化タイプを選ぶことが、GPU推論を安定させる上でも重要になる。
GPU推論とCPU推論の速度差を計測する方法
「GPUで何倍速くなるか」を実際の数値で確認する方法を示す。Ollamaには簡易ベンチマーク機能がある。ollama run の --verbose オプションで速度を確認する
# --verbose で推論速度(トークン/秒)が表示される $ ollama run llama3.3:70b-instruct-q4_0 --verbose >> 東京の天気について教えてください ... (応答テキスト) ... total duration: 4.521s load duration: 138.2ms prompt eval count: 15 tokens prompt eval duration: 248ms prompt eval rate: 60.48 tokens/s eval count: 142 tokens eval duration: 4.132s eval rate: 34.37 tokens/s
CPUとGPUで同条件の比較をするには、`CUDA_VISIBLE_DEVICES=""` を設定してGPUを見えなくしたうえで同じモデルを実行すればよい。
# GPUを無効にしてCPU推論の速度を計測 $ CUDA_VISIBLE_DEVICES="" ollama run llama3.3:70b-instruct-q4_0 --verbose
GPU有効化後によくあるトラブルと対処法
トラブル 1: ollama ps に「100% CPU」と出る原因はほぼドライバかCUDA Toolkitの問題だ。次の順で確認する。
・`nvidia-smi` が通るか確認(通らない → ドライバ未インストール)
・Ollamaを再起動してみる(`systemctl restart ollama`)
・`OLLAMA_DEBUG=1 ollama serve` でGPUデバイス検出ログを確認
トラブル 2: CUDA out of memory エラー
モデルサイズがVRAMを超えている。`ollama ps` でVRAM使用量を確認し、量子化タイプを下げるか小さいモデルに切り替える。たとえば70BのフルモデルからMistralの7Bモデルに変えるだけでVRAM要件が大幅に下がる。
トラブル 3: ROCmでOllamaがGPUを認識しない
render グループと video グループへの追加が反映されていない可能性がある。`groups $USER` でグループ一覧を確認し、再ログインまたは再起動を行う。
# グループ確認 $ groups $USER tomohiro : tomohiro adm render video sudo # renderとvideoが含まれていない場合は追加してから再起動 $ sudo usermod -aG render,video $USER $ sudo reboot
`nvidia-smi` で表示されるCUDA VersionはDriverがサポートする最大バージョンであり、実際のインストール済みCUDA Toolkitバージョンとは別物だ。`nvcc --version` でToolkit側のバージョンを確認し、Driverが対応するバージョンのToolkitが入っているか照合する。
# CUDAコンパイラのバージョン確認 $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Cuda compilation tools, release 12.3, V12.3.107
OllamaをNginxリバースプロキシ経由でチームに公開している場合、GPUを有効化しても接続設定は別問題として対処が必要になる。詳しくはOllamaの本番環境セットアップガイドで本番運用の構成全体を確認してほしい。
マルチGPU構成でOllamaを設定する方法
複数のGPUを搭載したサーバーでOllamaを動かす場合、デフォルトではOllamaが利用可能なすべてのGPUを使おうとする。用途によっては特定のGPUだけに制限したい場面がある。CUDA_VISIBLE_DEVICES で使用するGPUを指定する
`CUDA_VISIBLE_DEVICES` は標準的なCUDA環境変数で、Ollamaにも有効だ。
# GPU 0番のみを使用 $ CUDA_VISIBLE_DEVICES=0 ollama serve # GPU 0番と1番を使用 $ CUDA_VISIBLE_DEVICES=0,1 ollama serve
$ sudo systemctl edit ollama
[Service] Environment="CUDA_VISIBLE_DEVICES=0"
$ sudo systemctl daemon-reload $ sudo systemctl restart ollama
70Bモデルなど単一のGPUに収まらないサイズのモデルは、Ollamaが自動的に複数のGPUに分散させる。ただしGPU間のデータ転送がボトルネックになるため、NVLinkや高速なPCIeバスを持つ構成でないと、単一高VRAMのGPU1枚の方が速いケースもある。現場での検証では、4090×2枚(NVLink無し)より3090Ti(VRAM 24GB)1枚の方が70B-q4_0のスループットが高かったという話もある。構成の最適解はモデルサイズと用途によって変わるため、実測で判断することを強く勧める。
情シス部門でチームへのローカルLLM提供を検討している場合は、社内でChatGPTが使えないときの代替手段も合わせて読んでおくと、GPU選定の判断軸が整理できる。
まとめ
OllamaのGPU有効化はドライバとランタイムさえ正しく入れれば、Ollama側の設定変更は不要だ。まず `ollama ps` でGPUが使われているかを確認し、問題があれば `OLLAMA_DEBUG=1` のログから切り分けるのが最短ルートになる。| 項目 | NVIDIA CUDA | AMD ROCm |
|---|---|---|
| 推奨バージョン | CUDA 12.x(Driver 525以上) | ROCm 6.x |
| インストール方法 | ubuntu-drivers autoinstall + cuda pkg | rocm.gpg.key追加 + rocm-hip-sdk |
| 追加設定 | 不要(ドライバ導入後は自動) | render/videoグループへの追加が必要 |
| GPU認識確認コマンド | nvidia-smi | rocminfo |
| Ollama動作確認 | ollama ps(PROCESSOR列を確認) | ollama ps(PROCESSOR列を確認) |
| GPU選択環境変数 | CUDA_VISIBLE_DEVICES=0,1 | ROCR_VISIBLE_DEVICES=0 |
GPU推論が有効になれば、CPUのみの環境と比べて十倍前後の処理速度が出る。まずは `ollama ps` でPROCESSOR列を確認し、CPUと表示されているなら今回の手順でドライバを見直してほしい。設定が決まれば、あとは社内のユースケースに合わせてモデルや量子化を選ぶだけだ。現場で長年GPUサーバーを運用してきたインフラエンジニアたちが口を揃えるのは、GPUの初期設定は「ドライバとランタイムの組み合わせを間違えない」この一点に尽きるという点だ。
GPUセットアップからローカルLLM活用まで2日間のハンズオンで習得する
ドライバ設定からモデル選定、チームへの公開まで、実機GPU環境を使ってハンズオンで体験したい方向けに「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:OllamaをHAProxyで負荷分散する方法|複数インスタンスを並列稼働させてLinuxサーバーのスループットを最大化する手順
- この記事の属するカテゴリ:ローカルLLMへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます