大数跨境

AI系列专题 | 揭秘AI原生KV Cache Storage如何实现超20倍AI推理加速(上篇)

AI系列专题 |  揭秘AI原生KV  Cache Storage如何实现超20倍AI推理加速(上篇) ExponTech
2025-11-06
2
编者按

AI 推理的性能瓶颈,往往藏在数据流转与缓存效率的细节里。当大模型落地千行百业,“更快响应”“更低成本” 的需求愈发迫切,而 KV Cache 作为 Transformer 架构推理的核心组件,其存储与调度能力直接决定着 AI 服务的上限。华瑞指数云ExponTech将用三篇内容层层拆解性能飞跃的核心密码:从底层技术逻辑拆解,到完整方案架构解析,再到真实场景实战测试,用硬核技术、清晰方案、可信数据,带您看透原生 KV Cache Storage 如何打破传统瓶颈。《揭秘AI原生 KV Cache Storage 如何实现 20 倍 AI 推理加速》系列连载内容,今天先奉上“上篇”,后续两篇内容将陆续上线,敬请持续关注,一起解锁 AI 推理加速的关键答案!





01

前言


以KV Cache为中心优化和加速AI推理系统的性能是当下全球AI Infrastructure领域的热点课题。华瑞指数云面向AI推理场景,原生设计和实现了分布式的KV Cache Storage,命名为WQS (WiDE Query Storage)。WQS可以与主流AI推理框架无缝兼容,协同工作,构建一个大规模的全局共享的分布式KV Cache集群,能够实现分布式AI推理系统的总体性能的大幅提升。

WQS的技术路径采用创新的原生KV接口和分布式KV Storage存储,不再依赖于文件系统的硬盘空间管理,目录树元数据,文件协议栈等对于KV Cache来说冗余无用的体系,实现了极精简和可以高度并行的IO路径,适应KV Cache面对不同IO Size的并发随机读写需求,并且达到带宽的最大化和最低的时延。

近日华瑞指数云与合作伙伴英伟达,超擎数智,DaoCloud等进行了WQS在真实AI推理环境上的联合测试。测试结果表明,WQS最高可以将AI推理系统的首Token响应时延TTFT降低至原来的1/20,总的Token吞吐量提升超过20倍。同时也对比测试了基于高性能分布式文件系统的KV Cache方案,测试结果表明,WQS创新的原生KV Storage方案在长上下文场景下,对比基于高性能分布式文件存储的KV Cache方案,实现TTFT降低至1/3,Token吞吐量提升3倍,实证了WQS采用原生设计的KV接口和分布式KV Storage来实现KV Cache的技术优势和巨大发展潜力。


02

KV Cache原理与挑战

2.1 KV Cache基本原理

基于Transformer架构的现代生成式大型语言模型(LLM)的核心是其自回归(autoregressive)的生成机制,即逐个token地预测和生成文本,这种自回归生成计算模式的特征是每个新生成的token都依赖于所有先前处理过的token,自回归生成过程中注意力计算的复杂度是序列长度的二次方(O(n2)),其计算复杂度很高。

KV Cache是一种关键的优化技术,通过存储注意力机制的中间状态(即K向量和V向量),来避免在生成每个新token时重复计算整个序列的历史信息。KV Cache本质上是一种以空间换时间,以存力换算力的技术方案,其基本思路是将之前所有生成步骤中为每个Transformer层计算的Key和Value存储下来:


KV Cache缓存机制

当生成第1个token时,我们计算其对应的Key₁和Value₁,并将其存入缓存。

当生成第2个token时,我们只计算当前新token(第2个token)的Key₂和Value₂。对于之前第1个token的Key₁和Value₁,我们直接从缓存中读取,而无需重新计算。

以此类推,生成第t个token时,我们只需要计算当前token的Keyₜ和Valueₜ,并从缓存中获取之前所有t-1个token的Key₁...Keyₜ₋₁和Value₁...Valueₜ₋₁。


计算流程的转变

KV Cache每次生成的计算复杂度与序列长度t的平方(O(t²))相关,因为需要为所有t个token计算K和V。

KV Cache:推理框架中的KV Cache管理器用一部分GPU内存来存储历史Token的中间计算结果(K和V),当序列中有与缓存的历史Token相同的前缀时,这些Token无需计算,只需要计算新token。这种方式,换来了推理速度的极大提升,尤其是在生成长文本时,效果尤为显著。


2.2 KV Cache带来的挑战

KV Cache是Transformer模型在自回归推理场景下不可或缺的加速技术。它通过巧妙地缓存中间状态,将生成每个新token的计算复杂度从平方级降至线性级(O(t)),是实现AI模型高效服务的基石。尽管KV Cache带来了显著的性能收益,但它也引入了一系列不容忽视的挑战,尤其是在部署百亿甚至千亿参数级别的大模型时:

