
Eval bug: Gemma-4-26B-A4B cannot process images
快速结论:在 AMD GPU 上使用 Vulkan 后端运行 Gemma-4-26B-A4B 模型进行图像推理(如 OCR)时,模型在处理第一张图片后冻结或崩溃。优先排查方向:关闭 flash attention(--flash-attn off)并降低 KV 缓存精度和上下文长度。
问题场景
用户在 Windows 系统下,使用 llama-server 加载 Gemma-4-26B-A4B 模型及其对应的 mmproj 文件,通过 Vulkan 后端在 AMD Radeon 780M Graphics(AMD 8840U)上运行。文本推理正常,但一旦输入图片,视觉编码器(vision encoder)完成图片解码后,模型在生成第一个 token 时立即崩溃。同一问题在 AMD AI Max 395+ 上也被复现。
报错原文
image decoded in 255 ms
[进程在此后无响应,最终崩溃,未输出更多日志]
原因分析
根据 Issue 讨论,视觉编码器本身能完成图片解码,但主模型在消费图片嵌入(image embeddings)时发生崩溃。这可能原因:
- Vulkan 后端在 AMD 显卡上的 flash attention 实现与 Gemma-4 的视觉嵌入路径存在兼容性问题。
- 高上下文长度(如 100000)导致缓冲区分配异常,触发 Vulkan 驱动崩溃。
- AMD Vulkan 驱动对某些混合精度/量化缓存的组合支持不完善(尤其在使用
--cache-type-k q8_0 --cache-type-v q8_0时)。
环境排查
- 操作系统:Windows 11
- llama.cpp 版本:b8672-25eec6f32 及 b8913-e5f070a1d 均受影响
- GPU:AMD Radeon 780M Graphics / AMD AI Max 395+
- 后端:Vulkan(已验证);HIP 后端(通过 TheRock 项目自编译)表现更稳定
- 模型文件:
Gemma-4-26B-A4B-it-UD-Q4_K_XL__unsloth_cb8ed2.gguf+mmproj-F16__unsloth_90a77a.gguf - 显存:约 23.2 GiB 可用(780M 共享内存)
解决步骤
- 第一步:关闭 flash attention
在启动命令中添加--flash-attn off。注意:关闭 flash attention 后,必须同时禁用 KV 缓存量化,否则可能报错。 - 第二步:调整 KV 缓存精度
将--cache-type-k和--cache-type-v改为f16(而非 q8_0),以避免量化与 flash attention 关闭后的兼容问题。
示例:--cache-type-k f16 --cache-type-v f16 - 第三步:降低上下文长度
大幅减小--ctx-size值(例如从 100000 降至 50000 或更低),以缓解缓冲区分配压力。
示例:--ctx-size 50000 - 第四步:可优先尝试——使用 HIP 后端替代 Vulkan
根据 Issue 用户反馈,通过 TheRock 项目自编译 HIP 后端(自编译版本)运行 Gemma-4 图片推理表现正常。如果条件允许,优先切换后端。
验证方法
使用包含图片的请求(如 OCR 任务)测试,观察模型是否能在图片解码后成功生成 token。如果之前崩溃,现在能正常返回文本,则问题解决。注意确认 no cache-miss 或 GPU 无响应等异常。


![[Bug]: Tool schema marks **kwargs as a required (untyped) parameter, forcing the LLM to fill it](https://www.chat-gpts.plus/wp-content/uploads/2026/07/22134-dfdd0514-768x403.jpg)
