Kara:通过滑动窗口KV缓存压缩实现高效推理LLM服务
本文提出Kara,一种滑动窗口KV缓存压缩方法,通过仅在最近生成的上下文上操作并进行解码时压缩,利用双向注意力机制评分和选择信息性KV对,并设计Token2Chunk模块灵活保留重要语义信息。实验表明,Kara和基于vLLM的推理框架KvLLM显著降低了KV缓存内存使用并提高了输出吞吐量。
推理语言模型(如思维链推理模型)在生成长链式思维(CoT)时,解码阶段会积累大量KV缓存,导致高延迟和有限的吞吐量。KV缓存压缩通过选择性地移除不重要的KV对来减轻内存负担,是一项有前景的技术。然而,现有方法存在两大局限:第一,阈值触发的压缩策略可能无法提升甚至降低吞吐量,并且可能完全删除某些序列块的KV对,加剧信息损失;第二,它们通常只保留孤立的KV对或固定大小的chunk,无法灵活保留任意位置的重要语义信息。
针对这些问题,研究团队提出了Kara,一种滑动窗口KV缓存压缩方法。Kara仅在最近生成的上下文窗口内执行解码时压缩,利用双向注意力机制计算窗口内每个KV对的注意力得分,从而选择信息量最高的KV对。为了灵活保留重要语义,他们设计了Token2Chunk模块,将选中的KV对扩展为可变大小的chunk,避免刚性边界造成的信息割裂。这种设计允许保留任意位置的可变大小语义块,克服了先前方法的缺陷。
Kara还被适配到PagedAttention中,并基于vLLM构建了推理框架KvLLM。PagedAttention是一种高效的内存管理技术,通过分页管理KV缓存减少碎片化。Kara与PagedAttention的结合进一步优化了内存使用。实验在多种任务上进行,包括语言建模、问答和推理,结果显示Kara和KvLLM一致地降低了KV缓存内存使用,并显著提升了输出吞吐量。例如,在长序列生成任务中,Kara相比基线方法减少了高达50%的KV缓存大小,同时保持甚至提高了生成质量。
这项工作的意义在于,它为长上下文推理的高效部署提供了实用解决方案,尤其适用于需要大量CoT推理的应用场景,如数学推理、代码生成和多步问答。Kara的设计兼顾了压缩效率和信息保留,为未来推理模型的服务优化指明了方向。