英伟达用分层KV缓存和Dynamo引擎扩展大语言模型内存

英伟达通过Dynamo引擎实现分层KV缓存,将大语言模型的键值对存储从GPU高带宽内存扩展至CPU内存、直连SSD和网络存储。该技术解决了GPU内存不足时向量数据被驱逐需重新计算的问题,通过多层存储架构提升推理效率。Dynamo支持vLLM等推理引擎,具备分离服务、智能路由等四大功能。目前已有Cloudian、DDN、戴尔、HPE、NetApp、Pure Storage等多家存储厂商宣布支持该技术。

英伟达GPU在大语言模型内存缓存中以键值对形式存储向量——KV缓存——采用多层结构分层存储,最终延伸到网络连接的SSD存储。

向量是大语言模型处理项目(词语、图像、视频帧、声音)的多维特征编码值,用于语义搜索以响应输入请求。这些请求本身也会被向量化,大语言模型处理它们并在向量存储中查找元素来构建响应。这些元素是存储在GPU高带宽内存中的键值对,作为KV缓存。当特定响应会话所需的向量大于可用GPU内存时就会出现问题。此时现有向量会被驱逐,如果再次需要则重新计算——这需要时间。更好的做法是将它们移动到内存-存储层次结构的下层,以便在需要时读回GPU内存,而不是重新计算。这就是分层KV缓存的作用,英伟达的Dynamo软件实现了这一功能。

大语言模型处理响应时有两个阶段:预填充和解码。在预填充阶段,输入请求被分解为Token——基本词语或词语片段——然后被向量化并在内存中表示为KV对。这个过程计算密集但可以并行化。解码阶段是大语言模型构建输出的阶段,按顺序一次生成一个Token。每个新Token都基于之前生成的Token进行预测,结果存储在KV缓存中。第一个输出Token依赖于所有提示Token。第二个输出Token依赖于所有提示Token加上第一个输出Token。第三个输出Token依赖于所有提示Token加上第一个和第二个输出Token,以此类推。

当输出完成时,KV缓存内容仍在GPU内存中,可能需要保留以供用户后续问题或迭代推理大语言模型使用。但当新请求到来时,KV缓存内容会被驱逐。除非存储在其他地方,否则再次需要时必须重新计算。vLLM和LMCache等技术将GPU的KV缓存卸载到GPU服务器的CPU DRAM(二级内存)中,这可能比可用的GPU内存更大。

Dynamo是一个低延迟KV缓存卸载引擎,适用于多节点系统。它支持vLLM和其他推理引擎,如TRT-LLM和SGLang,以及大规模分布式推理。Dynamo在内存和存储层次结构中工作,从HBM,通过CPU的DRAM,到直连SSD和网络化外部存储。

它有四个特性:分解式服务、智能路由器、分布式KV缓存管理器和英伟达推理传输库(NIXL)。英伟达表示:"分解预填充和解码显著提升性能,参与推理的GPU越多,效率提升越明显。"

Dynamo 1.0版本支持KV缓存卸载到系统CPU内存,后续版本将扩展支持SSD和网络对象存储。它是开源软件。

许多存储供应商支持英伟达的AI数据平台及其包含的英伟达AI企业软件和NIM微服务,Dynamo是其中一部分。我们了解到Cloudian、DDN、戴尔、日立万塔拉、HPE、IBM、NetApp、PEAK:AIO、Pure Storage、VAST Data和WEKA都将支持Dynamo,Cohesity也是如此。Hammerspace和Pliops也支持KV缓存分层。

例如:

Cloudian将支持KV缓存分层

DDN表示其Infinia对象存储系统"专为以亚毫秒延迟提供KV缓存服务而设计"。

VAST Data在其关于Dynamo支持的博客中说:"Dynamo背后的分布式架构自然支持实现分解式预填充和解码。这作为另一种策略,通过加速计算来增强调度,提升推理吞吐量并最小化延迟。它通过分配一组GPU运行预填充,并让NIXL使用RDMA将数据移动到另一组执行解码过程的GPU来工作。"

WEKA在其博客中讨论了使用增强内存网格概念的分层KV缓存方法,指出"当在HBM之外存储缓存时,WEKA增强内存网格快速异步存储KV缓存以最大化效率。"作为性能示例,它说:"基于我们实验室中配备72个NVMe驱动器的八主机WEKApod测试,单个八路H100(张量并行度为8)展示了每秒938,000个Token的检索率。"

来源:BLOCKS & FILES

0赞

好文章,需要你的鼓励

2025

07/08

08:46

分享

点赞

邮件订阅