
Eval bug: GGML_ASSERT(addr) failed when using MTP + Vulkan + –no-mmap on qwen 3.6 27b q8
快速结论:该报错通常发生在同时启用 MTP(Multi-Token Prediction)和 –no-mmap 参数时。优先排查方法是尝试移除 –no-mmap 或添加 –fit off 参数。
问题场景
用户在 Windows 系统上使用 llama-cli 或 llama-server(版本 9484,基于 Clang 19.1.5 构建),通过 Vulkan 后端,以 Ryzen HX 370 集成 GPU 运行 Qwen 3.6 27b Q8 模型时触发。复现命令中包含 –no-mmap 和 MTP 相关参数(–spec-type draft-mtp,–spec-draft-n-max 2)。另一用户在 Ubuntu 22.04 上使用 Nvidia GB10 显卡(CUDA 13.0,驱动 580.159.03),通过 Docker 容器运行 StepFun 3.7 Flash 模型时也复现了相同问题。
报错原文
GGML_ASSERT(addr) failed
(完整报错日志见 Issue 附件,核心错误为 GGML_ASSERT 断言失败。用户复现时,问题仅在同时使用 MTP 和 –no-mmap 时出现。)
原因分析
可能原因:当同时使用 MTP 和 –no-mmap 时,内存映射机制出现冲突。–no-mmap 禁用内存映射文件,而 MTP 在 draft 模型加载或推理过程中可能依赖于 mmap 特性(如统一内存管理)。当两者结合时,导致 ggml 内部地址断言失败。移除 –no-mmap 或添加 –fit off 可绕过此问题。
环境排查
- llama.cpp 版本:9484(63e66fdd2),编译器 Clang 19.1.5(Windows)/ GCC 14(Linux Docker)
- 后端:Vulkan(Windows)/ CUDA 13.0(Linux)
- 显卡:Ryzen HX 370 集成 GPU / Nvidia GB10(ThinkStation PGX 变体)
- 操作系统:Windows / Ubuntu 22.04
- 模型:Qwen 3.6 27b Q8 / StepFun 3.7 Flash IQ4_XS + Q8 MTP draft
- Docker 配置(Linux 场景):基础镜像 nvidia/cuda:13.3.0(但实际 CUDA 版本为 13.0)
解决步骤
- 优先尝试:移除 –no-mmap 参数,直接使用默认 mmap 行为。
- 或:保留 –no-mmap 但添加 –fit off 参数,禁用自动内存适配。
- 确认问题仅在 MTP 和 –no-mmap 同时启用时出现。如果问题消失,则确认该冲突是根本原因。
- 在 Linux Docker 环境下,注意环境变量 LLAMA_ARG_MMAP=disabled 会对应启用 –no-mmap,建议将其注释掉或设为 enabled。
验证方法
使用报错的原始命令,但移除 –no-mmap 或添加 –fit off,确认模型能正常加载并推理,不再出现 GGML_ASSERT 断言失败。


![[Bug] Disabled Weaviate document vectors are not deleted by segment ID](https://www.chat-gpts.plus/wp-content/uploads/2026/07/39174-10c10356-768x403.jpg)
