0.30.0 allow GPU offload for projectors on NVIDIA DGX Spark GB10

用户在 Ollama 0.30.0 或更高版本(如 v0.30.8)中运行多模态模型(例如 qwen3-VL 35B)时,系统日志显示投影仪被强制卸载到 CPU,导致视觉编码(prompt eval)速度极慢(从 12-15 秒暴增至 467 秒)。硬件平台包括 NVIDIA DGX Spark G

0.30.0 allow GPU offload for projectors on NVIDIA DGX Spark GB10

0.30.0 allow GPU offload for projectors on NVIDIA DGX Spark GB10

快速结论:Ollama 0.30.0 及以上版本在 NVIDIA DGX Spark GB10(以及 AMD Strix Halo APU 等集成 GPU)上会强制禁用多模态投影仪(projector)的 GPU 卸载,报错信息为 disabling multimodal projector offload reason=shared-memory-gpu 导致 CLIP 回退到 CPU 后端,推理速度严重下降。优先排查是否使用了集成显卡的统一内存架构,并尝试临时使用 llama-server 直接运行以恢复 GPU 卸载。

问题场景

用户在 Ollama 0.30.0 或更高版本(如 v0.30.8)中运行多模态模型(例如 qwen3-VL 35B)时,系统日志显示投影仪被强制卸载到 CPU,导致视觉编码(prompt eval)速度极慢(从 12-15 秒暴增至 467 秒)。硬件平台包括 NVIDIA DGX Spark GB10 和 AMD Strix Halo APU(Radeon 8060S)。

报错原文

disabling multimodal projector offload reason=shared-memory-gpu
clip_ctx: CLIP using CPU backend

原因分析

可能的根本原因:Ollama v0.30.0+ 中引入了 shouldDisableMMProjOffload 逻辑,该逻辑检测到 GPU 为集成显卡(gpu.Integrated 为 true)且不是 Apple Metal 时,便会无条件禁用投影仪 GPU 卸载,并输出 reason=shared-memory-gpu。该启发式规则假定“共享内存下卸载 GPU 无收益”,但在 NVIDIA DGX Spark GB10 和 AMD Strix Halo APU 等现代统一内存平台上,集成 GPU 的矩阵吞吐量远高于 CPU,导致此判断错误地降低了性能。

注意:此问题在 v0.24.0 中不存在,仅在 v0.30.0 及更高版本中出现。目前还没有可用于此场景的官方环境变量来强制启用投影仪卸载(forceNoMMProjOffload 只能强制禁用,不能强制启用)。社区正在等待相关修复(参考 PR #16703)的发布。

环境排查

  • 确认 Ollama 版本 ≥ 0.30.0
  • 确认系统日志或标准输出中是否出现 disabling multimodal projector offload reason=shared-memory-gpuCLIP using CPU backend
  • 确认显卡是否为集成显卡(Integrated GPU)或统一内存架构(例如 NVIDIA DGX Spark GB10 的集成 GPU、AMD Strix Halo APU)
  • 确认运行多模态模型(如 Qwen3-VL、LLaVA 等)时,视觉编码步骤时间异常长(例如从几十秒增加到几百秒)

解决步骤

  1. 临时绕过方案:直接使用 llama-server 运行
    由于 Ollama 后端强制禁用卸载,可以绕过 Ollama 的进程管理,手动调用其自带的 llama-server 可执行文件。请将下面的路径和 blob 替换为实际值(通常位于 /usr/local/lib/ollama/ 下):

    GGML_BACKEND_PATH=/usr/local/lib/ollama/rocm_v7_2/libggml-hip.so \
    LD_LIBRARY_PATH=/usr/local/lib/ollama:/usr/local/lib/ollama/rocm_v7_2 \
    /usr/local/lib/ollama/llama-server --model /path/to/model.blob --mmproj /path/to/mmproj.blob \
      -ngl 99 --flash-attn on -c 32768

    此命令强制将全部层和投影仪卸载到 GPU(-ngl 99),实测在 AMD Strix Halo APU 上视觉编码从 467 秒降至 12-15 秒(约 39× 加速)。

  2. 等待官方修复
    关注 PR #16703 的合并状态,该 PR 计划修复此问题,允许集成显卡(非 Metal)也能正常卸载投影仪。发布后升级到包含该修复的版本。
  3. 回退到 v0.24.0(临时方案)
    如果上述绕过不可行,可暂时降级到 v0.24.0 以避免该限制。

验证方法

运行多模态模型并输入一张图片,查看 Ollama 日志中是否不再出现 disabling multimodal projector offloadCLIP using CPU backend,并确认视觉编码(prompt eval)步骤的速率(tok/s)是否恢复到正常水平(例如从个位数提升到数百)。

参考来源

ollama/ollama #16419(Issue 包含详细数据与绕过方法)
PR #16703 – fix: allow GPU offload for projectors on integrated GPUs

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13960

发表回复

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