进阶 11 分钟Ollama

Ollama 故障排查:未检测到 GPU、运行缓慢、错误 内存

您已安装 Ollama,也有性能不错的 GPU,但回答却依然很慢——这通常意味着 Ollama 未检测到 GPU,导致模型转而在 CPU 上运行。本指南逐一介绍最常见的故障(回退到 CPU、内存不足、运行缓慢、驱动冲突),并针对每种情况提供诊断命令,帮助您找出实际原因,而不是靠猜测。

作者: Marie L.·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试

#典型症状

Ollama 很少完全停止工作:更常见的是它“能用”,却运行得不好。守护进程确实在 http://localhost:11434 上监听,模型也会响应,但某个环节出了问题。识别症状,就能初步判断应排查哪一类原因。

响应非常缓慢
预期每秒能处理数十个 token,实际却只有几个:模型很可能在 CPU 上运行,GPU 未被检测到或未被使用。
GPU占用率为0%
nvidia-smi 或 rocm-smi 显示显卡在生成过程中处于空闲状态:Ollama 没有使用这张显卡。
内存不足错误
加载失败,或模型被卸载并出现 CUDA/HIP 的“out of memory”错误消息:模型本身或其上下文超出了显存容量。
更新后突然变慢
吞吐量突然大幅下降,通常指向驱动程序、Ollama 版本或 CUDA/ROCm 冲突。
部分卸载
部分层在 GPU 上运行,其余层在 CPU 上运行:这种方式可行,但比将全部层交由 GPU 处理慢得多。

#确认 GPU 确实被使用

本地 AI 套件

只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。

  • 在线空间,终身可用
  • PDF + 文件
  • 30 天内退款

在寻找解决方案之前,必须先确认一件事:Ollama 到底有没有使用 GPU?最直接的命令是 ollama ps,它会显示已加载的模型,尤其是模型驻留内存期间在 CPU 与 GPU 之间的分配情况。

终端 — 已加载模型状态
# Charger un modèle puis, dans un autre terminal, l'interroger
ollama run qwen3.5:9b "bonjour"

# Pendant que le modèle est en mémoire, vérifier la répartition
ollama ps

PROCESSOR 列是关键。“100% GPU”表示整个模型都在显卡上——这正是我们希望达到的状态。“100% CPU”则确认模型已完全回退到 CPU。“60%/40% CPU/GPU”表示部分卸载:模型无法完全放入显存(VRAM)。

i
查看 PROCESSOR 列
ollama ps n'affiche la répartition que tant qu'un modèle est chargé en mémoire. Par défaut Ollama décharge un modèle après 5 minutes d'inactivité (keep_alive) — lancez la commande juste après une génération.

为交叉验证信息,请在生成过程中使用显卡厂商的工具监控 GPU。如果使用率上升,说明 GPU 正在工作;如果始终为零,说明 Ollama 没有使用该 GPU。

终端 — 监控 GPU
# NVIDIA : rafraîchissement toutes les secondes
nvidia-smi -l 1

# AMD (ROCm)
rocm-smi

# Vue plus lisible et interactive (si installé)
nvtop

#读取 Ollama 的日志

服务器日志会明确指出加载了哪个后端,以及为何选择或排除了某个 GPU。当 ollama ps 和 nvidia-smi 的信息相互矛盾时,应以服务器日志为准。

终端 — 查看日志
# Linux (service systemd)
journalctl -u ollama -f

# macOS / lancement manuel : les logs vont sur la sortie du serveur
# Relancer le daemon en verbeux pour tout voir
OLLAMA_DEBUG=1 ollama serve

查找包含“inference compute”、“library=cuda”或“library=rocm”的日志行,以及转移到 GPU 上运行的层数(“offloaded X/Y layers to GPU”)。如果看到“no compatible GPUs were discovered”或“library=cpu”,就找到了原因:Ollama 未检测到可用的 GPU。

→
最关键的消息
“offloaded N/M layers to GPU”这一行已经说明了一切:N=M表示所有层都已卸载到GPU,状态理想;N<M表示只有部分层卸载到GPU(显存不足);N=0表示完全使用CPU。诊断时,始终从这一行入手。

#回退到 CPU 及其常见原因

