离线模型加载到Ollama后无法使用GPU的驱动兼容性检查与配置项修改

文章导读
把离线模型加载进 Ollama 后,模型能跑但只走 CPU,GPU 不参与计算,这类问题通常集中在三个环节:Ollama 是否看到 GPU、底层驱动是否被运行时识别、以及启动服务时是否保留了 GPU 相关配置。下面按排查顺序说明检查和修改方法,每一步都给出可执行命令和验证动作。
📋 目录
  1. 壹 确认 Ollama 是否看到了 GPU
  2. 贰 驱动版本与 Ollama 的 CUDA 需求是否匹配
  3. 叁 需要检查的配置项与服务启动方式
  4. 肆 验证修改是否生效
  5. 伍 常见问题
A A

把离线模型加载进 Ollama 后,模型能跑但只走 CPU,GPU 不参与计算,这类问题通常集中在三个环节:Ollama 是否看到 GPU、底层驱动是否被运行时识别、以及启动服务时是否保留了 GPU 相关配置。下面按排查顺序说明检查和修改方法,每一步都给出可执行命令和验证动作。

离线模型在 Ollama 中无法使用 GPU,先看 GPU 是否被 Ollama 识别,再看驱动和 CUDA 运行时是否匹配,最后检查服务启动方式。多数情况是 Ollama 服务本身没有访问 GPU 设备,或驱动版本与 Ollama 依赖的 CUDA 版本不兼容。按顺序执行本文的识别、驱动核对、配置修改和日志验证即可判断故障点。

确认 Ollama 是否看到了 GPU

先用最简单的方式确认 GPU 设备是否被 Ollama 检测到。在终端执行:

ollama serve `--debug` 2>&1 | grep -i "gpu"

或者运行一个模型并观察日志:

ollama run llama3 `--verbose`

如果在终端或日志中出现 no GPU、cuda unavailable 或 gpu not found,说明 Ollama 没有找到设备。这时先检查系统设备可见性:

nvidia-smi
ls /dev/nvidia*

如果 nvidia-smi 正常显示显卡和驱动版本,但 /dev/nvidia* 缺失,通常是容器权限或 udev 规则未配置。如果 nvidia-smi 本身报错,则问题在驱动层,先修复驱动。

驱动版本与 Ollama 的 CUDA 需求是否匹配

Ollama 使用 CUDA 访问 NVIDIA GPU,但 Ollama 内置的是特定版本 CUDA 运行时,不依赖系统里完整安装 CUDA Toolkit,而是要求 NVIDIA 驱动的接口兼容。通常要求驱动中的 CUDA 版本不低于 Ollama 所依赖的最低版本。先看驱动支持的最高 CUDA 版本:

nvidia-smi | grep "CUDA Version"

如果驱动太老,比如显示 CUDA 10.x,而 Ollama 需要 CUDA 12.x,就可能无法加载 GPU。建议把驱动升级到较新的稳定版,但不要单独装 CUDA Toolkit,因为 Ollama 自带运行时,避免路径冲突。也可以查看当前 Ollama 日志中的具体报错。常见的报错信息是 CUDA error: no kernel image is available for execution on the device,这表示驱动支持的计算能力低于模型编译目标,此时升级驱动是首选。

离线模型加载到Ollama后无法使用GPU的驱动兼容性检查与配置项修改

需要检查的配置项与服务启动方式

如果驱动正常、Ollama 也识别到 GPU,但依然跑 CPU,可能属于配置问题。先确认服务环境变量。Ollama 读取 CUDA_VISIBLE_DEVICES 来指定可见的 GPU 设备。有时服务由 systemd 启动,环境变量没有加载,导致无法使用 GPU。

检查服务文件:

systemctl cat ollama

在 [Service] 部分加入:

Environment="CUDA_VISIBLE_DEVICES=0"

然后重载并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama

如果是手动启动,直接在命令行指定环境变量运行:

CUDA_VISIBLE_DEVICES=0 ollama serve

也可以在模型加载前设置 OLLAMA_GPU_OVERHEAD 或 OLLAMA_MAX_LOADED_MODELS,但这些参数不一定适用于所有版本,需要结合 Ollama 版本确认。更通用的是通过日志观察实际分配情况:

离线模型加载到Ollama后无法使用GPU的驱动兼容性检查与配置项修改
ollama serve `--debug` 2>&1 | tee ollama-debug.log

搜索日志中与 gpu、cuda 相关的行,确认是否走了 CUDA 路径。

验证修改是否生效

重启 Ollama 后,用以下命令验证 GPU 是否被模型使用:

ollama run llama3 `--verbose`

看输出中是否出现 eval time 和 sample time,并且模型加载阶段显示 GPU。也可以用 nvidia-smi 在运行模型时观察进程:

watch -n 1 nvidia-smi

如果看到 ollama_runner 或 llama 进程占用显存,说明 GPU 已经生效。如果显存没有变化,继续看 Ollama 日志中的具体报错,比如缺少 libcuda.so 或者 nvidia-smi 路径没有找到。

常见问题

驱动安装正常但 Ollama 仍看不到 GPU

检查是否使用容器运行 Ollama,容器需要挂载 NVIDIA 设备并允许访问宿主机驱动。通常在启动容器时增加 `--gpus` all 参数。如果宿主机直接运行,检查 /dev/nvidia-uvm 是否存在,可通过命令 sudo modprobe nvidia-uvm 加载内核模块。

如何确认 Ollama 版本是否支持目标 GPU

Ollama 对不同架构的支持随版本更新变化,一般较新的版本对老显卡支持更好。可以查看 Ollama 的 release 说明,但这里不依赖外部文档,直接跑一个轻量模型测试。如果也失败,多半是驱动或设备访问问题。