快速结论:该报错出现在 llama-server 同时启用 --spec-type draft-mtp,ngram-mod 进行投机解码时,模型输出大段逐字代码会在 token 回滚后出现重复或缺失的代码块。优先排查两路 draft 混用与 CUDA 构建的配合问题,而不是模型文件本身。
适用环境:llama.cpp Windows CUDA 13.4 x64 预编译包(llama-b11632-bin-win-cuda-13.4-x64,llama-server),CUDA backend,RTX 3090,测试模型 Qwen3.8-27B-Q4_K_S.gguf。另有报告者在 RTX 5080 + Qwen3.5-4B Q8_0 上复现;Python、PyTorch 版本 Issue 未提供。
最快修复方案:暂无确认的一步修复方案。可优先尝试改用 b11630 及更早的可用构建,或不要同时启用 draft-mtp,ngram-mod:单独使用 draft-mtp 或 ngram-mod 均正常。
注意事项:Issue 被标记为 bug-unconfirmed,且已于 2026-10-29 关闭;报告者提到有服务端修复并将提交 PR,但正文未给出已验证的修复版本或提交号,不能据此认定某个构建已修复。-ub 32 只是复现者个人的规避手段,会使 prompt processing 约慢 3 倍,且不是确认的解决方案。
问题场景
在 Windows 上运行 llama-server(CUDA 版本),加载 Qwen3.8-27B-Q4_K_S.gguf,并使用 --spec-type draft-mtp,ngram-mod 同时启用 MTP draft 与 ngram-mod 投机解码。当要求模型逐字输出一大段代码(例如粘贴脚本后要求“给出包含修复的完整代码”)时,输出中出现代码块的重复或缺失。该问题仅在两路投机方式混用时出现,单独使用 draft-mtp 或 ngram-mod 均符合预期。
报错原文
Eval bug: Corrupted output when mixing draft-mtp and ngram-mod
The corruption is only reproducible with --spec-type draft-mtp,ngram-mod. Individually draft-mtp and ngram-mod work as expected.
The first affected build is llama-b11632-bin-win-cuda-13.4-x64, still unfixed in b11881.
b11630 is the last build that works as intended.
原因分析
根据复现者的分析,b11632 对应 #29353 的合并(引入 CUDA GDN chunked kernel)。输出损坏发生在服务端通过 recurrent snapshots 回滚 ngram-mod 的 64-token draft 中 1–3 个被拒绝的 token 之后。#29353 之后,CUDA kernel 对 64+ token 的批次只写入最终状态(ggml.h 在 n_tokens > K 时允许这样做),因此回滚时恢复的是一个从未被写入的状态,导致输出错乱。这属于可能原因层面的分析,Issue 本身未给出官方确认结论;根本修复以报告者后续 PR 为准。
环境排查
- 确认 llama.cpp 构建版本号:b11630 为最后正常版本,b11632 起出现异常,b11881 仍复现。
- 确认启动参数是否包含
--spec-type draft-mtp,ngram-mod;可分别改成只用draft-mtp或只用ngram-mod做对照。 - 确认 GGML backend 是否为 CUDA,以及 CUDA 版本是否为 13.4 x64 预编译包(原报告环境)。
- 确认显卡型号(RTX 3090 / RTX 5080)与模型量化版本,便于排除模型差异。
- 建议留意 server 回滚 ngram-mod draft 时是否出现 token 被拒绝(rejected)后紧接输出异常。
解决步骤
- 先记录当前构建版本与完整启动命令,确认确实使用了
--spec-type draft-mtp,ngram-mod。 - 临时规避:回退到 b11630(Issue 报告者确认的最后一个正常构建),或升级到包含后续服务端修复的构建(修复 PR 未在本 Issue 中给出,需自行核对发布说明)。
- 若不回退版本,将
--spec-type改为单一取值(draft-mtp或ngram-mod),避免两路混用触发回滚路径。 - 可选验证:在复现环境中设置
-ub 32观察是否不再出现损坏;该方法由复现者提出,代价是 prompt processing 约慢 3 倍,不宜作为长期方案。 - 若以上均无效,保留启动日志与可复现的最小代码提示,提交到上游 Issue 或在原 Issue 中补充信息。
验证方法
用同一模型和同一段“逐字输出大段代码”的提示重复测试:回退到 b11630 后输出应完整无重复、无缺失;单独使用 draft-mtp 或 ngram-mod 时同样应一致。若在启用混用的情况下仍出现重复或缺失代码块,则问题未解决。可同时对比多次生成结果的哈希或逐行 diff,确认代码块未被重复或截断。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


