Assertion ‘__n size()’ failed.

用户在 AMD RYZEN AI MAX+ PRO 395 平台(Linux)上运行 llama-server ,配置了推测解码(speculative decoding)参数(如 --spec-draft-n-max 、 --spec-type ngram-map-k ),并加载了 Qwen3.6

Assertion '__n size()' failed.

Assertion ‘__n size()’ failed.

快速结论:该报错在 llama-server 中使用 --spec-type ngram-map-k 等推测解码(speculative decoding)参数时触发,优先排查推测解码功能下的 ngram-map 索引越界问题。

问题场景

用户在 AMD RYZEN AI MAX+ PRO 395 平台(Linux)上运行 llama-server,配置了推测解码(speculative decoding)参数(如 --spec-draft-n-max--spec-type ngram-map-k),并加载了 Qwen3.6-35B-A3B-MTP-GGUF_Q8_K_XL 模型。服务器在使用 --models-max 1--cache-prompt 等参数运行时,偶发崩溃,通常需要运行 20-30 分钟才复现。

报错原文

Assertion '__n < this->size()' failed.

/usr/include/c++/16.1.1/bits/stl_vector.h:1272: 
constexpr std::vector<_Tp, _Alloc>::const_reference 
std::vector<_Tp, _Alloc>::operator[](size_type) const 
[with _Tp = int; _Alloc = std::allocator<int>; 
const_reference = const int&; size_type = long unsigned int]: 
Assertion '__n < this->size()' failed.

原因分析

该断言失败表明使用 std::vector::operator[] 访问了越界索引(索引值 __n 大于等于向量大小)。根据 Issue 讨论中的堆栈回溯,崩溃发生在 common/ngram-map.cpp 的 L346 行附近,访问 inp[map.keys[i].key_idx + j] 时索引超出 inp 向量的边界。这与推测解码中的 ngram-map 刷新操作(common_ngram_map_begin: refresh map)密切相关。当禁用推测解码(--spec-draft-n-max 等参数)后,用户确认不再复现。

环境排查

  • 工具版本:llama-server version 9413 (基于 commit 24d6d7c)
  • 操作系统:Linux (x86_64)
  • GGML 后端:HIP(AMD GPU 支持)
  • 硬件:AMD RYZEN AI MAX+ PRO 395 w/ Radeon 8060S
  • 编译器:GNU 16.1.1
  • 推测解码参数:启用 --spec-draft-n-max 3--spec-draft-n-min 1--spec-type ngram-map-k
  • 模型:Qwen3.6-35B-A3B-MTP-GGUF_Q8_K_XL

解决步骤

  1. 确认是否为推测解码相关:如果当前使用了 --spec-type ngram-map-k 等推测解码参数,可先尝试临时移除所有推测解码相关参数(如 --spec-draft-n-max--spec-draft-n-min--spec-type 等),确认问题是否消失。
  2. 应用补丁(可优先尝试):Issue 中已提交 PR #23936 修复该问题,修复位置在 common/ngram-map.cpp 的 L346 行附近。建议更新到包含此修复的版本(如 >= commit 6ed481eea4cf4ed40777db2fa29e8d08eb712b3b 之后的修复分支),或者手动应用该 PR 的补丁。
  3. 构建含调试符号的版本:如果希望自行定位,可使用 -gCMAKE_BUILD_TYPE=Debug 重新构建,以获取更详细的堆栈信息。

验证方法

应用补丁或升级版本后,在相同的模型和参数配置下(保持推测解码相关参数),长时间运行(如 30 分钟以上)llama-server,确认不再触发 Assertion '__n < this->size()' failed. 崩溃。建议同时观察日志中不再出现 common_ngram_map_begin: refresh map 后的索引异常。

参考来源

ggml-org/llama.cpp #23889

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13411

发表回复

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