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



![RuntimeError: shape '[32, 64, 576]' is invalid for input of size 1343488](https://www.chat-gpts.plus/wp-content/uploads/2026/07/48896-f8250d36-768x403.jpg)