Ollama 只使用核显不使用独显的解决方案
·
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
环境信息
| 项目 | 详情 |
|---|---|
| CPU | Intel i7-13650HX |
| 核显 | Intel UHD Graphics (RaptorLake-S),共享内存 ~8GB |
| 独显 | NVIDIA RTX 4070 Laptop GPU,8GB VRAM,CUDA Compute 8.9 |
| 系统 | Windows 11 |
| Ollama | v0.30.8 |
| CUDA | v12.8 已安装 |
排查过程
第一步:确认硬件是否被正确检测
查看 Ollama 服务日志,关键文件路径:
%LOCALAPPDATA%\ollama\server.log
日志开头 GPU 发现阶段显示:
"discovering available GPUs..."
# Vulkan 探测到 RTX 4070,但被标记为"集成显卡"并丢弃!
"dropping integrated GPU; to enable, set OLLAMA_IGPU_ENABLE=1"
id=1 library=Vulkan name=Vulkan1
description="NVIDIA GeForce RTX 4070 Laptop GPU"
# 只剩下 Intel 核显被 Vulkan 接受
"inference compute"
id=0 library=Vulkan name=Vulkan0
description="Intel(R) RaptorLake-S Mobile Graphics Controller"
# CUDA 其实也检测到了 RTX 4070
"inference compute"
id=0 library=CUDA compute=8.9 name=CUDA0
description="NVIDIA GeForce RTX 4070 Laptop GPU"
# 但 Ollama 还是选了 Vulkan 后端,且只有 1 张可用卡(核显)
"selecting GPU backend for llama-server model"
library=Vulkan gpu_count=1 available_gpu_count=2
到这里问题就定位了:Ollama 选了 Vulkan 后端,而 Vulkan 把 RTX 4070 误判为"核显"丢弃了。 最终只有 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 4070 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')
或者手动在环境变量中添加这个环境变量。
重启 Ollama 后,日志变为:
"inference compute"
id=0 library=CUDA compute=8.9 name=CUDA0
description="NVIDIA GeForce RTX 4070 Laptop GPU"
"selecting GPU backend for llama-server model"
library=CUDA gpu_count=1
最后模型完全跑在 RTX 4070 上,推理速度恢复正常。
总结
- 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 |
更多推荐


所有评论(0)