巨大的内存占用:

这是KV Cache最直接、最严峻的挑战。其内存占用与以下因素成正比:批处理大小,序列长度,模型层数,注意力头数,Key/Value的向量维度。

具体的内存占用公式可以近似为:Batch Size × Sequence Length × Number of Layers × 2 × Hidden Size per Head × Number of Heads × Bytes per Parameter (e.g., 2 for fp16)。

例如,一个175B参数的模型,在批处理大小为32、序列长度为2048的设置下,KV Cache可能占用高达数百GB的显存,这常常成为推理吞吐量的主要瓶颈,甚至超过了模型参数本身的内存占用。实际上由于模型执行推理任务是一个长期持续的过程,执行推理任务十分钟就有可能产生数百TB的数据量,远远不是GPU的显存可以存储下来,因而使用显存只能保存最近产生的,最热的KV向量,大量的KV向量值被迫丢弃,依然导致大量的重复计算。

序列长度和批处理大小受限:

显存资源不足直接导致了两个核心限制:

最大上下文长度(sequence_length)受限:对于单个请求,缓存大小决定了模型能处理的最大上下文长度。

最大批处理大小(batch_size)受限:对于多个请求,总缓存大小限制了系统能同时服务的并发用户数。

为了在有限的显存中运行,系统常常陷入两难处境:为了提升吞吐量,我们希望增大批处理大小;但增大批处理大小会使KV缓存膨胀,撞上显存容量墙,这又反过来迫使我们减小批处理大小,最终导致吞吐量下降和算力闲置。

系统级低效:

在实际应用中,用户的请求序列长度千差万别。为了高效地进行批处理,服务端需要将多个不同长度的请求组合在一起。这导致了内部碎片,为了统一批处理,通常需要将批内所有序列填充到该批中最长的序列长度。对于较短的序列,其KV Cache中未被使用的部分就造成了显存的浪费。



03

单节点KV Cache实现方案


当前业界主流的大模型推理框架主要包括 vLLM、SGLang 等。这些推理框架已经实现了单推理节点或者单卡上面的KV Cache方案, 已经取得了非常好的基于单节点KV Cache的推理优化和加速效果。

以vLLM为例:

尽管KV Cache技术显著降低了计算延迟,降低了推理算力消耗,但其巨大的内存占用本身却成了提升吞吐量的主要瓶颈。传统的KV Cache管理方式面临着内部碎片化严重和无法利用语义重复两大痛点,导致昂贵的GPU显存利用率低下。vLLM框架通过其革命性的PagedAttention与Prefix Caching机制,巧妙地解决了这些问题:


3.1 PagedAttention:为KV Cache引入“虚拟内存”

传统KV Cache管理方式将每个序列的缓存视为一个连续的内存块。这导致了与操作系统内存管理中类似的“外部碎片”问题:即使显存总容量充足,由于缺乏足够大的连续空间,新的请求也无法被处理。

vLLM的核心洞察是将KV Cache的物理存储与逻辑概念分离,其灵感直接来源于操作系统的虚拟内存和分页机制。

逻辑块与物理块: vLLM将每个序列的KV Cache在逻辑上划分为一系列固定大小的“块”(Blocks),每个块负责存储一定数量token的Key和Value向量。在物理上,它维护着一个全局的物理块池。

块表: 每个序列维护一个“块表”,该表记录了其逻辑块到全局物理块池中物理块的映射关系。这与操作系统的页表功能完全类似。

优势:

消除外部碎片:由于块是固定大小的,任何释放的物理块都可以立即被新的请求复用,彻底解决了因寻找连续内存而导致的显存浪费。

高效共享:这是实现Prefix Caching的基础。多个序列可以将其块表中的某些项指向同一个物理块,从而实现内存的零拷贝共享。

通过PagedAttention,vLLM实现了近乎100%的显存利用率,允许系统在固定的GPU内存下运行远超以往的批处理大小,从而极大地提升了吞吐量。


3.2 Prefix Caching:化“重复计算”为“零拷贝共享”

在提示词工程实践和多轮对话等典型场景中,大量请求往往拥有相同的系统提示词,或者多个对话共享一段相同的上下文前缀。在传统模式下,即使前缀完全相同,每个序列也需要独立地计算并存储这部分前缀的KV Cache,造成了大量的重复计算和内存浪费。

vLLM基于PagedAttention的共享机制,实现了高效的Prefix Caching。

工作机制:

系统会预先计算或在使用过程中动态缓存常见前缀(如系统提示词)的KV Cache,并将其存储在特定的、可共享的物理块中。

