快速结论:该报错发生在启用 MTP(Multi-Token Prediction)且开启 --fit 内存估算功能时,llama.cpp 服务端在启动阶段就会崩溃,报错文案为 Eval bug: MTP with fit causes crash。优先排查方向是关闭 --fit 选项或升级到更高版本。
适用环境:llama.cpp 版本 b9503;受影响的模型包括 Qwen 系列以及基于 #23398 改版的 Gemma4;ROCm 和 Vulkan 后端均受影响。
最快修复方案:在启动命令中添加 --fit off 可以避免崩溃(Issue 作者已确认此规避方法有效);另外有评论指出该问题至少在版本 9554 中已修复,因此升级到较新版本也应能解决。
注意事项:--fit off 是绕过方法而非根本修复,会失去内存估算功能;版本 9554 的修复声明来自评论,并未在原始 Issue 中给出具体修复 commit 或对比验证,建议升级后自行回归测试。
问题场景
在 llama.cpp 服务端(server)中同时启用 MTP(--spec-type draft-mtp)和 --fit 内存估算功能时,模型加载阶段直接崩溃。触发条件与模型本身无关,Qwen 和 Gemma4 都能稳定复现,说明问题出在 llama.cpp 的 MTP 与 fit 代码路径。
报错原文
Eval bug: MTP with fit causes crash
原因分析
根据 Issue 作者给出的分析,问题出在 --fit 的内存估算路径上,而不是 MTP 分配本身。具体流程是:当使用 --spec-type draft-mtp 时,server 在加载真实模型之前会调用 common_get_device_memory_data();该函数会创建一个设置 no_alloc = true 的“假”上下文(fake context),并调用 llama_get_memory_breakdown() 来查询内存占用。然而对于 MTP 场景,这个假上下文并不总是具备完整的运行时有效性——MTP 的 draft 上下文可能需要 target 上下文/来源,或至少需要一个保留的 scheduler,然后才能正确查询其内存明细。但 llama_context::memory_breakdown() 中假设 scheduler 一定存在,导致在 MTP + fit 组合下崩溃。
环境排查
- 确认 llama.cpp 版本:b9503(该版本确认崩溃),版本 9554 及以上据报道已修复。
- 确认后端类型:ROCm 和 Vulkan 均受影响,其他后端(如 CUDA)未在 Issue 中提及。
- 确认启动参数中是否同时包含
--spec-type draft-mtp和--fit。
解决步骤
- 快速绕过(已验证):在启动命令中添加
--fit off,或直接省略--fit参数,确认服务可以正常启动。 - 升级版本(推荐):升级到 b9554 或更高版本,然后重新测试 MTP + fit 组合是否恢复正常。
- 回归验证:如果升级后仍然有问题,可以提供一个最小复现命令(模型 + 参数)到 Issue 中继续跟踪,因为原始 Issue 的修复声明并未附带详细验证信息。
验证方法
在添加 --fit off 或升级后,使用相同的模型和参数启动 server,确认不再出现 “Eval bug: MTP with fit causes crash” 崩溃信息,并能正常完成模型加载和推理请求。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


