算
前缀缓存命中率上不去,先别急着扩缓存容量,多数失效来自路由、提示词和分块方式,容量反而是最后才需要动的地方。
一、先看命中率的统计口径:按请求数算还是按 token 数算、是否把首 token 之外的复用也算进去,口径不同结果差很多。先把口径定下来,再按会话、按模型版本、按路由实例拆分,看失效集中在哪一维。
二、查系统提示词:同一业务的系统提示词只要差一个标点、一个版本号,前缀就对不上。把系统提示词做成固定模板、版本化管理,对照实验时先锁定它,再看命中率变化。
三、查会话路由:同一会话的请求如果被打散到不同推理实例,缓存自然命中不了。检查负载均衡是不是按会话哈希路由,有没有实例重启、扩缩容导致缓存被清空。
四、查分块粒度:KV 缓存按块切分,块边界与提示词结构不对齐时,公共前缀再长也只能命中一部分。对比不同块大小下的命中率,别只看默认值。
五、查淘汰策略与冷热混跑:长会话和短会话混跑时,短会话的高频进出可能把长会话的缓存挤掉。按业务把缓存池分开,或者给长会话更高的保留优先级,效果往往比扩容明显。
你们线上前缀缓存命中率一般做到多少才算可用?失效最多的是路由问题还是提示词变动?
一、先看命中率的统计口径:按请求数算还是按 token 数算、是否把首 token 之外的复用也算进去,口径不同结果差很多。先把口径定下来,再按会话、按模型版本、按路由实例拆分,看失效集中在哪一维。
二、查系统提示词:同一业务的系统提示词只要差一个标点、一个版本号,前缀就对不上。把系统提示词做成固定模板、版本化管理,对照实验时先锁定它,再看命中率变化。
三、查会话路由:同一会话的请求如果被打散到不同推理实例,缓存自然命中不了。检查负载均衡是不是按会话哈希路由,有没有实例重启、扩缩容导致缓存被清空。
四、查分块粒度:KV 缓存按块切分,块边界与提示词结构不对齐时,公共前缀再长也只能命中一部分。对比不同块大小下的命中率,别只看默认值。
五、查淘汰策略与冷热混跑:长会话和短会话混跑时,短会话的高频进出可能把长会话的缓存挤掉。按业务把缓存池分开,或者给长会话更高的保留优先级,效果往往比扩容明显。
你们线上前缀缓存命中率一般做到多少才算可用?失效最多的是路由问题还是提示词变动?