|
Ollama 只使用核显不使用独显的解决方案
转载作者:夏月华
不想看过程可以直接跳转至解决方案部分。
up主在使用Ollama 运行 qwen3.5:9b(Q4_K_M 量化)时,推理速度仅约 1.94 t/s,而正常情况下 RTX 4070 跑 9B 模型应该达到 30-50+ t/s。
打开任务管理器或 nvidia-smi 查看,发现 NVIDIA 独显 VRAM 占用几乎为 0,模型完全跑在了 Intel 核显上。
- # nvidia-smi 显示独显几乎空闲
- +-----------------------------------------------------------------------------+
- | NVIDIA GeForce RTX 4070 Laptop GPU Off | 00000000:01:00.0 On |
- | Memory-Usage: 240 MiB / 8188 MiB |
- +-----------------------------------------------------------------------------+
- # ollama ps 显示 84% GPU,但实际是核显
- ollama ps
- NAME ID SIZE PROCESSOR UNTIL
- qwen3.5:9b 6488c96fa5fa 6.3 GB 16%/84% CPU/GPU 2 minutes from now
复制代码
环境信息
排查过程
第一步:确认硬件是否被正确检测
查看 Ollama 服务日志,关键文件路径:
%LOCALAPPDATA%\ollama\server.log
日志开头 GPU 发现阶段显示:
到这里问题就定位了:Ollama 选了 Vulkan 后端,而 Vulkan 把 RTX 5070Ti 误判为”核显”丢弃了。 最终只有 Intel UHD 在跑。这个问题应该会在笔记本电脑环境中经常发生。
第二步:确认是谁启用了 Vulkan
日志第 1 行 server config 中:
OLLAMA_VULKAN:true
检查系统环境变量,三个级别都没有设置:
[System.Environment]::GetEnvironmentVariable('OLLAMA_VULKAN', 'User') # 空
[System.Environment]::GetEnvironmentVariable('OLLAMA_VULKAN', 'Machine') # 空
[System.Environment]::GetEnvironmentVariable('OLLAMA_VULKAN', 'Process') # 空
结论:OLLAMA_VULKAN=true 是 Ollama 0.30.8 的内部默认值。 新版 Ollama 默认启用 Vulkan 支持,但在笔记本双显卡场景下,Vulkan 的 GPU 分类逻辑存在缺陷。
根因分析
整个问题链:
Ollama 0.30.8 默认 OLLAMA_VULKAN=true
↓
Vulkan 后端探测 GPU
↓
RTX 5070Ti Laptop GPU 被 Vulkan 误判为 "integrated GPU"
↓
触发 "dropping integrated GPU" 逻辑 → RTX 4070 被丢弃
↓
仅剩 Intel 核显可用
↓
Ollama 选择 Vulkan 后端 + 1 张 GPU(核显)
↓
qwen3.5:9b 完全跑在 Intel 核显上 → ~1.94 t/s
为什么 CUDA 明明检测到了 RTX 4070 却不选?
Ollama 在多后端可用时,Vulkan 后端优先级高于 CUDA。既然 Vulkan 已经”可用”(虽然只剩核显),就不会回退到 CUDA。
解决方案:禁用 Vulkan,强制 CUDA
添加系统环境变量,覆盖 Ollama 内部默认值:
变量名: OLLAMA_VULKAN
变量值: false
PowerShell:
[System.Environment]::SetEnvironmentVariable('OLLAMA_VULKAN', 'false', 'User')
或者手动在环境变量中添加这个环境变量。
win+r运行窗口执行sysdm.cpl
切换高级选项卡,点击环境变量
然后新建这两个变量,然后配置对应的值,按确定即可
重启 Ollama 后,日志变为:
最后模型完全跑在 RTX 5070Ti 上,推理速度恢复正常。
总结
Ollama 0.30.x 默认 OLLAMA_VULKAN=true,笔记本双显卡场景下 Vulkan 可能误判独显为核显
最简单的修复:设 OLLAMA_VULKAN=false,让 Ollama 走 CUDA
排查关键日志:%LOCALAPPDATA%\ollama\server.log 中的 "selecting GPU backend" 和 "dropping integrated GPU"
笔记本独显跑 CUDA 永远比核显跑 Vulkan 快得多
环境变量汇总(修复后):
| 变量名 | 值 | 作用 | | OLLAMA_VULKAN | false | 禁用 Vulkan,强制 CUDA | | (可选)CUDA_VISIBLE_DEVICES | 0 | 仅暴露 CUDA 设备 0 |
|