Ollama 0.32.14 通过省略 sm_86 CUDA 内核,取消了对 RTX 30 系列显卡的支持,导致运行时静默回退到 CPU,模型生成速度变得极其缓慢。
0.32.14 版本发生了哪些变化
新的二进制文件仅针对 7.5、8.9、10.0 和 12.0 计算架构进行构建。缺少了架构 8.6——这是 NVIDIA RTX 30 系列、A40 和 A6000 的代号。当启动器寻找匹配的内核时,由于找不到匹配项,会在 ollama ps 中报告 GPU “split”,然后进入无加速运行状态。
为什么旧的回退机制不再起作用
之前的版本提供了一个备用路径,如果主内核加载失败,则会加载 CUDA 12 库。该库仍包含 sm_86 的代码,从而允许相同的硬件运行模型。在 0.32.14 中,回退代码被无意中移除,导致启动器完全跳过 GPU,转而在主机处理器上运行。
哪些用户会受到影响
任何使用 RTX 3080、3080 Ti、3090、3090 Ti、A40、A6000 或任何其他基于计算能力 8.6 的显卡的用户都会感受到速度变慢。这种变化是无感的——没有错误消息,也不会崩溃——只是吞吐量明显下降。
如何验证你是否正在使用 CPU
- 开始生成任务,并在另一个终端运行
nvidia-smi。如果 “Memory-Used” 列保持在 0 MiB,则任务正在 CPU 上运行。 - 检查 Ollama 日志中是否包含
library=CUDA compute=8.6的行。如果缺失该行,则说明回退机制从未触发。 - 将每秒生成的 token 数与已知的 GPU 基准进行比较;在之前的版本中仅需几分钟的大型模型,现在可能需要几十分钟。
设置 CUDA_VISIBLE_DEVICES 等环境变量无法解决问题,因为缺失的内核是在编译时被省略的,而不是运行时标志。
快速修复:固定使用 0.32.13 版本
Windows
- 卸载当前的 Ollama 安装。
- 从项目的 GitHub releases 页面下载 0.32.13 安装程序。
- 运行安装程序并重启 Ollama 服务。
Linux
sudo systemctl stop ollama
# replace <package> with the 0.32.13 .deb or .rpm you downloaded
sudo dpkg -i <package> # for Debian-based
# or sudo rpm -Uvh <package> # for RPM-based
sudo systemctl start ollama
降级后,请再次进行 nvidia-smi 检查;你应该能看到非零的 VRAM 占用,并且生成速度会有显著提升。
未来版本中需要关注的内容
sm_86 的缺失似乎是构建脚本中的疏忽,而非刻意的弃用。在维护者恢复缺失的内核或重新启用 CUDA 12 回退机制之前,任何高于 0.32.13 的升级都存在同样的风险。请密切关注项目的 issue tracker,等待重新添加 8.6 内核的补丁,并在每次更新后立即测试 GPU 使用情况。
总结: 0.32.14 版本无意中禁用了 RTX 30 系列的加速。请使用 nvidia-smi 验证 GPU 活动,如果你依赖这些显卡,请回退到 0.32.13,直到缺失的内核被恢复。
