本地跑大模型時,最讓人困惑的一類問題就是:機器明明有顯卡,Ollama 卻還是主要吃 CPU,速度也慢得離譜。
先說結論,這類問題通常不是單一原因。最常見的幾類分別是:
Ollama根本沒有識別到可用 GPU- 驅動、
ROCm或CUDA環境沒裝對 Ollama服務啟動時沒有繼承正確的環境變數- 模型太大,實際已經退回到
CPU或CPU/GPU混合載入 - AMD 平台存在額外相容性問題,例如
ROCm版本、gfx代號或裝置可見性設定不對
下面按最省時間的順序排查。
1. 先確認是不是真的沒用到 GPU
最直接的方法是看:
|
|
重點看 PROCESSOR 這一欄。
100% GPU:表示模型完整跑在顯卡上100% CPU:表示完全沒用上顯卡48%/52% CPU/GPU這類結果:表示模型部分進了顯存,部分落到系統記憶體
如果你看到的是 100% CPU,後面就該重點查環境和服務設定。
如果看到的是混合載入,那不一定代表顯卡沒生效,更可能只是顯存不夠。
2. 先排除最常見的誤區:模型塞不進顯存
很多人以為只要裝了 GPU,Ollama 就一定會全顯卡推理。其實不是。
如果模型太大、上下文太長,或者機器上已經有其他模型佔著顯存,Ollama 很可能會退回到:
- 部分 GPU + 部分 CPU
- 直接
100% CPU
這時候可以先做兩個最簡單的驗證:
- 換一個更小的模型測試
例如先用4B、7B這類小模型,而不是一上來就跑更大的參數量。 - 卸載其他已載入的模型後再試
先看ollama ps,確認沒有別的模型佔著顯存。
如果小模型能上 GPU、大模型不行,問題通常就不在驅動,而在顯存容量。
3. 檢查顯卡驅動和底層環境是否可用
如果連小模型都只能跑 CPU,下一步就該看底層環境。
NVIDIA 方向
先確認驅動正常、系統能看到顯卡。常見檢查方式包括:
|
|
如果這裡都報錯,Ollama 幾乎不可能正常使用 GPU。
AMD / ROCm 方向
如果你是 AMD GPU,尤其是 ROCm 環境,重點先看:
|
|
如果這些工具都不能正常列出裝置,說明問題還在 Ollama 之前,先不要繼續折騰應用層。
對 AMD 來說,最常見的問題不是「有沒有裝驅動」,而是:
ROCm版本和系統版本不匹配- 當前 GPU 架構支援不完整
- 裝置雖然存在,但執行環境沒有正確暴露給
Ollama
4. 重啟 Ollama 服務,不要只重開終端
這是非常高頻的坑。
很多人裝完驅動、改完環境變數、補完 ROCm 之後,只是重新開一個終端,然後直接繼續 ollama run。但如果 Ollama 是以背景服務方式執行,它很可能還在用舊環境。
所以更穩的做法是:
- 完整重啟
Ollama服務 - 必要時直接重啟系統
如果你是在 Linux 上以服務方式執行,通常要確認服務進程已經重新拉起,而不是沿用之前的舊進程。
5. 檢查服務環境變數有沒有真的傳進去
這一步在 AMD ROCm 環境尤其重要。
有些機器在終端裡手動執行命令沒問題,但 Ollama 服務還是只跑 CPU,原因就是服務進程沒有拿到你在 shell 裡設定的變數。
常見需要關注的變數包括:
|
|
其中:
ROCR_VISIBLE_DEVICES用來限制或指定ROCm能看到哪些 GPUHSA_OVERRIDE_GFX_VERSION常見於某些 AMD 平台的相容性處理
如果你只是在當前終端裡臨時 export 了變數,但 Ollama 是 systemd、桌面背景服務或其他守護進程啟動的,這些變數未必會生效。
也就是說,終端裡「看起來已經設定好了」,不代表 Ollama 真的拿到了。
6. AMD 平台重點看 ROCm 相容性
從公開頁面資訊來看,這個問題對應的影片主題本身就落在 AMD Max+ 395、strix halo、AMD ROCm 這條線上。
這類環境裡,Ollama 不走 GPU,往往比 NVIDIA 平台更依賴版本匹配。
可以優先排查下面幾項:
ROCm版本是否適合當前系統和顯卡- 當前 GPU 是否屬於
ROCm支援較好的架構範圍 - 是否需要補
HSA_OVERRIDE_GFX_VERSION - 是否是舊版
Ollama或舊版底層推理庫導致相容性問題
如果你已經確認 rocminfo 正常、GPU 也能被系統識別,但 Ollama 仍然只跑 CPU,那大概率就要回到版本組合上重新檢查,而不是繼續盲目調模型參數。
7. Docker、WSL 或遠端環境要額外檢查裝置映射
如果你不是直接在裸機跑,而是在下面這些環境裡執行:
- Docker
- WSL
- 遠端容器
- 虛擬化環境
那還要多看一層:GPU 裝置有沒有真的暴露進去。
典型現象是:
- 宿主機能看到 GPU
- 容器裡的
Ollama卻只能跑CPU
這時要先確認不是 Ollama 本身的問題,而是容器或子系統根本沒拿到 GPU 存取權限。
8. 最後再看日誌,而不是一開始就亂猜
如果前面都查過了,最有效的做法不是繼續反覆重裝,而是直接看 Ollama 的啟動日誌和執行日誌。
重點看兩類資訊:
- 有沒有識別到 GPU
- 有沒有出現驅動、庫載入、裝置初始化失敗之類的報錯
只要日誌裡明確出現類似「找不到相容 GPU」或「ROCm/CUDA 初始化失敗」,排查方向就會立刻清楚很多。
排查順序
如果你只想記最短路徑,可以按這個順序來:
ollama ps看現在到底是GPU、CPU還是混合載入- 換一個更小的模型,排除顯存不夠
- 用
nvidia-smi、rocminfo、rocm-smi先確認底層環境正常 - 完整重啟
Ollama服務 - 檢查服務環境變數,尤其是 AMD 的
ROCR_VISIBLE_DEVICES、HSA_OVERRIDE_GFX_VERSION - 如果是 Docker / WSL,再檢查裝置映射
- 最後看日誌定位具體報錯
結語
Ollama 使用 CPU 而不使用 GPU,本質上通常是三類問題之一:
- GPU 根本沒有被識別
- GPU 能被識別,但執行環境沒有傳到
Ollama - GPU 在工作,但模型太大,最後還是回落到
CPU或混合記憶體
先把這三類分開,排查就會快很多。
如果你是 AMD 平台,尤其要把注意力放在 ROCm 版本、裝置可見性和相容性變數上,而不是只看 Ollama 命令本身。