KV Cache 逐出策略:被逐出的缓存去哪了
KV Cache 逐出通常按 LRU/前缀引用计数执行。关键不是逐出算法本身,而是逐出后的去向:直接丢弃则回访即重算(实测 TTFT p50 149.5s),下沉外置层则可读回(11.85s)。
逐出是必然,丢弃不是
显存容量固定,会话一多 KV 必然被逐出——vLLM 的块管理按引用计数与 LRU 回收 KV 块,这一层开源框架已经做得很好。真正的架构分岔在逐出之后:丢弃(下次回访整段重算 prefill)还是下沉(写入内存/外置全闪,回访时读回)。
两条路的代价差实测可查:480B 模型并发 16 冷恢复负载,「丢弃-重算」基线 TTFT p50 149.5s、吞吐 4.1 tok/s;「下沉-读回」(FX100 外置层)11.85s、74.9 tok/s——8.6–20× 的差距(R2 实测)。
分层逐出的工程实现
LMCache 把逐出改造成层间迁移:显存满则下沉主机内存,内存满则下沉外置全闪,KV 块按前缀哈希内容寻址、天然幂等。外置层容量以百 TB 计(FX100 满配裸容量 184.3TB),逐出窗口可以放宽到天级。
下沉链路的写入不阻塞推理主路径,读回性能取决于并行度——LMCache 默认串行读打不满阵列带宽,铭信并行读补丁把单卡冷读带宽从 0.98 GB/s 提到 5.23 GB/s(R1 实测,补丁见 R8 导出包)。
常见问题
逐出策略需要业务侧调优吗?
多数场景默认 LRU 足够;会话回访分布特殊(如固定周期批处理)时可调保留窗口。我们建议用真实 trace 联测验证,G3 门禁以 TTFT 降幅 ≥25% 为准。
下沉写入会拖慢推理吗?
KV 下沉是异步大块顺序写,与解码计算重叠;R2/R3 的吞吐数字(+29–40%)已包含下沉开销,是端到端口径。
外置层也满了怎么办?
外置层内同样按 LRU 逐出最冷的 KV,此时才真正丢弃。区别在于窗口:显存以分钟计,外置层以天计,绝大多数回访都落在窗口内。
数据出处(可查证)
相关阅读
本站内容为商务合作信息展示,不构成投资要约或任何收益承诺。实测数据均出自签字级/正式版测试报告(见证据库);厂商口径、公开口径、估算口径均如实标注。