快速结论:当 --spec-type 同时启用 draft-mtp 与外部草稿模型(如 draft-dflash)并配合 -md 参数时,llama.cpp 服务会在模型加载阶段崩溃,报错 failed to create MTP context。优先排查共享 cparams 是否错误地将 LLAMA_CONTEXT_TYPE_MTP 类型传递给了外部草稿模型。
适用环境:llama.cpp(含 draft-dflash 能力分支)、ROCm 环境、Strix Halo / gfx1151 iGPU;结合 --spec-type draft-dflash,draft-mtp,ngram-mod 与 -md <draft.gguf> 的服务器场景。
最快修复方案:暂无确认的一步修复方案。Issue 作者提供了补丁,通过拆分 cparams 使 MTP 上下文类型仅应用于目标模型,并区分 ctx_dft 与 ctx_mtp 的分配逻辑(在 262k token 配置下验证成功)。
注意事项:该补丁为作者本地验证,尚未合并到主分支;即使修复初始化问题,在 262k token 生产配置下 MTP 上下文 + 草稿上下文 + KV 缓存共存会导致 64GB GTT 内存压力过大(可触发核心转储),较小上下文可正常运行。
问题场景
用户在 llama.cpp 服务器中混合使用多种投机解码类型,同时指定了 --spec-type draft-dflash,draft-mtp,ngram-mod 和外部草稿模型参数 -md <draft.gguf>。服务在模型加载阶段直接退出,无法启动。
报错原文
common_speculative_init_result: failed to create MTP context
llama_server: exiting due to model loading error
# 根本原因日志片段:context type MTP requested but model doesn't contain MTP layers
原因分析
在 tools/server/server-context.cpp 的投机初始化路径(约第 1136 行)中,当 --spec-type 列表混合了 draft-mtp 与外部草稿模型类型且提供了 -md 参数时,单个共享的 cparams 会将 ctx_type = LLAMA_CONTEXT_TYPE_MTP 错误地带入外部草稿模型的 llama_init_from_model 调用。由于 MTP 层只存在于目标模型中,该调用返回 nullptr,从而触发误导性的 failed to create MTP context 错误——实际上草稿模型从未成功加载。
环境排查
- 确认 llama.cpp 版本是否包含
draft-dflash支持(补丁基于该分支开发)。 - 确认 ROCm 驱动与硬件(Strix Halo / gfx1151 iGPU)是否满足 MTP 上下文内存需求。
- 检查系统可用内存(GTT 预算):在 262k token 配置下,MTP 上下文 + 外部草稿上下文 + KV 缓存共存可能导致 64GB 内存超限。
- 验证是否可复现:使用较小上下文(如低于生产配置)测试组合投机类型是否正常初始化。
解决步骤
- 应用 Issue 作者提供的补丁(基于
2e0816267可能可干净应用):在common_params_speculative_draft结构体中新增llama_context * ctx_mtp = nullptr;。 - 在
common/speculative.cpp的draft_mtp实现中,检查this->params.ctx_mtp是否存在;若存在(组合模式),则将其作为ctx_dft使用(因为此时ctx_dft属于外部草稿模型)。 - 在
common_speculative_init_result::impl中新增llama_context_ptr context_mtp;,确保析构顺序正确。 - 在
server-context.cpp中分离cparams_mtp,确保 MTP 上下文类型仅应用于针对目标模型创建的上下文,外部草稿模型保留默认类型上下文。 - 重新编译 llama.cpp,确保补丁完整应用(补丁应为 4 个文件、+37/−7 行)。
- 若初始化问题已修复但内存不足,可优先尝试减小上下文长度(如从 262k 降至 128k 或更低)进行验证。
验证方法
应用补丁后,使用相同的 --spec-type draft-dflash,draft-mtp,ngram-mod + -md <draft.gguf> 命令启动服务器,观察是否能通过初始化阶段(不再出现 failed to create MTP context 报错)。若初始化成功,可进一步进行推理测试;同时注意系统内存消耗,避免因 MTP 上下文 + 草稿上下文 + KV 缓存共存导致核心转储。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[bug]: InvokeAI v6.14.0-RC1 Crashed while generating Krea-2 Image](https://www.chat-gpts.plus/wp-content/uploads/2026/09/9444-d6bdc60c-768x403.jpg)
![[Question]: Shared embedded chat URL fails to access documents after logout or when accessed by other users](https://www.chat-gpts.plus/wp-content/uploads/2026/09/15895-cf3f7033-768x403.jpg)
