
MTP 加持下 Qwen3.6-27B 稳定 50+ t/s,但聊几句控制台就刷缓存不命中警告,prompt 重新处理要几十秒到几分钟。换了一个 chat template,问题基本消失。
症状
llama.cpp + Hermes 跑 Qwen3.6-27B-Q4_K_M,MTP 投机解码,速度 50+ t/s 很够用了。但每聊几句,控制台就输出:
W slot update_slots: forcing full prompt re-processing
due to lack of cache data
erased invalidated context checkpoint (size = 231.851 MiB)然后就是漫长的 prompt 重新处理 + 重建 context checkpoint,持续几十秒到几分钟,显卡风扇呼呼转。聊得越久、上下文越大,出现越频繁——严重影响思路连贯性。
排查过程
研究了几个晚上,问遍国内外 AI 模型,尝试了各种参数组合(batch、ubatch、no-warmup、no-mmap、flash-attn 全试过),都不得其果。
解法:Qwen-Fixed-Chat-Templates
换了一个固定 chat template 后效果立竿见影:
- 聊了近一个小时,反复网络搜索 + 工具调用
- 缓存不命中只出现个位数次数(之前是每隔几句就刷)
- 流畅度质变
# 启动参数关键项
--jinja --chat-template-file models/Qwen/chat_template.jinja
# 下载
hf download froggeric/Qwen-Fixed-Chat-Templates chat_template.jinja --local-dir models/Qwen为什么有效
默认 chat template 在每轮对话时会重新组织 prompt 结构,导致 KV cache 的 prefix 对不上,llama.cpp 判定缓存失效、整段重算。固定 template 让 prompt 前缀结构稳定,prefix 命中,缓存就能复用。
一句话
本地模型跑 agent 卡顿、风扇狂转、缓存反复失效——先查 chat template 是不是固定的。这一项不改,其他参数都白调。