面向长上下文服务的KV-Cache优化:任务质量与系统性能的基准测试

arXiv cs.CL 论文

摘要

本文提出了一个负载感知的基准测试,在长上下文LLM服务任务上比较了KV-cache压缩技术(量化、剪枝、合并),发现仅压缩比不足以预测性能,并倡导负载感知的选择。

arXiv:2607.05399v1 Announce Type: new 摘要:大语言模型服务在长上下文工作负载下日益受到KV缓存增长的制约,然而现有的KV缓存压缩技术难以比较,因为它们在不同的模型、任务、预算和服务堆栈上进行了评估。本文提出了一个负载感知的基准测试,评估了代表性的KV缓存优化机制,包括量化、剪枝和合并,具体包括KIVI、TurboQuant、SnapKV和CaM,使用Llama-3.1-8B-Instruct和Mistral-7B-Instruct-v0.3在LongBench风格的多文档问答、单文档问答、少样本学习和摘要工作负载上进行评估。该基准测试衡量了任务质量、平均输出吞吐量、平均首个令牌时间和不同上下文长度桶下的实际压缩比。结果表明,仅压缩比不足以预测端到端性能。KIVI4在跨模型时提供了最稳定的质量,SnapKV在长上下文吞吐量上表现最强,而CaM在特定问答工作负载上取得了较大增益,但在质量和实际压缩比上表现出显著的工作负载敏感性。这些发现促使我们选择负载感知的KV缓存机制,而非一刀切的压缩,并为长上下文服务系统提供了部署指导。
查看原文
查看缓存全文

缓存时间: 2026/07/08 04:40

# 评估长上下文服务中KV缓存优化对任务质量与系统性能的影响 [实验、分析与基准测试] 来源:https://arxiv.org/html/2607.05399

###### 摘要。大型语言模型服务在长上下文工作负载下日益受到KV缓存增长的制约,然而现有的KV缓存压缩技术难以比较,因为它们在不同的模型、任务、预算和服务栈上进行了评估。本文提出了一个工作负载感知的基准测试,对代表性的KV缓存优化机制(包括量化、剪枝和合并)进行了评估,包括KIVI、TurboQuant、SnapKV和CaM,并在使用Llama-3.1-8B-Instruct和Mistral-7B-Instruct-v0.3模型的LongBench风格的多文档问答、单文档问答、少样本学习和摘要工作负载上进行了评测。该基准测试测量了任务质量、平均输出吞吐量、平均首词延迟以及跨上下文长度桶的实际压缩比。结果表明,仅凭压缩比很难预测端到端性能。KIVI4在不同模型中提供了最稳定的质量,SnapKV在长上下文吞吐量方面表现最佳,CaM在选定的问答工作负载上取得了显著提升,但在质量与实际压缩比方面表现出较大的工作负载敏感性。这些发现促使人们根据工作负载选择KV缓存机制,而非采用一刀切的压缩方案,并为长上下文服务系统的部署提供了指导。

PVLDB引用格式:PVLDB, 14(1): XXX-XXX, 2020。doi:XX.XX/XXX.XX (https://doi.org/XX.XX/XXX.XX)
††本文根据知识共享署名-非商业性-禁止演绎4.0国际许可协议授权。请访问
https://creativecommons.org/licenses/by-nc-nd/4.0/ 查看该许可副本。对于超出本许可范围的任何使用,请通过发送邮件至 [email protected] (https://arxiv.org/html/2607.05399v1/mailto:[email protected]) 获取许可。版权归作者所有。出版权授予VLDB Endowment。VLDB Endowment会议录,第14卷,第1期,ISSN 2150-8097。doi:XX.XX/XXX.XX (https://doi.org/XX.XX/XXX.XX)

## 1. 引言

大型语言模型(LLM)的应用在广泛的数据密集型任务中迅速增长,包括文档摘要、多轮对话和代码分析(Duan et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib56); Barbon Junior et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib57))。随着这些应用越来越依赖长上下文输入,高效的LLM服务已成为一个关键的系统挑战。特别是,LLM中使用的键值(KV)缓存随输入长度线性增长,导致推理过程中产生巨大的内存和带宽开销(Liu et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib55))。这推动了近期大量关于KV缓存优化技术的研究,例如量化、剪枝和合并,以实现可扩展的长上下文服务。