当一个新请求到来,并识别出其拥有某个已缓存的前缀时,vLLM并不会为该前缀分配新内存或进行计算,而是简单地将该序列块表的前几项直接指向已缓存的共享物理块。只有在前缀之后的不同部分,系统才会为其分配新的物理块并进行计算。

性能飞跃:

计算侧: 避免了针对共享前缀的重复的Transformer前向计算,显著降低了计算延迟。

内存侧: 实现了跨序列的KV Cache零拷贝共享,原本呈线性增长的内存占用现在变成了常数级,对于高并发服务场景,其内存节约效果是颠覆性的。



04

分布式环境上的KV Cache实现方案


vLLM等推理框架实现的KV Cache机制,在单节点的推理上面能起到非常好的推理加速的效果,但是有两个比较大的缺点:一. 它无法超越单个GPU的物理显存容量上限,没有在根本上解决显存空间不足的问题 二. 缺乏跨节点的全局KVCache共享机制,不同GPU卡或者不同算力节点在处理有重复前缀的提示词时仍需在各自的本地显存中重复计算和存储 KV Cache。

 当前以vLLM为代表的单节点优化确实已触及天花板,下一阶段的技术热点正在转向分布式的KV Cache和全局优化,也指明了下一代推理框架的进化方向:构建一个支持跨节点协作的、全局感知的分布式KV Cache系统。业界正在从以下几个方向进行积极探索。


4.1 显存扩容:从GPU到CPU到NVMe SSD的层级化存储

既然单GPU显存不足,最直接的思路就是将其“溢出”到更庞大、更廉价的存储层级中。


CPU Offloading

原理:将当前活跃序列的KVCache保留在GPU显存中,而将非活跃(例如,因等待用户输入而暂停)或历史序列的KVCache换出到主机CPU内存,当需要时再换回GPU。

挑战:在GPU与CPU之间传输KV Cache会引入显著的通信延迟,虽然通过预取等流水线技术可以掩盖部分延迟,但对于实时推理而言,其性能抖动依然是一个需要精心权衡的问题。


NVMe SSD Offloading

原理:这是CPU Offloading的进一步延伸,将“冷”的KVCache存储到NVMe固态硬盘中。NVMe SSD的容量远超CPU内存,成本更低,为超长上下文(如百万token)的缓存提供了理论可能。

挑战: NVMe的I/O速度远慢于CPU内存,延迟更高,需要更加精心设计KV Cache在不同速度的存储层次上的调度策略以及流水线并行和预取技术。

层级化存储的本质是构建一个由“GPU显存 -> CPU内存 -> NVMe SSD存储”组成的虚拟化、一体化的KVCache池,它可以在很大程度上解决显存容量不够的问题,但代价是引入了新的数据移动开销和复杂的缓存置换策略。现在主流的AI推理框架(如vLLM)均已经初步实现了层级化的KV Cache存储。但是,这种层级化的KV Cache方案依然是单点的,GPU显存是给单卡用的,CPU内存和NVMe SSD都是推理服务器节点本地范围内,没有形成跨节点的全局KV Cache共享机制。


4.2 跨节点全局KV Cache共享,构建全局统一的KVCache服务

这是解决KV向量“重复计算”问题的治本之策,其核心思想是将KV Cache提升为一种可被推理集群内所有推理实例访问的“全局服务”


架构: 设计一个分布式架构的KV Cache池,可能使用配置大内存的多台服务器构建内存池,或者使用配置高速大容量的NVMe SSD的多台服务器构建SSD池,配备高速网络将这些服务器互连起来,在这个分布式的KV Cache池中集中存储推理集群产生的KV向量,尤其是常见的系统提示词、文档上下文前缀等的KV向量可以长期持久化保存,通过网络给推理集群内的所有推理节点和推理卡提供全局共享读写访问能力。当推理节点接收到任何包含共享前缀的请求时,它首先向中心化KV Cache服务查询该前缀的KV Cache。如果命中,则直接通过网络从KV Cache池中获取,避免了重复计算,只有未命中的新Token部分才需要消耗推理卡算力进行计算。



技术挑战:

网络瓶颈: 通过网络传输整个KV Cache(尤其是长序列)的延迟和带宽消耗可能抵消甚至超过本地计算的开销。这要求极高的网络带宽(如InfiniBand)。

存储瓶颈: 构成KV Cache池的分布式存储系统需要能够提供极大的存储带宽和极低时延的IO读写,提供高效的查询检索能力。

动态分层与智能调度:系统根据KV Cache的访问热度,在单卡的显存,主机的内存以及外置的全局分布式KV Cache存储间动态迁移数据。

