Eval bug: Nemotron-3-Nano-30B-A3B fails to load only in server mode.

这个报错通常出现在使用 SYCL 后端、以 server 模式(llama-server)加载模型时,底层在查询设备显存大小时直接 abort;优先排查/升级 llama.cpp 版本,而不是模型本身或参数配置。

快速结论:这个报错通常出现在使用 SYCL 后端、以 server 模式(llama-server)加载模型时,底层在查询设备显存大小时直接 abort;优先排查/升级 llama.cpp 版本,而不是模型本身或参数配置。

适用环境:Linux x86_64;IntelLLVM 2026.0.0;llama.cpp 0.4.0-dev(build 10853,commit 9dcf84e5a);GGML 后端为 SYCL;硬件为 Intel Arc Pro B70 与 Arc A750(Level-Zero / OpenCL 环境,驱动版本见 Issue 正文)。Issue 未确认 CUDA 版本、Python 版本或 PyTorch 环境,故不补写。

最快修复方案:升级到当前 master(Issue 中确认修复于 #28227 / b10944),然后重新用 server 模式加载模型。原提交者确认“It’s fixed after updating”。

注意事项:该修复针对的是 SYCL 设备显存查询路径(源自 #27968),并不能保证所有 SYCL 显存/加载类报错都由此解决;若升级后仍复现,需要按新日志另行定位。Issue 标签为 bug-unconfirmed,但评论中已由报告者确认升级后修复。

问题场景

用户在 Linux 上使用 llama.cpp(SYCL 后端)以 llama-server 模式加载 unsloth/Nemotron-3-Nano-30B-A3B-GGUF:UD-Q4_K_XL 模型。启动 server 时,server 会 spawn 一个子实例(示例端口 46843),带上 --ctx-size 16384、--cache-type-k q4_0、--cache-type-v q4_0、--flash-attn on、--n-gpu-layers 99、--split-mode none 等参数,随后在加载阶段失败。用户特别指出:同一模型用 llama-cli 加载可以正常运行,只有 server 模式会失败,因此怀疑是 bug。

报错原文

Eval bug: Nemotron-3-Nano-30B-A3B fails to load only in server mode.
/home/dogunbound/src/llama.cpp/ggml/src/ggml-sycl/ggml-sycl.cpp:6184: [ggml_backend_sycl_device_get_memory] failed to get device memory size

原因分析

从评论看,这属于 SYCL 后端的显存查询 abort,最早由 #27968 记录,并在 #28227(build b10944)中修复;而报告者使用的 build 10853 早于该修复,因此在该版本上会触发。也就是说,最可能的原因是 llama.cpp 版本过旧,缺少对 SYCL 设备显存查询失败的修复,而不是模型文件损坏或 server 参数写错。Issue 中“只有 server 模式失败、cli 模式正常”的差异,可能与两种模式下加载/初始化显存查询的路径不同有关,但讨论中没有给出更细的根因说明,这一点只能作为可能原因。

环境排查

  • 确认 llama.cpp 版本与 build 号:Issue 中为 0.4.0-dev(build 10853,commit 9dcf84e5a);修复在 b10944。#28227 的修复点。
  • 确认 GGML 后端是 SYCL(GGML_SYCL),而非 CUDA 或 Vulkan;本问题出现在 SYCL 路径。
  • 确认编译工具链:IntelLLVM 2026.0.0,Linux x86_64。
  • 确认 GPU 与运行时可被识别:用 sycl-ls 检查 Level-Zero / OpenCL 设备(Issue 中可见 Arc Pro B70 与 Arc A750)。
  • 确认驱动 / oneAPI 运行时版本是否与当前 llama.cpp master 匹配;Issue 只给出了版本字符串,未给出升级建议。
  • 如需核对模型与参数是否一致,可复用 Issue 中的 server 参数组合(ctx-size、cache-type-k/v、flash-attn、n-gpu-layers、split-mode)。

解决步骤

  1. 记录当前版本,确认为 build 10853 或更早的 SYCL 构建:运行 ./build/bin/llama-server --version 与 ./build/bin/llama-cli --version。
  2. 将 llama.cpp 源码更新到当前 master(对应修复 b10944 / #28227)。
  3. 按你原先的 SYCL 编译方式重新构建,保证 llama-server 与 llama-cli 来自同一次构建。
  4. 用原来的 server 参数重新启动,观察加载阶段是否还出现 ggml_backend_sycl_device_get_memory 报错。
  5. 若仍失败,保留完整日志并附上新的版本号、sycl-ls 输出与 --version,作为新问题进一步排查(本 Issue 未涉及这种情况)。

验证方法

升级并重建后再次以 llama-server 加载 unsloth/Nemotron-3-Nano-30B-A3B-GGUF:UD-Q4_K_XL:如果不再出现 [ggml_backend_sycl_device_get_memory] failed to get device memory size,且模型能进入正常加载/就绪状态,即可确认问题已解决。Issue 中报告者的回复是“It’s fixed after updating. thanks.”。

参考来源

ggml-org/llama.cpp #29259

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26128

发表回复

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