快速结论:该问题发生在 llama-server 中,当用户通过 -md 指定草稿模型但未设置 --spec-type 时,推测解码(speculative decoding)静默失效,系统仅在内存中加载草稿模型但实际执行自回归生成。优先排查是否未设置 --spec-type draft-simple。
问题场景
用户在 llama-server 中运行推测解码时,通过 -md 参数加载草稿模型,并在启动日志中观察到 kv_unified = 'true'。尽管草稿模型已加载到内存,但推测解码从未启用:生成阶段无草稿初始化日志、无接受统计、速度与无草稿基线相同。当前确认的最可能原因与 --spec-type 参数有关,但 Issue 最初怀疑与“统一 KV 缓存(unified KV cache)默认开启”相关。
报错原文
srv load_model: initializing, n_slots = 4, kv_unified = 'true'
slot print_timing: eval time = 144296.00 ms / 32 tokens (0.22 tokens per second)
No draft/speculative init line at any verbosity.
原因分析
Issue 提交者最初推测根因是 PR #16736 改变了统一 KV 缓存的默认行为,导致推测解码与统一 KV 缓存不兼容。后续调查发现,真实原因为:llama-server 近期版本将 --spec-type 的默认值设为 none。用户仅传递了 -md(加载草稿模型)和 --spec-draft-n-max / --spec-draft-n-min,但未显式设置 --spec-type draft-simple,因此推测解码引擎未被激活。这属于用法遗漏而非代码回归。
环境排查
- 确认 llama.cpp 构建版本(Issue 中涉及 a410713 及更早的 fdb1db8 版本)。
- 确认是否使用
--spec-type参数,及其当前值(默认none)。 - 确认草稿模型是否确实通过
-md加载(可通过 RSS 增长判断)。 - 检查启动日志中是否存在类似
kv_unified = 'true'的行,但需注意该行可能不可靠(Issue 提到--no-kv-unified未生效)。
解决步骤
- 可优先尝试:在原有命令中加入
--spec-type draft-simple,例如:
llama-server -m target_model.gguf -md draft_model.gguf --spec-type draft-simple --spec-draft-n-max 12 --spec-draft-n-min 1 -t 12 -fa on -ctk q8_0 -ctv q8_0 -c 8192 --port 8095。 - 如果问题仍然存在,尝试添加
--no-kv-unified参数(但 Issue 报告该标志当前可能未生效,需进一步测试不同构建版本)。 - 使用独立的
llama-speculative二进制程序作为对照,确认同一对模型是否能正常启用推测解码。
验证方法
启动服务器后,发送一次 chat/completions 请求(例如 max_tokens=512, temperature=0),观察:
- 启动日志中是否出现推测解码的初始化行(例如包含 “draft” 或 “speculative” 字样)。
- 生成速度是否明显快于无草稿基线(例如 Issue 中无草稿时为 0.22 tokens/s,正确启用后应为 0.50 tokens/s 或更高)。
- 日志中是否出现接受统计(如
n_drafted / n_accept)。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


