CacheGen: KV Cache Compression and Streaming for Fast Large Language Model Serving

文章标题与作者/机构
- 标题: CacheGen: KV Cache Compression and Streaming for Fast Large Language Model Serving
- 作者/机构: Yuhan Liu, Hanchen Li, Yihua Cheng, Siddhant Ray, Yuyang Huang, Qizheng Zhang*, Kuntai Du, Jiayi Yao, Shan Lu†, Ganesh Ananthanarayanan†, Michael Maire, Henry Hoffmann, Ari Holtzman, Junchen Jiang University of Chicago †Microsoft *Stanford University


A1 主要贡献


A3 背景知识/关键Observation/设计原则

2.1 大型语言模型基础

22.2 LLM输入中的上下文

3 隐藏的网络瓶颈


图2:不同上下文加载方式如何影响网络延迟(传输上下文或KV缓存)和计算延迟(在上下文上运行注意力模块)。

5.1 KV缓存的经验性洞察

本节重点介绍关于KV缓存值的三个观察,这些观察通过在Llama-7B和Llama-13B模型上使用LongChat数据集【索引90,LongChat: How Long Can Open-Source LLMs Truly Promise on Context Length?, 2023】进行实证验证,证明了其普遍性。

5.1.1 令牌间的局部性


图3:原始值分布与差值分布的对比。我们用两个Llama模型和多种长上下文(§5.1)进行建模。为清晰起见,我们显示了绝对值。

5.1.2 层间的损失敏感性


图4:对KV缓存的不同层施加数据损失对准确率有不同影响。(工作负载与图3相同)。

5.1.3 沿层、通道和令牌的分布


图5:使用不同分组策略时的熵(每元素比特数)。(工作负载与图3相同。)


A2 方法细节

4 CacheGen:KV缓存编码与流式传输

5.2 KV缓存编码


图6:在一个令牌组内,CacheGen计算锚点令牌的KV张量与其余令牌的KV张量之间的差值张量。

5.3 KV缓存流式传输自适应


图7:展示CacheGen在带宽变化下的自适应逻辑的时间序列图。

6 实现


A4 实验环境与结果

实验环境

实验结果


A5 结论

本文提出了CacheGen,一个用于最小化LLM获取和处理上下文总延迟的上下文加载模块。CacheGen通过一个专为将KV缓存压缩成紧凑比特流而设计的编码器,减少了传输长上下文KV缓存所需的带宽。跨三种不同容量模型和四个不同上下文长度数据集的实验表明,CacheGen在保持高任务性能的同时,有效降低了总体延迟。

局限性与未来工作
- 与其他压缩工作兼容:CacheGen与智能量化【索引62, 78, 97】等新兴技术是互补的,未来可以结合使用。
- 增量式KV缓存流式传输:未来工作包括将CacheGen扩展为增量式流传输,类似于可伸缩视频编码(SVC)。
- 真实世界应用中的上下文重用:需要更多业界数据集来验证上下文重用的普遍性。
- 硬件与模型扩展:未来将在更高端的GPU和更大规模的模型(如OPT-175B)上评估CacheGen。
- 其他系统设计:未来可将CacheGen与并发工作中关于KV缓存存储、缓存策略等方面的研究相结合。
- 其他限制:未在自由文本生成任务上进行广泛评估;网络模型未包含极高带宽情况;并非所有LLM应用(如实时搜索)都能缓存KV特征。


A6 附录

A CacheGen的文本输出示例


图17:CacheGen在使用LongChat-7b-16k模型处理LongChat数据集时的一个输出示例。

B CacheGen与更具侵入性的方法的比较


图18:比较CacheGen和更具侵入性的方法,包括更小的模型、令牌丢弃(左)、上下文选择(中)和gisting(右)。

C CacheGen系统设置

C.1 KV流媒体自适应逻辑

算法1:CacheGen流式传输适配器逻辑

C.2 默认编码级别

D CacheGen在各种工作负载下的改进


图19:热图显示了CacheGen在完整工作负载空间中相对于最佳基线的改进。更亮的单元格意味着TTFT减少更多。

E 存储KV缓存的成本