快速结论:该问题发生在 llama-server 的 per-sequence slot 状态恢复失败后,同一进程内的后续 completion 会持续损坏或返回空结果,重启进程才能恢复正常。优先排查 KV cache 的 slot 恢复/回滚路径,而不是模型或硬件配置。
适用环境:llama.cpp 0.1.0-dev(build 10398,commit 8e7f22b),Linux x86_64,CUDA 后端,NVIDIA RTX 4070 12GB,测试模型为 Gemma 3 4B IT Q4_K_M 和 Qwen3.5 2B Q4_K_M。
最快修复方案:暂无确认的一步修复方案。Issue 已确认重启进程可以恢复状态,但问题根因尚未修复;Erasing slot 无法恢复进程。
注意事项:该问题在 Ollama 和原生 llama-server 上均可复现,说明不是 Ollama 特有。问题被标记为 bug-unconfirmed,相关修复方案尚未验证。
问题场景
用户在使用 Ollama 测试持久化 prefill 缓存时首次遇到该问题,随后在原生 llama-server 中也复现。触发路径是:per-sequence slot restore 失败后,同一进程内后续的 completion 请求会出现输出损坏或空响应。llama-completion 不触发此问题,因为其 prompt-cache 路径走的是 whole-context state API,而不是 per-sequence slot 恢复路径。
报错原文
state_read_data: mismatched key type (1 != 248383823, layer 29)
llama_state_seq_load_file: error loading sequence state file: failed to restore kv cache
srv send_error: task id = 5, error: Unable to restore slot: No available space in KV cache or invalid slot save file
原因分析
可能原因:slot 恢复失败后,KV cache 中的元数据(per-sequence rollback 信息)未能正确回滚,导致后续请求读取到损坏的 cache 状态。Issue 指出该问题不是 #26051 引入的回归——#26051 只是增加了到达既有 rollback 逻辑的异常路径,但通过 state_read_data() 返回 false 也能触发同样的回滚路径,说明根因在更早的 slot 状态恢复实现中。
环境排查
- 确认 llama.cpp 版本是否在 build 10398 或相近版本(commit 8e7f22b)。
- 确认使用 CUDA 后端,且显存为 12GB(RTX 4070)。
- 确认模型是否使用 GGUF 格式的 Q4_K_M 量化版本。
- 检查是否可以通过原生 llama-server 复现(与 Ollama 无关)。
- 确认是否使用了 per-sequence slot 恢复 API(如
llama_state_seq_load_file相关调用)。
解决步骤
- 复现验证:在原生 llama-server 中执行一次损坏的 slot 恢复操作,确认报错信息包含
failed to restore kv cache。 - 临时规避:如果线上环境不允许进程重启,可优先尝试在失败后 清除 KV cache 或 重置所有 slot(Issue 中 Erasing slot 无效,但可尝试其他清理方式)。
- 确认影响范围:测试在失败后进行多个 completion 请求,确认是否全部损坏还是部分受影响。
- 版本对比:可优先尝试回退到更早版本(如 #26051 合并前的版本),确认问题是否仍然存在,以排除 #26051 的异常路径影响。
- 等待官方修复:Issue 已被标记为 bug-unconfirmed,可关注后续 pull request 中针对 slot rollback 路径的修复。
验证方法
修复后,执行一次损坏的 slot 恢复操作,然后立即发起一个正常的 completion 请求。如果输出恢复正常且不再返回空结果或乱码,则问题已解决。重点观察失败恢复后同一进程内是否还能持续工作。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