当 Ollama 无法使用 GPU 时,它不会崩溃,而是会静默切换到 CPU。这种行为最令人困惑,因为表面上“一切都能正常运行”。以下是最常见的原因,按从最普通到最隐蔽的顺序列出。

  1. 01
    显存不足以支持模型
    如果模型(权重 + 上下文)超出可用 VRAM,Ollama 会将部分负载转移到 CPU,甚至全部。14B 模型在 Q4 量化下约需 9 GB,32B 模型约需 19 GB:在 12 GB 显存的显卡上,32B 模型无法完整加载。
  2. 02
    GPU驱动缺失或版本过旧
    如果没有较新的 NVIDIA 驱动程序(或 AMD 侧的 ROCm),Ollama 将检测不到任何兼容的 GPU,并回退到 CPU。这是导致“ollama gpu 未检测到”错误的第一大原因。
  3. 03
    GPU 被其他进程占用
    另一个模型、游戏、Python notebook 或另一个 Ollama 实例可能已经占满显存。nvidia-smi 会列出各个进程及其内存占用。
  4. 04
    Ollama在无GPU直通的容器中运行
    在Docker中,若不使用--gpus all(NVIDIA)或未暴露ROCm设备,容器将无法识别显卡。守护进程运行,但仅在CPU上运行。
  5. 05
    GPU 不受支持
    过于陈旧的显卡(CUDA 计算能力不足)或 AMD 显卡未在 ROCm 官方支持列表中:Ollama 主动忽略这些设备。
终端——什么在占用显存?
# Voir les processus et la mémoire GPU consommée
nvidia-smi

# Repérer d'autres instances Ollama qui tourneraient déjà
ps aux | grep ollama
!
Docker与GPU
如果主机配有 GPU,Ollama 容器却仍在 CPU 上运行,原因几乎总是没有配置 GPU 直通。请检查 --gpus all 参数,并确认主机上已安装 NVIDIA Container Toolkit。

#内存不足(out of memory)错误:如何解读和解决

出现消息「CUDA error: out of memory」(或 AMD 上的「HIP out of memory」)表示模型所需的 VRAM 超出了可用容量。两个因素会增加这一需求:模型大小和上下文窗口。降低其中一个即可解决大多数情况。

模型过大
切换到更轻量的量化格式(用 Q4_K_M 替代 Q5/Q8),或使用更小的模型。Q4 大致占用:7B≈5 GB · 14B≈9 GB · 32B≈19 GB · 70B≈40 GB。
上下文过长
较大的 num_ctx 会增加 KV 缓存的内存占用。减小上下文窗口(num_ctx)可释放大量 VRAM,尤其在大模型上效果显著。
其他进程导致显存碎片化
关闭游戏、Notebook 会话和其他模型。重启 Ollama 守护进程,以便从干净的显存状态重新开始。
残留的内存占用
先前加载且仍驻留的模型会占用 VRAM。ollama stop <modèle> 可立即将其从内存中卸载,无需等待 keep_alive 到期。
终端 — 减少内存压力
# Décharger un modèle tout de suite
ollama stop qwen3.6:35b

# Lancer avec un contexte réduit (via l'API ou un Modelfile)
# Exemple : forcer num_ctx à 4096 au lieu de la valeur par défaut
ollama run qwen3.5:9b
# puis dans le prompt interactif :
# /set parameter num_ctx 4096
→
加载前进行预估
将模型大小(取决于其量化方式)与为上下文预留的空间相加。尽量让总量低于 VRAM 总容量的约 90%:超过这一水平,就可能需要部分卸载,或遇到内存不足(OOM)。对于配有 24 GB 显存的 RTX 4090,32B Q4 模型(约 19 GB)能装入显存;70B Q4 模型(约 40 GB)则装不下。

#保持 NVIDIA/AMD 驱动程序、CUDA 和 ROCm 为最新版本

许多‘Ollama GPU未检测到’的问题通过更新驱动程序层即可解决。Ollama 内置了CUDA/ROCm库,但依赖系统驱动与硬件通信。

终端 — 检查 NVIDIA 驱动程序
# Doit afficher la version du driver et CUDA
nvidia-smi

# Si la commande échoue : le driver n'est pas installé ou pas chargé
# Vérifier que le module noyau est bien chargé (Linux)
lsmod | grep nvidia