数据管理界最近开始通过重新思考LLM服务栈和系统级优化来应对这些挑战。先前的工作探索了通过提高推理流水线效率、内存感知调度和硬件感知优化来增强LLM服务(Pan and Li, 2025 (https://arxiv.org/html/2607.05399#bib.bib58); Li et al., 2025b (https://arxiv.org/html/2607.05399#bib.bib59); Yuan et al., 2025 (https://arxiv.org/html/2607.05399#bib.bib61); Li et al., 2024a (https://arxiv.org/html/2607.05399#bib.bib62))。一个日益增长的研究领域关注KV缓存压缩技术,以减少内存占用并提高解码效率(Wang et al., 2025b (https://arxiv.org/html/2607.05399#bib.bib60))。然而,这些提出的方法仅在孤立环境中或与少数其他技术进行了比较。相应的出版物使得直接比较变得困难,因为它们使用了不同的模型、数据集、压缩预算和系统配置。因此,这些方法之间的优劣以及哪种方法最适合不同的工作负载仍不清楚。这种缺乏统一且工作负载感知的评估是文献中的一个关键空白。

特别是,现有研究往往孤立地关注模型质量或系统效率,而没有联合分析它们的权衡(Liu et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib55); Yuan et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib54))。此外,对于KV缓存优化如何影响诸如内存和带宽等系统指标,在不同任务类型、输入长度和模型架构下的理解仍然有限。这阻碍了稳健的KV缓存压缩技术和系统级优化策略的发展。在本文中,我们提出了一个针对KV缓存优化方法的全面基准测试,该测试联合评估了长上下文工作负载下的任务质量和系统性能。我们专注于三种主要范式的代表性推理时技术:量化、剪枝和合并。我们使用了广泛使用的指令调优模型,Llama-3.1-8B-Instruct(He et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib16))和Mistral-7B-Instruct-v0.3(Jiang et al., 2023 (https://arxiv.org/html/2607.05399#bib.bib53)),并涵盖了任务级准确性和系统级效率。我们的基准测试基于LongBench套件(Bai et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib51)),从中我们选择了六个数据集来评估四个类别的任务质量:多文档问答、单文档问答、少样本学习和摘要。为了评估系统性能,我们使用了三个代表性的长上下文数据集:NarrativeQA、GovReport和Qasper。我们测量了关键指标,包括首词延迟(TTFT)、输出吞吐量和预填充KV缓存内存占用。这种对质量和系统性能的双重评估使我们能够捕捉不同KV缓存压缩策略在准确性保持和推理效率之间的权衡。

我们的主要贡献如下:

- • 我们提出了一个工作负载感知的基准测试,系统性地评估了KV缓存压缩方法在任务质量和系统性能两个维度上的表现。这提供了对这些方法及其相关权衡的整体视角。
- • 我们对来自量化(KIVI, TurboQuant)、剪枝和驱逐(SnapKV)以及合并(CaM)的代表性方法进行了统一评估,使用了一致的模型、数据集和实验设置。这提供了在现实条件下的公平比较。
- • 我们研究了准确性、吞吐量、延迟和内存占用之间的权衡,并证明仅凭压缩比不足以评估KV压缩方法的端到端性能。这一见解具有直接的实用价值,并指导未来关于新KV缓存优化的研究。

本文组织如下。第2节 (https://arxiv.org/html/2607.05399#S2)介绍了LLM服务和KV缓存优化的必要背景,包括我们在基准测试中使用的技术的详细介绍。在第3节 (https://arxiv.org/html/2607.05399#S3)中,我们详细介绍了实验设置,包括工作负载、设置和指标。在此基础上,我们在第4节 (https://arxiv.org/html/2607.05399#S4)中讨论了结果。从结果中,我们在第5节 (https://arxiv.org/html/2607.05399#S5)中得出了实际见解和经验教训。最后,我们在第6节 (https://arxiv.org/html/2607.05399#S6)中讨论了相关工作,然后在第7节 (https://arxiv.org/html/2607.05399#S7)中总结全文。

## 2. 背景

参照图1。LLM推理中的预填充和解码阶段。在预填充阶段之后,标记T0被解码。在解码步骤中每生成一个标记后,KV缓存都会更新。每次解码步骤后都会进行解码。每个标记(T0, T1, T2, T3,..., Tn)被依次解码并输出。

### 2.1. LLM推理服务

大型语言模型(LLM)推理服务是指在预训练模型上执行查询以实时生成输出的系统级过程。图1 (https://arxiv.org/html/2607.05399#S2.F1)描绘了一个典型的服务流水线:首先对输入提示进行分词,即从原始文本转换为模型可以处理的离散标记ID序列。然后在预填充阶段处理分词后的输入。在此阶段,对整个输入提示进行编码,并计算和存储中间键和值(KV)。接着是解码阶段,其中标记以自回归方式逐步生成(Wang et al., 2025b (https://arxiv.org/html/2607.05399#bib.bib60))。每个生成的标记随后被解码,即从标记ID映射回人类可读文本,从而向用户提供流式输出。

#### 预填充阶段。
设 X ∈ ℝ^{b×l_{prompt}×d} 表示输入张量,其中 b 是批大小,l_{prompt} 是提示长度,d 是模型隐藏层大小。为简单起见,我们省略层索引。键和值张量计算如下:
X_K = X W_K, X_V = X W_V
其中 W_K, W_V ∈ ℝ^{d×d} 分别是键和值的投影矩阵。计算完成后,X_K 和 X_V 被存储在KV缓存中,以促进高效解码(Liu et al., 2024c (https://arxiv.org/html/2607.05399#bib.bib17))。

#### 解码阶段
设 t ∈ ℝ^{b×1×d} 表示当前输入标记嵌入。对应的键和值输出计算为 t_K = t W_K 和 t_V = t W_V。首先,通过追加新条目来更新KV缓存:
X_K ← Concat(X_K, t_K), X_V ← Concat(X_V, t_V)。
接下来,注意力输出计算如下:
t_Q = t W_Q,
A = Softmax(t_Q X_K^⊤),
t_O = A X_V,
其中 W_Q 表示查询投影矩阵。为简单起见,我们省略了注意力输出投影层和完整推理流水线的其他组件(Liu et al., 2024c (https://arxiv.org/html/2607.05399#bib.bib17))。为了避免在每个解码步骤重新计算所有先前标记的注意力,现代LLM系统维护了一个KV缓存。对于长度为 N 的序列,每个Transformer层存储对应于所有过去标记的键和值张量。在解码期间,当前标记的查询向量会关注缓存的键和值,从而将每步的计算复杂度从 O(N^2) 降低到 O(N)(Liu et al., 2024b (https://arxiv.org/html/2607.05399#bib.bib63))。这种对先前计算表示的复用对于实现低延迟推理至关重要。

然而,KV缓存可能成为主要的系统瓶颈。其内存占用随序列长度和层数线性增长,在长上下文场景中往往主导GPU内存使用(Li et al., 2025b (https://arxiv.org/html/2607.05399#bib.bib59))。对于大型模型和长输入,KV缓存的存储和访问成为吞吐量和可扩展性的主要限制因素。这推动了许多关于KV缓存优化技术的研究,包括量化、剪枝和合并,这些技术旨在减少内存使用,同时保持模型准确性。

### 2.2. KV缓存优化分类

为了压缩KV缓存大小,已经提出了四种主要方法。

#### 量化
第一种主要方法保留KV缓存中的所有条目,但减少存储键和值的编码的位长度(精度)。许多KV量化算法的一个共同主题是混合精度,其中重要的标记保持较高精度,而其他标记则被大幅量化。例如,ZipCache(He et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib16))和QAQ(Cheng et al., 2025 (https://arxiv.org/html/2607.05399#bib.bib20))使用注意力导出的属性来识别重要标记并以较高精度存储它们。在ZipCache中,提出了一种通道级标记量化以减少参数开销,并通过归一化注意力分数来指导要保留哪些标记。类似地,KIVI(He et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib16))发现键有少数大幅度通道而值没有。因此,它对键应用逐通道量化,对值应用逐标记量化,从而实现2位KV存储且几乎没有准确性损失。KVQuant(Hooper et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib19))也利用了KV结构。它在旋转嵌入之前量化键,并通过保持较高精度来隔离每个向量中的异常值。另一类方法使用向量变换或码本来简化量化。例如,CommVQ(Li et al., 2025a (https://arxiv.org/html/2607.05399#bib.bib22))和PQCache(Cheng et al., 2025 (https://arxiv.org/html/2607.05399#bib.bib20))应用向量量化。它们将每个KV向量拆分为子向量或加法码分量,并存储紧凑索引而不是完整的浮点值。CommVQ(Li et al., 2025a (https://arxiv.org/html/2607.05399#bib.bib22))甚至设计了与旋转嵌入可交换的码本,从而实现低至1位的精度且损失极小。PolarQuant(Wu et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib23))和TurboQuant(Zandieh et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib24))应用随机旋转或坐标变换:PolarQuant(Wu et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib23))在随机旋转后将KV向量变换为极坐标,产生紧密分布的角值,可以在没有额外缩放参数的情况下进行量化。TurboQuant(Zandieh et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib24))表明,随机旋转使每个坐标遵循集中的Beta分布,因此简单的最优标量量化器几乎可以达到理论最佳失真。量化方法以增加计算或设计复杂性为代价来换取内存。混合精度方案需要使用注意力分数或范数来计算标记重要性,而逐通道方法需要特殊的数据分组。基于变换的方法在解码时产生旋转或投影向量的开销,乘积量化使用码本进行编码/解码。然而,额外的计算成本换来了数量级的内存节省,且只有很小的准确性下降。激进的量化增加了压缩但可能损害输出质量。保留异常值或调整精度的方法以额外开销为代价缓解了这一问题(Hooper et al., 2024 (https://arxiv.org/html/2607.05399#bib.bib19); Zandieh et al., 2026 (https://arxiv.org/html/2607.05399#bib.bib24))。

#### 剪枝
第二种主要方法通过沿标记或结构维度压缩KV缓存来解决问题,要么丢弃不太重要的标记,要么稀疏化它们的表示。核心思想是根据某种重要性信号对标记进行排序,并只保留一个子集。类似于量化,许多剪枝方法使用注意力导出的分数来决定保留哪些标记。例如,SAGE-KV(Wang et al., 2025a (https://arxiv.org/html/2607.05399#bib.bib67))在预填充后计算注意力,并只保留顶部

相似文章

PolyKV: 异构保留与分配的KV缓存压缩

arXiv cs.LG

PolyKV是一种逐层的KV缓存压缩框架,为每一层分配异构的驱逐策略和非均匀的预算,在LongBench上使用LLaMA-3.1-8B和Qwen3-8B相比统一基线有显著提升。

KV缓存压缩的消融、统计推断与验证

arXiv cs.LG

本文对KV缓存压缩方案(TurboQuant和SpectralQuant)进行了系统的比较研究,介绍了一种统计验证方法,并针对高效Transformer推理提供了特定场景下的建议。