技术指南

KV缓存优化

KV 缓存存储变压器已经计算出的键和值,因此它不会为每个新令牌重做工作 - 但它可以膨胀到千兆字节。

概述

KV 缓存存储变压器已经计算出的键和值,因此它不会为每个新令牌重做工作 - 但它可以膨胀到千兆字节。 KV 缓存优化会缩小并管理该内存,因此模型可以同时为更多用户提供更长的上下文。

KV 缓存优化是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

在变压器中,每个新令牌通过注意力的键(K)和值(V)关注所有先前的令牌。在每一步重新计算整个序列的 K 和 V 会是二次的且浪费的,因此模型缓存它们:KV 缓存。缺点是尺寸。缓存随着序列长度、批量大小、层和头线性增长,因此长上下文请求可能消耗比模型权重本身更多的 GPU 内存。优化从几个角度解决了这个问题:分页内存(vLLM 的 PagedAttention)将缓存存储在不连续的块中,以消除碎片并实现共享;量化以8位或4位存储K和V;分组查询注意(GQA)和多查询注意(MQA)等架构变化让许多查询头共享更少的键/值头,从而从源头削减缓存大小。

技术洞察

PagedAttention 借用了操作系统的虚拟内存分页:缓存位于通过查找表映射的固定大小的块中,因此请求仅使用它们需要的块,并且相同的前缀(如共享系统提示符)可以指向相同的块。 DeepSeek 模型中使用的多头潜在注意力 (MLA) 将 K 和 V 压缩为一个小的共享潜在向量,在保持准确性的同时显着减少内存。

掌握 KV 缓存优化

KV 缓存存储变压器已经计算出的键和值,因此它不会为每个新令牌重做工作 - 但它可以膨胀到千兆字节。 KV 缓存优化会缩小并管理该内存,因此模型可以同时为更多用户提供更长的上下文。 KV 缓存优化是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了加深理解,请将 KV 缓存优化视为一种操作模型,而不是单个功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。

在实践中,使用 KV 缓存优化的强大团队可以根据可靠性和成本来优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。

多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。

战略影响

多年来,架构决策决定着性能和运营成本。

多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

更好的工程选择可以减少生产中的可靠性事故。

更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

KV缓存优化的未来

随着上下文窗口扩展到数十万或数百万个令牌,KV 缓存成为服务的主要成本。预计积极的缓存压缩和驱逐(丢弃低关注令牌)、默认的跨请求前缀共享、将冷缓存卸载到 CPU 或 NVMe,以及 MLA 和 GQA 等架构成为标准。缓存管理将越来越类似于具有分层和智能预取的完整内存层次结构。

现实世界的实施

vLLM 的 PagedAttention 通过打包 KV 块而不产生内存碎片来服务许多并发聊天会话

Llama 模型中的分组查询注意力机制减少了 KV 缓存大小,以便 GPU 内存可以容纳更长的上下文

将 KV 缓存量化为 8 位 (KV8),以在长文档摘要期间将缓存内存大致减半

前缀缓存可在数千个 API 请求中重用共享系统提示的 KV 块

实施模式

KV缓存优化实践

vLLM 的 PagedAttention 通过打包 KV 块而不产生内存碎片来服务许多并发聊天会话。

vLLM 的 PagedAttention 通过打包 KV 块而不产生内存碎片来服务许多并发聊天会话。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

KV缓存优化实践

Llama 模型中的分组查询注意力机制减少了 KV 缓存大小,因此 GPU 内存可以容纳更长的上下文。

Llama 模型中的分组查询注意力减少了 KV 缓存大小,因此 GPU 内存中可以容纳更长的上下文。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

KV缓存优化实践

将 KV 缓存量化为 8 位 (KV8),以在长文档摘要期间将缓存内存大致减半。

将 KV 缓存量化为 8 位 (KV8),以在长文档摘要期间将缓存内存大致减半 当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

KV缓存优化实践

前缀缓存可在数千个 API 请求中重用共享系统提示的 KV 块。

前缀缓存可在数千个 API 请求中重用共享系统提示的 KV 块。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

优化一项基准测试可以隐藏更广泛的系统弱点。

!

基础设施和维护成本常常被低估。

!

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

2

在实际负载和数据条件下进行基准测试。

在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

3

仪器监控错误、漂移和用户影响。

仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

4

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索