流水线并行和一致性: 许多推理节点和推理卡同时并发访问KV Cache池,为了掩盖外置KV Cache池与推理卡显存之间的带宽和时延差距,通常需要采用流水线并行和预取技术将KV值从全局共享的KV Cache池预加载到推理卡的显存中,需要AI推理框架与GPU显存,主机内存,网络以及外置的分布式存储系统的全链路协同,如何预加载,失效或更新全局KV Cache中的数据,保证一致性是一个复杂的分布式系统问题。

当前,构建高效的全局共享的分布式KV Cache系统已经成为了全球AI基础设施和AI推理领域的一个共识,该架构通过将KV Cache卸载到由多级存储介质组成的分布式池中,实现显存资源的弹性扩展与全局共享,显著提升推理效率与经济性。



业界实践:

分层分布式KV Cache架构的核心思想是将数据放置在合适的存储层级,以平衡速度、容量与成本。其典型结构如下:

(1) L1级缓存(显存):

  • 定位:用于存储当前最活跃的Token对应的KV Cache,确保注意力计算能直接以最高速度访问。

  • 介质:GPU高带宽内存(HBM),提供最高的带宽,但容量有限(例如H100的80GB)。

  • 实践:在vLLM等推理引擎中,PagedAttention机制正是对L1缓存进行精细化管理,以提升显存利用率。


(2) L2级缓存(主机内存池):

  • 定位:作为L1的“溢出区”,存储非活跃但仍可能被频繁访问的KV Cache(例如同一会话中稍早的Token)。

  • 介质:由集群中服务器主机的DRAM通过高速网络(如RDMA)池化形成的一个分布式内存池。

  • 实践:MOONCAKE创新性地提出了以KVCache为中心的分布式架构,通过构建全局共享的内存池,实现了跨节点的KVCache复用与高效调度。英伟达的Dynamo引擎也支持将KV Cache卸载到系统CPU内存中。


(3) L3级缓存(外置存储池):

  • 定位:存储大量的、访问频率较低的KV Cache,例如历史对话记录,常见的系统提示词、文档上下文前缀部分。它为整个系统提供了近乎无限的容量扩展能力。

  • 介质:由NVMe SSD组成的大规模外置分布式存储池。

  • 实践:全球有若干新兴的分布式存储厂家和传统存储巨头推出了其KV存储方案,这些方案可以对接到vLLM, Dynamo等推理框架中,承接从GPU显存或者内存中溢出的KV 向量,提供一个几乎可以无限扩展容量,可以持久化的KV存储空间。当前这些存储厂家推出的KV存储方案,普遍的技术路线是基于其现有的分布式文件系统产品,在推理集群的每一台推理服务器上挂载一个可以共享读写的共享目录,然后在推理框架内对KV向量的读写,一般是把许多个Token的KV向量打包成一个block或chunk,再把这些block或chunk转化为一个个的文件,利用分布式文件系统全局共享读写的能力完成这些文件的读写操作。这种基于传统的分布式文件系统来实现外置存储KV Cache的方案,天然的利用了分布式文件系统全局共享读写,管理硬盘空间,基于文件名进行检索等能力,实现起来简单易行,可以解决KV Cache的容量不足以及无法全局共享和持久化的问题,达到较好的加速推理系统的性能的效果。但是KV Cache的管理和读写本身并不需要一个文件系统的复杂功能和复杂的元数据体系,基于文件系统来实现KV Cache池不可避免的带有分布式文件系统的缺点:随机读写性能差带宽无法跑满,文件系统的目录树元数据非常复杂导致元数据读写性能低,文件个数多了之后性能下降,文件系统协议栈读写路径长导致时延大等,这些缺陷将进一步加剧KV Cache的带宽墙和性能瓶颈,不利于推理系统的总体性能的提升。因此,基于传统分布式文件系统来构建大规模的KV存储池目前还只是当下KV Cache存储池实现方案的权宜之计,在本领域应当出现更好的原生KV Storage方案,与推理框架,算力等进行更好的协同,达到更加优异的推理性能和更加简化的管理。


华瑞指数云ExponTech《揭秘AI原生 KV Cache Storage 如何实现 20 倍 AI 推理加速》系列专题的中篇、下篇内容将陆续上线,敬请关注!

END


推荐阅读:





华瑞指数云再获国家权威认证:全部代码自主率95.63%!

媒体报道 | 36氪专访华瑞指数云:SDS进入2.0时代,渐进式迭代以10年为周期


“颠覆·挑战·极致”华瑞指数云ExponTech WDS新一代产品重新定义企业存储和数据架构


全球第一!华瑞指数云ExponTech创造SPC-1全球存储性能新世界纪录


图片

【声明】内容源于网络
0
0
ExponTech
帮助企业打造新一代数据架构,让未来更有数!
内容 0
粉丝 0
ExponTech 帮助企业打造新一代数据架构,让未来更有数!
总阅读0
粉丝0
内容0