Eval bug: Gemma4 E4B crashes with –flash-attn on

用户在 llama.cpp 的 llama-server 、 llama-cli 中加载 Gemma 4 E4B GGUF 模型(包含 MTP draft model),同时启用了 --flash-attn on (Flash Attention),并通常带有 --spec-type draft-m

Eval bug: Gemma4 E4B crashes with --flash-attn on

Eval bug: Gemma4 E4B crashes with –flash-attn on

快速结论:llama.cpp 中使用 --flash-attn on 配合 Gemma 4 E4B 模型,且同时启用 draft model (--model-draft) 时触发崩溃(ggml_cuda_flash_attn_ext 报错)。优先排查是否开启 --flash-attn,关闭该选项即可避免崩溃。

问题场景

用户在 llama.cppllama-serverllama-cli 中加载 Gemma 4 E4B GGUF 模型(包含 MTP draft model),同时启用了 --flash-attn on(Flash Attention),并通常带有 --spec-type draft-mtp 参数。崩溃在 GPU 推理(CUDA 后端)下复现,CPU 推理不受影响。NVIDIA GeForce GTX 1080 (Pascal)、Tesla T4 以及 DGX Spark(GB10, Grace Hopper)均受影响。

报错原文

ggml/src/ggml-cuda/fattn.cu:110: fatal error
...
ggml_cuda_flash_attn_ext(ggml_backend_cuda_context&, ggml_tensor*) ()

原因分析

可能原因:Gemma 4 E4B MTP 结构的特性与 Flash Attention 实现之间存在兼容性问题,尤其是在 ggml_cuda_flash_attn_ext 内部发生致命错误。该问题大概率来自 llama.cpp 初始 Gemma 4 MTP 支持合并的提交(first bad commit likely from initial Gemma 4 MTP support merge)。移除 Flash Attention 或禁用 draft model(如移除 --model-draft)可避免崩溃,表明两者同时启用是触发条件。

环境排查

  • Python / 系统:NixOS 26.11 / Linux x86_64, Ubuntu (aarch64 on DGX Spark)
  • llama.cpp 版本:9588 (039e20a2d) 及 b9592 均受影响
  • CUDA 版本:NVIDIA 580.159.04 (驱动),CUDA Toolkit 存在(通过 CMake 配置)
  • GPU:NVIDIA GeForce GTX 1080 (Pascal, arch=61); Tesla T4 (Turing); DGX Spark (GB10, aarch64)
  • 模型:Gemma 4 E4B IT QAT GGUF 及其 draft model (Q8_0),来源 HuggingFace (unsloth)
  • 编译选项:-DGGML_CUDA=ON -DGGML_CUDA_FA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON,Flash Attention 功能已启用
  • 依赖:GCC 15.2.0 / 14.3.0; libggml-cuda.so, libggml-base.so

解决步骤

  1. 关闭 –flash-attn:启动时去掉 --flash-attn on 参数(或设置为 --flash-attn off)。这是 Issue 中最直接可靠的缓解方式。
  2. 移除 draft model:如果必须保留 Flash Attention,可尝试移除 --model-draft 及其相关参数(--spec-type draft-mtp 等)。
  3. 避免使用任何 kv cache 量化:Issue 提到 --cache-type-k q8_0 / --cache-type-v q8_0 等可能与 Flash Attention 冲突,建议在替换前先移除或保持默认(如 f16)。
  4. 更新 llama.cpp:检查是否有后续修复提交(Issue 关闭后可能已有补丁),推荐拉取最新 master 并重新编译。
  5. 降级或使用 CPU:作为最后手段,可使用 CPU 推理(不指定 --n-gpu-layers 或设为 0),但性能显著下降。

注意:以上步骤基于 Issue 中的推测和建议,补丁尚未明确。

验证方法

重新启动 llama-serverllama-cli,使用与之前相同的命令,但确保 --flash-attn 已被禁用。加载并运行模型(如发送请求测试生成),观察是否不再出现 ggml_cuda_flash_attn_ext 致命错误。若问题依然存在,请确认是否去掉了所有可能引起冲突的参数(--spec-type draft-mtp--cache-type-* 等)。

参考来源

ggml-org/llama.cpp #24400

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 11089

发表回复

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