Eval bug: Error on loading Gemma 4 family with the new updates

该报错发生在 llama.cpp 新版本中启用 MTP(Multi-Token Prediction)头部加载 Gemma 4、Qwen 等模型时,模型加载阶段因资源分配或参数断言失败而崩溃。优先排查 llama.cpp 构建版本是否包含修复提交 73159c3(PR #28183),并尝试更新到该

快速结论:该报错发生在 llama.cpp 新版本中启用 MTP(Multi-Token Prediction)头部加载 Gemma 4、Qwen 等模型时,模型加载阶段因资源分配或参数断言失败而崩溃。优先排查 llama.cpp 构建版本是否包含修复提交 73159c3(PR #28183),并尝试更新到该修复之后的版本。

适用环境:Issue 已确认环境为 Linux x86_64 系统,使用 CUDA 后端(GGML CUDA),显卡型号为 RTX 5070 Ti + i9 14900K(网友补充 RTX 5090 同样复现)。模型涉及 Gemma 4 系列、Qwen 3.6 9B、Gemma4 12B、Qwen3.8 27B 等。

最快修复方案:暂无“一步修复”的配置变更方案;Issue 评论确认问题由 PR #28159 的提交 9d81721 引入,已在 PR #28183 的提交 73159c3 中修复。请更新 llama.cpp 到包含提交 73159c3 的版本(该提交已合入主线)。

注意事项:该修复方案来自 Issue 评论者的复现与验证,属于已确认的代码回归修复。若更新后仍存在问题,需检查是否使用了过旧的模型量化版本或自定义编译参数。

问题场景

用户在使用 llama.cpp(版本 0.3.0-dev,build 10744,commit 1f3d31873)时,尝试加载 Gemma 4 系列模型(包括 e4b 和 26b MoE 变体)并启用 MTP(Multi-Token Prediction)功能。模型加载过程中程序崩溃,触发断言失败并生成 GDB 回溯日志。同一问题也影响 Qwen 3.6 9B、Gemma4 12B、Qwen3.8 27B 等其他模型,只要尝试使用 MTP 头部加载就会失败。将 MTP 作为 sidecar 模型加载同样失败,但 sidecar 加载 dflash2 模型则正常。

报错原文

llama_init_from_model: failed to initialize the context: failed to allocate buffer for kv cache
common_speculative_init_result: failed to create MTP context

/opt/llama.cpp/src/llama-model.cpp:1227: GGML_ASSERT(hparams.n_layer_nextn < hparams.n_layer_all) failed

Eval bug: Error on loading Gemma 4 family with the new updates

原因分析

根据 Issue 评论中的复现与定位,可能原因如下:

该问题并非仅针对 Gemma 4,而是由最新 MTP PR(#28123)引入的代码回归。问题根源定位在提交 9d81721(对应 PR #28159)中的改动,该改动导致带有 MTP 头部的模型在加载时无法正确初始化 KV cache 缓冲区,或在参数检查时触发断言失败(hparams.n_layer_nextn < hparams.n_layer_all)。即使显存充足,也会因加载逻辑中的资源分配或参数校验错误而失败。

环境排查

  • llama.cpp 版本:确认是否为包含问题提交 9d81721 的构建版本;对比 build 10744(commit 1f3d31873)与修复后的版本差异。
  • 操作系统:Linux x86_64(Issue 中确认)。
  • GGML 后端:CUDA(需确认 CUDA 驱动版本与 llama.cpp 编译时使用的 CUDA 版本匹配)。
  • 显卡:RTX 5070 Ti / RTX 5090(评论中确认),需检查显存是否充足(本 Issue 中显存足够仍触发错误)。
  • 依赖版本:需确认使用的模型 GGUF 文件中是否包含 MTP 头部,以及量化版本(如 unsloth 量化)是否兼容当前 llama.cpp 版本。

解决步骤

  1. 更新 llama.cpp 到包含提交 73159c3(PR #28183)的最新主线版本。该提交已修复 PR #28159 引入的 MTP 加载回归问题。
  2. 若使用自定义构建,请重新拉取最新源码并重新编译,确保构建版本晚于修复提交日期。
  3. 如果无法更新版本,可优先尝试不带 MTP 功能加载模型,或者将 MTP 模型作为 sidecar 加载(但评论显示 sidecar 方式同样失败,因此建议优先更新版本)。
  4. 更新后,重新加载带有 MTP 头部的 Gemma 4 或 Qwen 模型,确认是否还出现 KV cache 分配失败或 GGML_ASSERT 断言错误。

验证方法

更新 llama.cpp 并重新加载原报错模型(启用 MTP 功能)。若模型能够正常加载并进入推理阶段,不再输出 failed to allocate buffer for kv cacheGGML_ASSERT 错误,即说明问题已解决。Issue 评论者也在修复后确认“all works good now”。

参考来源

ggml-org/llama.cpp #28197

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21441

发表回复

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