Eval bug: Vulkan Backend `no-kv-offload` on Qwen3-Coder-Next and Qwen3.6-35B-A3B produces gibberish output

当你在 llama.cpp 的 Vulkan 后端下对 Qwen3-Coder-Next、Qwen3.6-35B-A3B 这类 MoE 模型启用 no-kv-offload 时,模型输出会变成乱码。优先排查是否关闭了 KV Cache 的 GPU 卸载,并尝试将 KV Cache 也放到 GPU 上

快速结论:当你在 llama.cpp 的 Vulkan 后端下对 Qwen3-Coder-Next、Qwen3.6-35B-A3B 这类 MoE 模型启用 no-kv-offload 时,模型输出会变成乱码。优先排查是否关闭了 KV Cache 的 GPU 卸载,并尝试将 KV Cache 也放到 GPU 上(即移除 --no-kv-offload 参数)。

适用环境:Linux(Ubuntu 24.04.3 LTS,Kernel 6.14.0-33-generic),llama.cpp build 9205(dd7cad719),GNU 13.3.0,AMD Radeon Graphics(gfx90c,DeviceID 0x15E7),Vulkan 后端,BLAS。

最快修复方案:Issue 中尚未给出已验证的一步修复方案,但可优先尝试:不要在 Vulkan 后端下对上述 MoE 模型使用 --no-kv-offload,让 KV Cache 默认随模型一起卸载到 GPU。

注意事项:这是基于问题的复现条件和用户报告推断出的优先排查方向,尚未在 Issue 中被维护者确认为最终修复;如果显存不足,建议考虑部分卸载(例如 --no-kv-offload 改为中间档位),但需要自行验证输出质量。

问题场景

在 llama.cpp 的 llama-server 中,用户通过 Vulkan 后端加载 Qwen3.6-35B-A3B 和 Qwen3-Coder-Next 模型,并启用了 no-kv-offload(即不把 KV Cache 卸载到 GPU)。在对话中让模型生成代码(例如“Provide a quick sort in python.”),模型输出的文本变成大量无意义的乱码和重复片段,完全无法使用。

报错原文

Eval bug: Vulkan Backend `no-kv-offload` on Qwen3-Coder-Next and Qwen3.6-35B-A3B produces gibberish output

Model: Qwen-A3B-35B
Output:
User: Provide a quick sort in python.
Model:
觉得  :,った??
(快速1, (不会/)“, "一直2 No跟 line觉得/;一( .ت q ak ,曾,觉得
",一sった跟  y.ens不会, 开始 -,觉得. **还是
...

原因分析

可能原因:在 Vulkan 后端下,当 KV Cache 不卸载到 GPU(no-kv-offload)时,推理过程中 GPU 负责计算、CPU 负责 KV Cache 存储,这种跨设备的内存访问路径可能在特定模型(尤其是 Qwen3 系列的 MoE 结构)上触发数据同步或布局转换错误,导致注意力计算拿到错误的 KV 数据,从而输出乱码。目前 Issue 标记为 bug-unconfirmed,说明维护者尚未定位到具体代码位置。

环境排查

  • llama.cpp 版本:build 9205(dd7cad719)
  • 操作系统:Linux(Ubuntu 24.04.3 LTS,Kernel 6.14.0-33-generic)
  • GPU:AMD Radeon Graphics(gfx90c,DeviceID 0x15E7,RevID 0xC1)
  • 图形驱动:Mesa 26.1.0(kisak-mesa PPA)
  • 后端:Vulkan(同时启用了 BLAS)
  • 模型:Qwen3.6-35B-A3B、Qwen3-Coder-Next
  • 启动参数:--no-kv-offload(同时使用了 --jinja--mlock--no-mmap--spec-type ngram-mod 等)

解决步骤

  1. 优先尝试:移除启动参数中的 --no-kv-offload,让 KV Cache 默认与模型一起卸载到 GPU,然后重新启动 llama-server,测试相同的 prompt 是否恢复正常。
  2. 如果显存不足导致无法完全卸载,可以尝试使用部分卸载参数(例如将 --no-kv-offload 替换为中间档位,具体档位以当前 llama.cpp 版本支持的参数为准),然后观察输出质量是否改善。
  3. 如果问题仍然存在,切换到 CPU 推理(去掉 Vulkan 后端相关配置)作为对照测试,确认是否为 Vulkan 后端特有。
  4. 关注该 Issue 的后续进展,等待维护者定位并合并修复补丁;在修复前不建议在生产环境对这两种模型使用 no-kv-offload

验证方法

使用相同的 prompt(例如“Provide a quick sort in python.”)重新发起对话,检查模型输出是否为正常、可读的代码和解释文字,不再出现乱码、重复片段或中英文混杂的无意义字符。

参考来源

ggml-org/llama.cpp #23321

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19311

发表回复

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