快速结论:该报错通常发生在 llama-server 启用 MTP 草稿模型(--spec-type draft-mtp)做投机解码、且开启 Flash-Attention(-fa on)时:draft 图传入 FA 的查询头维度是 2048/4096,而内核期望 256,于是触发维度断言崩溃。优先排查 MTP 草稿路径与 FA 的兼容性。
适用环境:Issue 已确认:llama.cpp 0.5.0-dev(build 1,commit cd74ef6),IntelLLVM 2026.0.0,Linux x86_64;后端为 SYCL(交叉验证的 Vulkan Issue #29418 也有相同表现);硬件为 Ryzen 9700X、Intel Arc B580 12GB(TP=1 与 TP=2 均复现);模型为 gemma-4-31B-it-qat-GGUF:UD-Q4_K_XL + MTP draft mtp-gemma-4-31B-it.gguf。Python 与 CUDA 版本在 Issue 中没有记录。
最快修复方案:暂无确认的一步修复方案。Issue 中已验证的对照结论是:关闭 MTP(不使用 --spec-type draft-mtp)时不再崩溃,可作为规避手段。
注意事项:关闭 MTP 会失去投机解码带来的加速;Issue 标签为 bug-unconfirmed,根因分析来自用户自行提交的报告(含借助外部工具的分析),未由维护者确认。根因被定位在 MTP draft 图构建前端,因此单纯更换后端(SYCL/Vulkan)、量化(q8_0/f16/bf16)、上下文大小或单卡/多卡都不能规避。
问题场景
用户在 Linux 上运行 llama-server,加载 unsloth/gemma-4-31B-it-qat-GGUF:UD-Q4_K_XL 主模型和 mtp-gemma-4-31B-it.gguf 草稿模型,同时开启 --spec-type draft-mtp --spec-draft-n-max 4 与 -fa on。Prompt 处理正常,但在生成阶段(示例中 task 0、n_gen = 159 附近)进程收到 SIGABRT 退出。用户反馈在读取较大源文件、或目标模型拒绝全部草稿候选(accepted 0/4 draft tokens)后重新生成草稿时触发。
报错原文
ggml/src/ggml-sycl/fattn.cpp:318: Not support Flash-Attention
#4 ggml_sycl_flash_attn_ext(...) from libggml-sycl.so.0
#13 common_speculative_impl_draft_mtp::draft(...) from libllama-common.so.0
#14 common_speculative_draft(...) from libllama-common.so.0
Vulkan 后端(Issue #29418)的同类报错:
ggml-vulkan.cpp:8060: GGML_ASSERT(neq0 == HSK) failed
neq0 = 2048, HSK = 256 // TP=2
neq0 = 4096, HSK = 256 // 单卡
原因分析
从 Issue 中的复现矩阵看,崩溃与后端、量化、上下文大小、单卡/多卡都无关,共同点是启用了 MTP。可能原因是:MTP draft 图在构建时传给 Flash-Attention 的查询头维度(q->ne[0],即 neq0)为 2048(TP=2)或 4096(单卡),而 FA 内核期望的头维度 HSK 为 256,两者不匹配,导致 SYCL 路径直接判定“不支持 Flash-Attention”,Vulkan 路径则触发 GGML_ASSERT(neq0 == HSK)。触发点位于 common_speculative_impl_draft_mtp::draft(),发生在目标模型拒绝全部草稿候选、重新发起 draft decode 时。该定位目前是用户侧分析,尚待维护者确认。
环境排查
- 确认 llama.cpp 构建版本与提交(Issue 为 0.5.0-dev build 1,commit cd74ef6),并确认是否为自己编译。
- 确认后端:SYCL 与 Vulkan 均可复现,重点不在后端选择。
- 确认是否启用了 MTP:启动参数中是否包含
--spec-type draft-mtp及--spec-draft-n-max。 - 确认草稿模型是否为与主模型配套的
mtp-gemma-4-31B-it.gguf。 - 如为多卡环境,记录单卡(TP=1)与多卡(TP=2)下的失败点差异(
D=4096与D=2048)。 - SYCL 环境可按 Issue 建议用
llama-ls-sycl-device查看驱动与设备信息,用llama-server --list-devices确认设备 ID,并设置GGML_SYCL_DEBUG=1获取调试输出。
解决步骤
- 先做对照测试:移除
--spec-type draft-mtp --spec-draft-n-max 4,其余参数不变,重新运行同一 prompt,确认崩溃是否消失。Issue 中验证的结果是关闭 MTP 后不再崩溃。 - 如确认为 MTP 相关,保留
-fa on但关闭 MTP 作为规避方案,待上游修复后再重新启用投机解码。 - 如需继续定位,使用 Issue 给出的可稳定触发的 prompt(关于下雨与风扇的两段问题)缩短复现路径,并考虑用
llama-bench以更自动化的方式复现(可优先尝试):GGML_SYCL_DEV2DEV_MEMCPY=2 llama-bench \ -hf unsloth/gemma-4-31B-it-qat-GGUF:UD-Q4_K_XL \ -sm tensor -fa on -dev SYCL0,SYCL1 - 多后端共存时,按 Issue 建议显式限定后端设备(例如
-dev SYCL0,SYCL1),排除设备调度干扰后再判断问题是否仍存在。 - 收集完整日志与堆栈(含
D/neq0/HSK数值),补充到上游 Issue,等待 MTP draft 图维度处理方面的修复。
验证方法
用同一 prompt 分别测试开启与关闭 MTP 两种情况:关闭 MTP 时连续多次生成不再出现 Not support Flash-Attention 或 GGML_ASSERT(neq0 == HSK) failed,且进程不再 SIGABRT,即可确认问题被规避。待上游修复后,在启用 MTP 且 -fa on 的情况下重复该 prompt,并重点观察“拒绝全部草稿后重新 draft”这一环节是否仍报维度不匹配,作为判定修复是否生效的依据。
参考来源
交叉参考:ggml-org/llama.cpp #29418(Vulkan 后端同类问题)
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug] Local browser test traces can exhaust disk space](https://www.chat-gpts.plus/wp-content/uploads/2026/11/46157-6577dbee-768x403.jpg)
