返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-09-02    美好的一天,从现在开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 359|回复: 0

[转载] 【转载】Ollama 只使用核显不使用独显的解决方案

[复制链接]
发表于 2026-7-22 11:07:14 | 显示全部楼层 |阅读模式
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 核显上。


  1. # nvidia-smi 显示独显几乎空闲
  2. +-----------------------------------------------------------------------------+
  3. | NVIDIA GeForce RTX 4070 Laptop GPU    Off | 00000000:01:00.0 On  |
  4. | Memory-Usage: 240 MiB / 8188 MiB                                       |
  5. +-----------------------------------------------------------------------------+
  6. # ollama ps 显示 84% GPU,但实际是核显
  7. ollama ps
  8. NAME          ID              SIZE      PROCESSOR          UNTIL
  9. qwen3.5:9b    6488c96fa5fa    6.3 GB    16%/84% CPU/GPU    2 minutes from now
复制代码


项目详情
CPUIntel i7-13650HX
核显Intel UHD Graphics (RaptorLake-S),共享内存 ~8GB
独显NVIDIA RTX 4070 Laptop GPU,8GB VRAM,CUDA Compute 8.9
系统Windows 11
Ollamav0.30.8
CUDAv12.8 已安装

                                                                                                                              环境信息

排查过程
第一步:确认硬件是否被正确检测
查看 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_VULKANfalse禁用 Vulkan,强制 CUDA
(可选)CUDA_VISIBLE_DEVICES0仅暴露 CUDA 设备 0


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表