在AMD方面,ROCm的安装要求更为严格:显卡必须出现在支持的GPU列表中,有时还需要导出变量以强制支持相近的架构(HSA_OVERRIDE_GFX_VERSION)。请首先确认rocminfo能够正确识别显卡。

终端 — 检查ROCm(AMD)
# Le GPU doit apparaître dans la liste des agents
rocminfo | grep -i gfx

# État et mémoire du GPU AMD
rocm-smi

# Forcer une architecture proche si la carte n'est pas officiellement listée
export HSA_OVERRIDE_GFX_VERSION=11.0.0
!
驱动程序更新后,请重启服务
只有在重新加载内核模块后,新驱动才会生效——最安全的方式是重启机器,然后重启服务 Ollama(sudo systemctl restart ollama)。在更新前已启动的守护进程将继续看到旧状态。

#突然变慢

原本良好的生成吞吐量如果突然下降,几乎总能找到原因。与一直回退到 CPU 运行的情况不同,突然变慢说明运行状态最近发生了变化。

新出现的部分卸载
您已增加上下文长度或加载了更大规模的模型:部分模型已切换到CPU运行。请检查ollama ps命令,并查看「offloaded N/M layers」这一行。
过热降频
GPU过热会降低其频率。nvidia-smi 可显示温度和「P-State」状态;当温度超过约83 °C时,显卡将进入降频状态。
更新 Ollama 或驱动程序
新版本中的回归问题可能导致推理变慢。更新前,请记录之前运行正常的版本(ollama --version),以便之后回退。
共享显存 / 系统内存
在Windows系统中,当显存不足时,驱动程序可能会使用系统内存(GPU共享内存),从而导致性能崩溃。应优先减小模型规模,而非任由显存溢出。
每次请求均需重新加载
keep_alive 时间过短会导致模型频繁重新加载。若连续发送请求,请增大 OLLAMA_KEEP_ALIVE 参数。
终端 — 温度与频率
# Surveiller température, conso et fréquence en continu
nvidia-smi -l 1

# Garder les modèles chargés plus longtemps (ex : 30 min)
export OLLAMA_KEEP_ALIVE=30m
sudo systemctl restart ollama

#诊断检查清单

出现问题时,请按顺序执行这些步骤:它们按问题出现的频率从高到低排列,可避免排查方向出错。

  1. 01
    1. 确认症状
    ollama ps pendant une génération : la colonne PROCESSOR indique-t-elle CPU, GPU ou un mélange ?
  2. 02
    2. 检查系统能否识别GPU
    nvidia-smi(或 rocm-smi)有响应吗?如果没有,问题出在驱动程序,而非 Ollama。
  3. 03
    3. 阅读日志
    journalctl -u ollama -f(或 OLLAMA_DEBUG=1 ollama serve):查找「library=cuda/rocm/cpu」和「offloaded N/M layers」。
  4. 04
    4. 检查可用 VRAM
    nvidia-smi:是否有其他进程占用显卡?剩余可用显存是否足以容纳模型?
  5. 05
    5. 若出现内存不足(OOM)或模型仅部分加载到 GPU,则降低负载
    采用内存占用更低的量化方案、选择更小的模型,或减小 num_ctx。使用 ollama stop 卸载不再使用的模型。
  6. 06
    6. 更新并重启
    将驱动程序和 Ollama 更新到最新版本,然后重启服务(更换驱动程序后还需重启机器)。
i
先隔离变量,再修复
黄金法则:每次只改动一项,并用 ollama ps 再次检查。同时修改驱动、上下文和模型,就无法判断究竟是哪项改动真正解决了问题,或使问题恶化。

#深入了解

一旦GPU被正确识别,该网站提供的指南可帮助您充分发挥硬件性能,并避免问题反复出现:

选择量化方案(Q4、Q5、Q8、FP16)
对抗内存错误的第一杠杆:理解质量/VRAM 权衡,以选择适合您显卡的格式。
在无 GPU(仅 CPU)的情况下本地运行 LLM
如果您的硬件不支持将计算任务交给 GPU,本指南将介绍如何仅使用 CPU 仍保持可用的体验,以及如何根据 RAM 容量选择模型。
安装 Ollama:Windows、macOS 和 Linux
重新检查守护进程和驱动程序的正确安装情况;GPU 未被检测到的根本原因往往就在这里。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。