KV选择不再等目标层查询:EarlySelectKV用代理查询提前算索引,长输出吞吐最高提升12.4%
核心概要
查询条件稀疏KV选择每次解码都要先拿到目标层查询,才能给候选打分并生成索引,这段路由因此卡在注意力之前。EarlySelectKV把路由查询换成由更早隐藏状态构造的代理查询,提前算好下一层要访问的KV索引,最终注意力仍用真实查询。在RocketKV上,LongBench相差+0.018分、RULER约−0.01分、代表性NIAH/Passkey设置+0.25个百分点;TensorRT-LLM部署中路由卸载到CPU后,端到端输出吞吐最高提升12.4%,GPU常驻内存减少KV与K-summary池的11.1%。
深度剖析
长上下文稀疏解码里,决定访问哪些KV条目的路由步骤被挪出了目标注意力的紧前路径,选中的索引可以在更早的计算窗口里备好。 此前的查询条件选择器必须先等到目标层查询出现,才能给候选打分、生成索引并准备对应KV条目,这段串行依赖一直暴露在稀疏注意力之前。 在RocketKV上,ES-RocketKV与原生RocketKV的LongBench平均分相差+0.018分,RULER约−0.01分,代表性NIAH/Passkey设置相差+0.25个百分点,说明提前路由没有带来一致的质量下降。
做法是把动态KV选择拆成主流程和侧流程:主流程用预计算好的页索引取出KV条目,并用目标层真实查询做稀疏注意力。 侧流程在注意力到达目标层之前运行,用前一层隐藏状态经查询投影构造代理查询,再调用原选择器在K-summary缓存上完成打分和top-k,得到下一层的页索引。 代理锚点有两种:ES-In取当前层块输入,准备窗口更长;ES-Mid取注意力后的中间状态,代理表示更强。ES-Mix按离线校准逐层在两者间固定分配,在21个LongBench和30个RULER设置上平均比ES-Mid低0.006分。
索引提前可用还改变了部署方式:路由、代理查询构造和K-summary状态可以放到CPU上,在目标注意力之前完成。 在单张RTX 6000D、TensorRT-LLM后端、40K输入与128 token二级预算的配置下,输出吞吐相对RocketKV随输出变长而增加。 端到端输出吞吐从128个输出token时的1.3%提升到8192个token时的12.4%;CPU卸载路由后,GPU常驻内存按分配口径减少约5.3 GiB,相当于KV与K-summary池的11.1%。
启示与展望
演示范围是四个7B–8B指令模型上的LongBench、NIAH/Passkey与RULER质量评测,以及单张RTX 6000D、TensorRT-LLM PyTorch后端、CPU卸载路由、KV常驻GPU的运行时测量;收益取决于代理构造、路由和元数据准备能塞进多长的准备窗口。
运行时收益在短输出、大batch和资源竞争场景下可能更小,batch 8、128输出token时增益降到0.38%;ES-Mix使用固定的离线层配置,领域大幅变化时可能需要重新校准;InfLLM-V2的整合只覆盖一个检查点且没有运行时测量,长生成评测也限于所测模型与长度。
