After updating from ollama 0.9.3 gpu offloading stopped working on models larger than VRAM

用户在使用 Ollama 运行一个大于 GPU VRAM 的 LLM 模型( danielsheep/Qwen3-Coder-30B-A3B-Instruct-1M-Unsloth:UD-IQ3_XXS ,大小约 13GB)时触发。系统配置为:Windows 11、NVIDIA GeForce RT

After updating from ollama 0.9.3 gpu offloading stopped working on models larger than VRAM

After updating from ollama 0.9.3 gpu offloading stopped working on models larger than VRAM

快速结论:此问题出现在 Windows 系统上,更新 Ollama 至 0.9.3 之后的版本后,试图加载大于 VRAM(此处为 8GB RTX 4070)的模型(例如 13GB 模型)时,GPU 卸载失败,模型退化为 CPU 运行,导致推理速度极慢。优先排查是否为 Ollama 0.12.6 引入了“低 VRAM 模式”逻辑变化,或与 CUDA 驱动/运行时的兼容性有关。回退到 0.9.3 可稳定解决问题。

问题场景

用户在使用 Ollama 运行一个大于 GPU VRAM 的 LLM 模型(danielsheep/Qwen3-Coder-30B-A3B-Instruct-1M-Unsloth:UD-IQ3_XXS,大小约 13GB)时触发。系统配置为:Windows 11、NVIDIA GeForce RTX 4070(8GB VRAM)。在 Ollama 0.9.3 版本下,模型可以通过 GPU 卸载正常运行,但在升级到 0.9.3 之后的版本(如 0.12.6)时,GPU 卸载失效,模型完全在 CPU 上运行。

报错原文

虽然 Issue 中没有明确的错误消息,但日志中包含了关键线索。以下是导致问题的关键日志信息(来自 Ollama 0.12.6 失败情况):

time=2025-10-26T17:52:05.281+01:00 level=INFO source=routes.go:1605 msg="entering low vram mode" "total vram"="8.0 GiB" threshold="20.0 GiB"
time=2025-10-26T17:52:46.152+01:00 level=INFO source=server.go:676 msg="loading model" "model layers"=49 requested=-1

说明:日志的第一行显示 Ollama 进入了“low vram mode”,尽管显卡有 8GB VRAM,但系统阈值被设置为 20GB。第二行显示模型有 49 层,但没有后续 GPU 卸载的详细日志,暗示可能被强制为 CPU 运行。

原因分析

可能原因如下:

  • Ollama 0.12.6 中的低 VRAM 模式阈值问题:日志显示,Ollama 判断当前“total vram”(8GB)低于一个全局阈值(20GB),从而进入了“low vram mode”。这个模式可能是为了在小显存机器上强制 CPU 运行而设计的,但其阈值(20GB)对于 8GB VRAM 的显卡来说过于严格,导致即使模型可以部分卸载到 GPU,也被强制使用 CPU。
  • CUDA 版本或驱动兼容性:用户报告之前已使用 CUDA v13(与 CUDA 13.0 驱动一致),但在新版本中可能出现了兼容性变化。
  • 此问题与已关闭的 Issue #11676 类似,但 #11676 的解决方案(升级 CUDA 驱动)已不适用,因为用户已经在使用较新的驱动。

注意:这是一份用户报告,官方尚未确认具体原因。Issue 提及了一个相关的 PR(#12856),但未合并到主分支。可能的解决方案在 Issue 讨论中被提及为“回退到 0.9.3”。

环境排查

  • Ollama 版本:确认当前使用的 Ollama 版本是否大于 0.9.3(例如 0.12.6)。问题在 0.12.6 上复现,0.9.3 正常工作。
  • 操作系统:Windows 11
  • GPU:NVIDIA GeForce RTX 4070 Laptop GPU(8GB VRAM),CUDA 计算能力 8.9
  • CUDA 驱动版本:驱动版本 13.0(driver=13.0)
  • 模型大小:大于 VRAM 的模型,例如 13GB 的 Qwen3-Coder-30B-A3B-Instruct-1M-Unsloth:UD-IQ3_XXS
  • 系统内存:31.1GB 总内存,14.8GB 可用
  • 已确认的异常行为:Ollama 0.12.6 在大多数情况下(约 95%)加载失败,但在少数情况下(重启后,约 5%)可以正常运行(用户日志中也有一个成功案例的日志)。

解决步骤

  1. 回退到 Ollama 0.9.3 版本:用户已验证,卸载当前版本并安装 0.9.3 版本可以立即解决 GPU 卸载问题。这是目前最可靠的解决方案。
  2. 关注上游修复:查看 Ollama 的 GitHub Releases 页面,检查是否有针对“low vram mode”或 GPU 卸载的修复。Issue 中提到的 PR #12856 可能包含修复,但尚未合并。
  3. 尝试设置环境变量(推测性):由于“low vram mode”的阈值(20GB)可能存在不合理,可以尝试设置环境变量 OLLAMA_GPU_OVERHEADOLLAMA_MAX_LOADED_MODELS 来覆盖默认行为。但 此步骤未在 Issue 中验证,可优先尝试。
  4. 确认低 VRAM 模式的阈值:可以通过添加环境变量 OLLAMA_DEBUG=1OLLAMA_LOAD_TIMEOUT 来查看更多日志,确认是否始终触发“low vram mode”。
  5. 临时使用较小模型:作为变通方案,使用完全适合 8GB VRAM 的模型(例如 ≤7GB),以避免触发此问题。

验证方法

运行一个大于 VRAM 的模型,例如 ollama run danielsheep/Qwen3-Coder-30B-A3B-Instruct-1M-Unsloth:UD-IQ3_XXS。如果模型在几秒内返回结果且 GPU 利用率在任务管理器中显著增加,则说明 GPU 卸载正常工作。如果推理速度非常慢(与 CPU 速度一致)且 GPU 利用率极低,则说明问题仍未解决。

同时,检查 Ollama 日志中是否仍然出现 entering low vram modetotal vram="8.0 GiB" 但模型层数未分配到 GPU 的记录。

参考来源

ollama/ollama Issue #12781: After updating from ollama 0.9.3 gpu offloading stopped working on models larger than VRAM
ollama/ollama Issue #11676 (相关问题)

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 14959

发表回复

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