Vulkan is enabled by default and can’t be disabled with OLLAMA_VULKAN=0

用户在运行 Ollama 服务时(使用 OLLAMA_VULKAN=0 ollama serve ),观察到日志中仍有 Vulkan 相关输出,误以为 Vulkan 无法被禁用。最终发现这是一个 NixOS 打包版本的特殊 bug,官方二进制版本中该环境变量工作正常。

Vulkan is enabled by default and can't be disabled with OLLAMA_VULKAN=0

Vulkan is enabled by default and can’t be disabled with OLLAMA_VULKAN=0

快速结论:该报错通常出现在用户使用 Ollama v0.12.11 或 v0.13.0 时,设置 OLLAMA_VULKAN=0 但发现 Vulkan 仍然被启用,导致系统使用集成 GPU 而非 CPU,性能下降。优先排查:确认系统使用的后端是 CUDA 而非 Vulkan,区分日志中的“GPU”字样是否指向 CUDA。

问题场景

用户在运行 Ollama 服务时(使用 OLLAMA_VULKAN=0 ollama serve),观察到日志中仍有 Vulkan 相关输出,误以为 Vulkan 无法被禁用。最终发现这是一个 NixOS 打包版本的特殊 bug,官方二进制版本中该环境变量工作正常。

报错原文

$ OLLAMA_VULKAN=0./bin/ollama serve
time=2025-11-23T11:38:41.941+01:00 level=INFO source=routes.go:1544 msg="server config" env="map[... OLLAMA_VULKAN:false ...]"
time=2025-11-23T11:38:42.308+01:00 level=INFO source=runner.go:102 msg="experimental Vulkan support disabled.  To enable, set OLLAMA_VULKAN=1"

用户看到日志显示 OLLAMA_VULKAN:false 同时有 Vulkan support disabled 的信息时,认为 Vulkan 仍在占用资源。实际日志还包含:

time=2025-11-23T11:38:42.308+01:00 level=INFO source=types.go:42 msg="inference compute" id=GPU-... library=CUDA compute=6.1 name=CUDA0 description="NVIDIA GeForce GTX 1050" ...

这表明实际使用的后端是 CUDA,而非 Vulkan。

原因分析

可能原因:用户混淆了 Vulkan 和 CUDA 后端。日志中显示 Vulkan 已被禁用(因为 OLLAMA_VULKAN=0),但 GPU 仍然被使用(通过 CUDA 后端)。用户“GPU”字样出现,误以为图像单元是 Vulkan,实际是 CUDA。对于 NixOS 打包版本,可能存在一个独立 bug,导致 Vulkan 无法通过 OLLAMA_VULKAN=0 禁用。

环境排查

  • 确认 Ollama 版本(v0.12.11 或 v0.13.0)是否为官方二进制版本。
  • 检查是否使用了 NixOS 或 nixpkgs 打包的 Ollama。
  • 确认环境变量 OLLAMA_VULKAN 是否被正确设置(在日志中查看 OLLAMA_VULKAN:false)。
  • 使用 nvidia-smi 检查 GPU 是否被占用,并确认是哪个进程在使用。
  • 检查系统是否同时有集成 GPU 和独立 GPU(如 NVIDIA GeForce GTX 1050)。

解决步骤

  1. 运行 OLLAMA_VULKAN=0 ollama serve 并检查日志,确认 inference compute 行的 library=CUDA 而不是 library=Vulkan
  2. 确认日志中有“Vulkan support disabled”信息,表示 Vulkan 已被禁用。
  3. 如果仍然怀疑 Vulkan 被使用,检查更详细的模型加载日志,查找类似 load_tensors: CUDA0 model buffer size 的输出,确认使用了 CUDA。
  4. 如果是在 NixOS 上运行且遇到问题,该 Issue 表明这是 NixOS/nixpkgs 的一个 bug,并非官方二进制的问题。建议使用官方 Linux 二进制文件,或向 NixOS 提交报告。
  5. 如果需要强制仅使用 CPU,可以尝试设置 OLLAMA_GPU_OVERHEAD=0CUDA_VISIBLE_DEVICES=""(仅针对 CUDA 禁用,不针对 Vulkan)。

验证方法

查看 service 日志,确认存在 inference compute 行显示 library=CUDA 而不是 library=Vulkan,同时 Vulkan support disabled 行正常出现。使用 nvidia-smi 查看 Ollama 进程的 GPU 占用情况,确认其使用量正常。如果之前怀疑 Vulkan 导致性能下降,对比设置 OLLAMA_VULKAN=0 前后推理速度是否有变化(预期无变化,因为 Vulkan 已被禁用)。

参考来源

ollama/ollama #13212

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 10219

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注