Misc. bug: model splitting happens regardless of –device isolation and –split-mode none

该问题发生在 llama.cpp 较新版本(约 10333)使用 Vulkan 多 GPU 运行时,即使指定了 --device 和 --split-mode none ,模型仍会被拆分到第二张显卡。优先尝试将 llama.cpp 更新到最新 git 版本,该问题在最新版本中已解决。

快速结论:该问题发生在 llama.cpp 较新版本(约 10333)使用 Vulkan 多 GPU 运行时,即使指定了 --device--split-mode none,模型仍会被拆分到第二张显卡。优先尝试将 llama.cpp 更新到最新 git 版本,该问题在最新版本中已解决。

适用环境:Linux;llama-server;Vulkan 后端;Intel A770 与 B60 双显卡(Xe2 驱动);llama.cpp 版本 10333(commit 08659901c)。

最快修复方案:更新到最新 git 版本(git pull 后重新编译)。Issue 评论确认「Issue seems solved in latest git pull」。暂无其他已验证的一步修复方案。

注意事项:最新 git 版本可能尚未包含在正式 release 中,需要自行编译;如果更新后仍复现,应提供完整 --verbose 日志以便进一步排查。

问题场景

用户运行 llama-server 加载 gpt-oss-20b-Q4_K_M.gguf 模型,启动参数中已经设置 --device VULKAN1--split-mode none,并尝试调整张量拆分比例(1,2 / 2,1 / 4,1 / 1,4),但模型仍然被拆分到两张显卡上。第二张显卡会占用约 50% 的模型体积,而 KV cache 没有明显异常。

报错原文

Misc. bug: model splitting happens regardless of --device isolation and --split-mode none

原因分析

可能原因:在该版本的 Vulkan 多设备实现中,模型张量拆分逻辑没有正确响应 --split-mode none--device 隔离约束,推测是拆分逻辑与显存预分配或默认多层调度之间存在冲突。Issue 未给出具体根因,且当前已确认在最新 git 版本中修复,因此更可能是该版本的回归(bug)而非用户配置错误。

环境排查

  • llama.cpp 版本:10333(08659901c),built with GNU 15.3.0 for Linux x86_64
  • 操作系统:Linux
  • 后端:Vulkan(MESA 警告:Xe KMD 平台为实验性支持)
  • 显卡:Intel A770 + B60,均为 Xe2 驱动
  • CPU/内存:Ryzen 5600X,16GB RAM
  • 未确认项:Python、CUDA、PyTorch 等在本 Issue 中没有涉及,无需排查

解决步骤

  1. 将 llama.cpp 仓库更新到最新 git 版本:git pull
  2. 重新编译 llama.cpp(建议先清理旧构建产物:rm -rf build 后重新 cmake/make)。
  3. 使用原来的启动参数再次启动 llama-server,重点确认 --device VULKAN1--split-mode none 是否被正确遵守。
  4. 如果仍出现拆分,请收集完整日志(含 -lv 3 输出)并重新提交 Issue。

验证方法

启动后观察 Vulkan 设备显存占用:如果第二张显卡不再出现约 50% 模型大小的占用,说明修复生效。也可在日志中检查模型各层实际分配到的设备编号,确认所有层都落在 --device 指定的 Vulkan 设备上。

参考来源

ggml-org/llama.cpp #26831

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18311

发表回复

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