Beluga: A CXL-Based Memory Architecture for Scalable and Efficient LLM KVCache Management

发表时间: 2025-11 · arXiv:2511.20172

原文: https://arxiv.org/abs/2511.20172

作者/机构: Xinjun Yang, Qingda Hu, Junru Li, Feifei Li, Yicong Zhu, Yuqi Zhou, Qiuru Lin, Jian Dai, Yang Kong, Jiayu Zhang, Guoqiang Xu, Qiang Liu (Alibaba Cloud Computing)

速读

一句话结论 本文提出了Beluga,首个利用CXL 2.0交换机为GPU集群提供解耦共享内存池的架构,通过原生加载和存储语义替代RDMA网络协议,在大型语言模型推理中实现了高效的KVCache读写,将系统吞吐量最高提升了4.79倍。

要解决什么问题 在大型语言模型(LLM)的长上下文推理中,KVCache(键值缓存,用于保存历史token激活值以避免重复计算)的内存占用随上下文长度线性增长,远超单机GPU高带宽内存和CPU物理内存的容量上限。现有系统通常采用基于RDMA(远程直接内存访问)的解耦内存池来跨节点扩展容量,但RDMA本质上是网络协议而非内存总线,带来了三个致命卡点。首先是数据路径冗长,在CPU驱动模式下,数据必须经过主机内存的“反弹缓冲区”中转,形成“GPU到主机内存再到远程内存”的低效路径。其次是控制路径同步开销极高,微基准测试表明,在16KB的数据传输中,实际数据移动仅占2.68µs,而内核启动和跨组件轮询等同步开销高达约8µs。最后是面对KVCache高度碎片化的内存布局时效率暴跌,例如32B参数模型中一个KVCache块可能需要128次非连续传输,而RDMA网卡的散点和聚集列表存在硬件限制(单次最多30个条目),导致必须将操作拆分为大量独立请求,极易触发IOPS(每秒输入输出操作次数)瓶颈。这些高昂的延迟甚至会抵消KVCache重用带来的计算节省,迫使系统不得不采用极其复杂的缓存感知调度策略。

怎么做的 核心思路是将内存访问范式从网络协议转变为内存语义接口。Beluga利用CXL(Compute Express Link,一种新兴的设备间高效内存共享互连协议)2.0交换机,将多个GPU服务器连接到一个大规模共享内存池。GPU和CPU可以通过简单的加载和存储指令直接访问这个全局内存池,就像访问本地内存一样。该方法之所以能绕开原有卡点,是因为它在物理层面上消除了主机内存中转,在控制层面上将数据传输无缝集成到GPU原生的CUDA流中,彻底去除了RDMA繁琐的请求准备和跨组件同步开销。关键设计由三个部件构成。首先是统一地址空间映射,系统通过直接访问模式将CXL内存暴露为块设备,允许用户空间进程直接将其映射到虚拟地址空间。其次是软件驱动的缓存一致性管理,由于当前CXL 2.0硬件不支持跨主机的缓存一致性,Beluga针对不同操作设计了绕过缓存的策略:CPU写操作强制使用非临时存储指令直接落盘,GPU写操作禁用数据直接I/O以绕过末级缓存,而读操作前则显式调用指令使本地陈旧缓存行失效。最后是针对KVCache特性的传输引擎,Beluga摒弃了RDMA复杂的请求拆分,直接使用自定义的细粒度CUDA复制内核来处理非连续读写。对于碎片化的KVCache传输,RDMA的请求拆分复杂度为 $$N_{RDMA\_req} = \lceil \frac{N_{fragments}}{30} \rceil$$ 而Beluga通过单个内核即可完成无限的离散读写,即 $$N_{CXL\_req} = 1$$ 此外,Beluga还在CXL内存池中预留了专用空间,通过生产者和消费者模式的自旋等待标志位,实现了完全在用户空间运行的远程过程调用(RPC),用于高效同步KVCache的元数据。由于CXL提供了极低的访问延迟,Beluga彻底抛弃了复杂的缓存感知调度,转而采用简单的缓存无关调度,直接使用标准负载均衡分发推理请求。

效果如何 实验在一个由两台服务器组成的集群上进行,每台服务器配备双路Intel CPU和8张96GB显存的H20 GPU。Beluga系统通过PCIe 5.0适配器连接到一个8TB的CXL内存池。对比基线是高度优化的RDMA方案MoonCake(基于vLLM和LMCache库)以及Nvidia官方的Dynamo方案,它们代表了当前最先进的网络内存池路线。在LV-Eval长上下文问答数据集(输入超过15K tokens)和未量化的Qwen-32B模型设置下,当KVCache完全命中时,Beluga-KVCache相比MoonCake将首token生成时间降低了89.6%,系统吞吐量提升了7.35倍。在微观操作上,面对高度稀疏的KVCache读取(16个非连续token),Beluga的延迟大幅降低了95.9%;其基于共享内存的RPC往返延迟仅为2.11µs,比RDMA快4倍。该架构当前也存在局限和代价:由于数据路径必须穿过CPU的根复合体,GPU访问CXL内存的写带宽被限制在26 GB/s,未能跑满物理链路上限;同时,单内存设备在倾斜访问下会产生排队延迟,必须依赖软件层面2MB粒度的内存交错技术来强行分散负载。作者承认,彻底解决带宽瓶颈需要等待未来支持GPU直连交换机的硬件架构。

A1 主要贡献

随着大型语言模型(LLM)尺寸的急剧增大和对长上下文推理需求的增长,内存已成为GPU加速的LLM服务中的关键瓶颈。GPU上的高带宽内存(HBM)虽然访问速度快,但容量有限,必须依赖主机内存(CPU DRAM)来支持大规模的键值缓存(KVCache)。然而,DRAM的最大容量受到每个CPU插槽内存通道数量的限制。为了克服这一限制,现有系统通常采用基于RDMA的解耦内存池,但这引入了高访问延迟、复杂的通信协议和同步开销等重大挑战。新兴的CXL技术为KVCache设计带来了新机遇。

本文提出了Beluga,一个新颖的内存架构,它使GPU和CPU能够通过CXL交换机访问一个共享的大规模内存池。该设计支持通过CXL fabric进行原生的加载/存储(load/store)访问语义,从而提供接近本地内存的延迟,同时降低了编程复杂性并最小化了同步开-销。

核心问题:

研究目标:

主要贡献:

图1:RDMA/CXL内存池概览。
图1:RDMA/CXL内存池概览。

A3 背景知识

2.1 LLM推理和KVCache

LLM推理过程:大型语言模型(LLM)基于Transformer架构,其推理过程通常包括两个阶段:prefill(预填充)和decode(解码)。计算密集型的prefill阶段并行处理输入提示以生成第一个输出token。随后,decode阶段自回归地生成输出序列,每个新token的生成都依赖于所有先前的token及其对应的KV激活值。

KVCache的作用与需求:KVCache存储了先前token的中间KV激活值,是一种关键的“空间换时间”优化,避免了冗余计算,对于实现低延迟的token生成至关重要。此技术广泛用于多轮对话、共享固定上下文(如系统提示)和RAG中处理长文档等场景。这些场景催生了对高效存储系统的设计需求,以便卸载、重用和共享KVCache。这类系统有四个基本要求:

2.2 远程直接内存访问(RDMA)

RDMA基本原理:RDMA允许网络接口控制器(NIC)直接访问远程主机的内存,绕过远程CPU和操作系统内核。通过最小化网络协议栈开销,RDMA实现了高带宽和低CPU利用率,成为现代数据中心广泛采用的互连技术。

核心原语:大多数RDMA内存池依赖单边通信原语,这有助于节点间直接进行内存到内存的数据传输,消除了内核上下文切换和数据复制等传统开销。关键原语包括用于直接数据检索和放置的RDMA Read和RDMA Write,以及用于在远程内存上执行原子读-改-写操作的RDMA原子操作(如CAS, FAA)。RDMA的单边原语提供了超低延迟、高吞吐量的互连,是构建高性能内存池的基础。

2.3 Compute Express Link(CXL)

CXL协议概述:CXL是一种新兴的互连协议,旨在促进主机CPU和加速器之间的高效内存共享。它定义了三个不同的协议:

CXL标准演进:CXL标准迅速发展,从支持单设备连接的CXL 1.1,到基于交换机的内存池化(CXL 2.0),再到最近支持多层交换和缓存一致性的CXL 3.0,从而实现了更灵活、更强大的异构系统。

本文焦点:本文主要关注利用CXL.mem接口的内存扩展解决方案。目前,支持CXL.mem的硬件设计和生产仍处于早期阶段。现有硬件大多只支持CXL 1.1。尽管一些研究工作开发了支持CXL 2.0的FPGA原型,但其设备数量和内存容量有限。XConn最近推出了首款商用CXL 2.0交换机,该交换机提供CXL.mem接口,支持256个通道和多主机并发访问,最小64字节I/O延迟约为750ns,最大交换容量为2TB/s。CXL 2.0交换机的出现从根本上将该协议提升到超越单节点内存扩展的水平,从而能够创建大规模的共享内存池。

A3 关键Observation/设计原则

3.1 RDMA内存池回顾

传统架构:传统的KVCache管理方法如图2a所示,采用基于RDMA的内存池来聚合集群中的DRAM,以存储卸载的KVCache。这种架构提供了可扩展的内存容量和跨服务器的数据共享。

硬件拓扑:一个典型的多GPU集群通过RDMA网络互连。每个服务器包含主机CPU、多个GPU和RDMA NIC,这些组件通过PCIe交换机互连。例如,一个8-GPU服务器使用四个PCIe交换机,每个交换机连接两个GPU和一个RDMA NIC,并有上行链路到CPU插槽。专用的RDMA NIC提供高达1.6 Tbps的服务器间带宽,使得每台服务器可以贡献其本地DRAM(例如2TB)形成一个分布式共享内存池。

两种访问方式:

3.2 RDMA内存池的低效性

性能低效:尽管RDMA提供高吞吐量互连,但它在内存解耦方面存在根本的架构权衡,导致性能低下和系统复杂性。

系统复杂性:

图2:(a) 带有基于RDMA内存池的GPU集群 和 (b) 带有基于CXL内存池的GPU集群(Beluga)的硬件架构。
图2:(a) 带有基于RDMA内存池的GPU集群 和 (b) 带有基于CXL内存池的GPU集群(Beluga)的硬件架构。

A2 方法细节

4. Beluga:一个基于CXL的内存架构

为了克服RDMA的局限性,我们提出了Beluga架构,它利用业界首款可量产的CXL交换机(XConn XC50256)来构建一个可扩展的共享内存池。这使得GPU能够通过简单的加载/存储操作访问池化内存,解决了RDMA方法的性能瓶颈和编程复杂性。

4.1 概述

架构设计:如图2b所示,Beluga架构用两个PCIe/CXL适配器替换了四个专用的RDMA NIC。每个服务器有两个CPU插槽(NUMA架构),每个插槽通过一个PCIe 5.0 x16的PCIe/CXL适配器连接到CXL交换机。CXL内存池本身由一个交换机节点和一个独立的内存盒组成。

核心硬件:交换机核心配备了两颗XConn XC50256芯片,每颗芯片通过256个PCIe 5.0通道提供2TB/s的转发能力。这些通道通常在CXL内存设备和计算服务器之间平均分配。底层的CXL交换机最多可将16台服务器连接到一个8TB的内存池,总带宽为1TB/s。这种连接性使Beluga能通过其内部地址映射和转发逻辑支持并发的多主机访问。

图3:Beluga的实际部署。
图3:Beluga的实际部署。

4.2 Beluga的内在优势

内存访问范式转变:通过将内存访问范式从网络协议(RDMA)转变为内存语义接口(CXL),Beluga相比基于RDMA的方法提供了几个直接的优势。

性能提升:如图4所示,Beluga为CPU和GPU提供了标准的数据访问接口。

系统简化:

总结:对于单机架内存池,CXL通过在性能、成本效益和资源利用率之间提供最佳平衡,显示出比RDMA明显的优势。

图4:Beluga的数据访问接口。
图4:Beluga的数据访问接口。

Table 1: 硬件成本分析。
表1:硬件成本分析。
B1 样品价格,最终价格可能会有变动。

5. Beluga的特性分析与优化

尽管CXL提供了类似内存的简单接口,但其CXL 2.0硬件的性能,特别是对于GPU直接到内存的访问,尚不明确,这阻碍了软件发挥其全部潜力。本节对Beluga中所有数据路径进行了全面的性能分析,并提出了一系列实用优化,总结于表3。分析分为三部分:首先,设计和评估三种基于软件的一致性方法(§5.1);其次,分析不同I/O传输方法的延迟,并为延迟敏感型工作负载确定最佳方法(§5.2);最后,评估并确定Beluga中的带宽瓶颈,并提出两种有效的解决方案来扩展带宽密集型工作负载的性能(§5.3)。所有实验均在商用硬件平台上验证,详细规格见表2。

Table 2: 实验设置。
表2:实验设置。

5.1 在非一致性CXL上进行数据共享

目标和方法:虽然CXL 2.0中的CXL.cache和CXL.mem支持主机CPU和设备之间的内存共享一致性,但它们不支持跨多个主机CPU的缓存一致性。CXL交换机向主机处理器呈现一个逻辑上统一的内存地址空间,但每个计算节点维护一个独立的缓存层次结构(L1/L2/L3),与其他节点隔离。因此,一个主机的写操作仅限于其本地缓存,不会自动传播到远程主机。在KVCache场景中,这会导致不准确、不一致或不连贯的输出。为了解决这个问题,需要软件层面的显式跨节点同步协议来协调所有缓存状态转换。我们的系统专注于优化KVCache共享机制,支持单写入者插入KVCache块,并允许多个读取者访问,从而消除冗余计算。我们为此场景提出了三种写入端和两种读取端的一致性管理方法,并进行实验以测量延迟并选择最佳方法。

写入端:确保数据到达CXL内存:为确保一个主机的写操作对其他主机可见,数据必须从其私有缓存层次结构刷新到CXL内存。有三种方法可以实现:

读取端:确保从CXL内存读取新数据:同样,为了防止读取本地缓存中的陈旧数据,系统应将内存区域配置为不可缓存,或在读取操作前显式地使目标缓存行无效。

与RDMA的对比:上述写入或读取端的设计很简单:设置缓存状态和禁用DDIO是一次性步骤,缓存刷新和读/写一样简单。相比之下,在RDMA中实现缓存一致性需要更复杂的异步完成和队列对(QP)排序管理。

(Exp #1) 性能特性分析:我们评估了16 KB读/写的延迟,结果如表4所示。对于写操作,非临时存储(ntstore)是CPU发起存储的最有效方法,延迟为2.41µs。使用不可缓存内存则非常慢(281.56µs)。对于DSA,使用不可缓存内存和缓存绕过标志的性能几乎相同且最佳。对于GPU D2H传输,禁用DDIO以绕过缓存(9.14µs)比依赖后续CPU刷新(11.06µs)更有效。对于读操作,CPU从不可缓存内存加载非常慢(166.49µs),因此唯一可行的方法是在读取前刷新缓存(5.98µs)。DSA读取和GPU H2D复制在直接从不可缓存内存读取时性能更好。

优化:由于当前CXL 2.0交换机不支持主机间的硬件缓存一致性,需要软件来管理。最佳性能的实现依赖于根据操作发起者采用特定的缓存管理策略。我们总结出三个设计提示:

未来,CXL 3.0交换机可能通过硬件提供跨主机的缓存一致性,从而无需软件同步。但CXL 3.0的一致性仍在发展中,我们的软件设计对于非一致性区域仍然是必要的,并且可以与未来的硬件一致性区域结合使用以进一步简化和加速。
Table 3: Beluga中的性能优化。
表3:Beluga中的性能优化。

Table 4: 缓存一致性方法的延迟(µs)。粗体条目突出显示了每个操作的最佳机制。(实验 #1)
表4:缓存一致性方法的延迟(µs)。粗体条目突出显示了每个操作的最佳机制。(实验 #1)
*自定义内核的结果包括内核启动时间。

5.2 延迟优化

目标和方法:CXL内存访问的性能严重依赖于具体操作和访问大小。我们首先通过特性分析Beluga中四种基本操作的延迟,以确定它们的最佳使用场景。此外,我们将Beluga与本地内存和基于RDMA的内存池进行比较,以突出其性能优势最显著的场景。

(Exp #2) 性能特性分析:图5展示了CPU/GPU与内存池之间的I/O操作延迟。所有延迟基准测试均使用队列深度一(QD=1)来测量单请求延迟。主要观察如下:

优化:Beluga提供的延迟与本地DRAM相当,这使得创建扁平、统一的内存池成为可能,有潜力消除对复杂多层内存层次结构的需求。我们提出以下三个优化建议:

图5:CPU/GPU与远程内存池之间的延迟(实验 #2)。图中包含了本地内存和RDMA内存池作为基线。此实验不仅展示了各种CXL访问方法之间的性能差异,还揭示了CXL内存池实现了与本地内存池相当的延迟特性,在延迟方面显著优于基于RDMA的内存池。

5.3 带宽优化

目标和方法:在使用单个PCIe/CXL适配器(16通道)时,我们在Beluga中观察到两个性能异常。首先,读/写性能不对称:从CPU到CXL内存池的读带宽达到预期的46.2 GB/s,与RDMA相当,但写吞吐量仅为33 GB/s。其次,GPU访问CXL内存池时性能显著下降,吞吐量降至26 GB/s,远低于CXL内存控制器和GPU自身PCIe带宽(55.4 GB/s)。从CPU/GPU到CXL内存池的数据路径复杂,穿过PCIe交换机、根复合体(Root Complex)和CXL交换机等组件,其中任何一个都可能成为性能瓶颈。我们的方法是首先对该路径进行瓶颈分析,然后提出针对性优化。

性能特性分析:通过系统性的实证分析,我们确定CPU的根复合体(Root Complex, RC)是CXL内存池架构中的主要性能瓶颈。为了验证这一结论,我们构建了一个专门的微基准测试(图6),测量连接到不同PCIe交换机的GPU和NIC之间的带宽,强制数据路径通过CPU的根复合体。实验结果与CXL内存池的性能完全匹配:PCIe P2P写(即NIC⇒GPU)带宽为33 GB/s,P2P读(即GPU⇒NIC)带宽限制在23 GB/s。这表明瓶颈可能不在CXL内存设备或CXL链路本身,而是受限于根复合体的底层点对点能力。进一步的多GPU-NIC对实验显示,总带宽随对数线性扩展,表明限制在于根复合体内的每通道或每链路资源,而非整体吞吐量上限。

内存设备瓶颈:此外,我们观察到内存设备本身也可能成为瓶颈。每个设备支持22.5 GB/s的带宽。如果来自服务器的所有工作负载都指向单个设备,带宽将受限于该设备。因此,在Beluga上运行的软件应将数据分布到不同的内存设备上,以避免单设备瓶颈。我们当前的实现依赖于2MB粒度的软件内存交错。即将推出的Intel Granite Rapids处理器将提供对CXL设备交错的硬件支持。

优化:基于我们的观察,我们为带宽敏感场景提出了三个优化策略:

图6:不同CXL访问路径的带宽。

5.4 复杂工作负载下的性能

(Exp #3)倾斜内存访问下的性能:我们在并发内存访问下测量了带宽、中位延迟和p99尾延迟,结果如图7所示。对于本地DRAM和CXL访问,写操作使用ntstore,读操作前使用clflush。实验还对比了启用和禁用2MB内存交错的性能,证明了在倾斜工作负载下启用内存交错的必要性。我们有两个观察:

(Exp #4) 背景工作负载的影响:该实验在一个内存设备上施加来自背景服务器(服务器B)的固定带宽压力,同时另一台服务器(服务器A)对同一设备执行64B的读/写操作。图8显示了在不同背景带宽压力下的读/写延迟。结果表明,虽然中位延迟无论背景带宽如何都保持稳定,但当背景带宽压力与操作方向相同时,p99延迟会增加。这也展示了CXL内存池的双向能力。
图7:并发64B/16KB访问下的性能(实验 #3)。设置包括64GB内存空间,16个线程(每个CPU核心一个线程)执行同步内存访问。内存地址使用zipf分布选择,高度倾斜的工作负载使用参数0.99。

图8:存在并发背景工作负载时的性能(实验 #4)。该实验测量64B读/写延迟,同时在同一设备上将背景带宽从0变化到15 GB/s。(b)和(c)中的RDMA延迟超过8µs,为便于可视化已省略。
图8:存在并发背景工作负载时的性能(实验 #4)。该实验测量64B读/写延迟,同时在同一设备上将背景带宽从0变化到15 GB/s。(b)和(c)中的RDMA延迟超过8µs,为便于可视化已省略。

6. 使用Beluga管理LLM KVCache

本节阐述了如何将Beluga与流行的LLM推理框架(如vLLM)集成,并高效管理KVCache。如图9所示,一个LLM推理系统通常由三个关键组件构成:一个大型共享内存池用于存储KVCache;一个全局索引用于将token块映射到其在池中的物理地址;以及一个集中式调度器用于向不同的LLM实例分派请求。Beluga-KVCache与这三个组件都进行了集成。

图9:使用Beluga进行KVCache管理。
图9:使用Beluga进行KVCache管理。

6.1 KVCache的数据传输操作

KVCache的内存布局与传输模式:在基于Transformer的LLM推理系统中,每个token的KVCache通常以高度碎片化的内存布局存储。如图10所示,一个token的键(key)和值(value)张量在不同注意力层之间通常非连续存储。此外,在单层内,来自不同token的KV张量也非连续存储。然而,LLM推理系统通常必须将KVCache数据序列化为内存池中的连续块以便有效使用,这导致了显著的KVCache传输开销。KVCache传输有两种访问模式:

RDMA与Beluga的对比:RDMA依赖散点/聚集列表(sglists)来处理这些传输,但对于KVCache效率低下。例如,一个Qwen-32B模型的单个token的KVCache可能分裂成128个非连续块,而ConnectX-7 NIC的硬件限制(sglists最多30个条目)导致需要复杂的逻辑将操作拆分为多个RDMA请求。当利用KVCache稀疏性时,问题变得更具挑战性,访问模式变为非连续到非连续的读取,可能触发IOPS瓶颈,RDMA同样效率低下。

Beluga的优势:相比之下,Beluga利用细粒度的自定义复制内核来处理无限的gather writes或scatter reads,消除了RDMA中繁琐的请求管理。通过将KVCache传输任务从RDMA转移到CXL内存池,Beluga从根本上解决了LLM推理系统中的KVCache迁移瓶颈。

图10:GPU和内存池中的KVCache布局。Qwen-32B(GQA)中的一个KVCache块(16个token)需要128次非连续的20KB数据传输。
图10:GPU和内存池中的KVCache布局。Qwen-32B(GQA)中的一个KVCache块(16个token)需要128次非连续的20KB数据传输。

6.2 基于CXL的RPC

背景与需求:对于具有共享KVCache存储的LLM推理系统,高效的元数据管理至关重要。大多数系统依赖集中式元数据服务来跟踪KVCache块的位置,这会产生频繁的远程过程调用(RPC)。传统上,这些RPC通过RDMA或TCP/IP协议实现,由于网络协议栈开销或内核-用户空间转换而导致高延迟。

Beluga的实现:Beluga通过共享内存实现RPC,充分利用CXL提供的加载/存储语义。我们在Beluga中保留一小块内存空间以实现跨服务器通信。Beluga以生产者-消费者的模式建立元数据服务器和客户端之间的通信。客户端和服务器在CXL内存池中预分配固定大小的内存槽用于请求和响应缓冲。客户端(生产者)将请求写入一个空闲槽并更新状态标志(REQ_READY)。服务器(消费者)通过内部自旋等待循环持续轮询状态标志。在处理请求后,服务器将结果写入专用的回复槽并设置RESP_READY标志。

优化措施:我们应用了四项优化以实现高性能:

  1. 客户端采用非临时存储(ntstore)指令,避免CPU缓存污染。
  2. 元数据服务器在读取前执行CLFLUSH命令,以确保看到客户端写入的最新数据。
  3. 我们对并发RPC请求的mfence操作进行批处理,并确保RPC中数据的缓存行对齐。
  4. 整个生产-消费过程通过将所有操作保持在用户空间来消除内核模式转换和上下文切换。

通过这些技术,Beluga能够实现比RDMA或TCP/IP更高效的RPC。

6.3 无需KVCache层次的调度

传统调度策略的弊端:使用基于RDMA内存池的传统LLM推理系统(如NVIDIA的Dynamo和MoonCake)存在本地和远程内存访问之间的显著性能差距。为弥补这一差距,这些系统必须采用精心设计的缓存感知调度策略,通过将请求路由到已托管所需数据块的节点来强制实现KVCache局部性,从而避免昂贵的远程抓取。这种策略导致了调度复杂性、负载不均衡和维护开销等明显缺点。

Beluga的简化调度:Beluga通过利用具有近乎本地访问延迟的CXL内存池,在很大程度上消除了上述限制。整个CXL内存池被抽象为一个统一且对称的地址空间,远程CXL内存访问延迟与本地缓冲区访问延迟相当(如§5.2所示),消除了由RDMA引起的性能差异。我们对比了将KVCache卸载到本地内存与Beluga的性能,结果显示对于缓存命中请求,Beluga的TTFT与本地内存极具竞争力。因此,Beluga的设计支持缓存无关(cache-oblivious)调度。传入的请求可以使用标准的负载均衡技术轻松分发,忽略缓存局部性。此外,LLM推理节点可以随时增减,而无需重新平衡KVCache分区,因为访问开销保持一致。

范式转变:通过将计算调度与KVCache局部性解耦,Beluga显著降低了调度开销,并能在倾斜工作负载下保持高吞吐量。这种范式转变为LLM推理系统优先考虑计算效率而非内存层次结构优化提供了可能。

A4 实验环境

A4 实验结果

7.1 端到端性能评估

为了区分初始缓存填充和后续缓存重用的性能影响,实验设计了两种场景:

(Exp #5) 结果:如表5所示,Beluga-KVCache在所有指标上都持续优于基于RDMA的基线。

MoonCake性能较低的原因在于CXL与RDMA技术间的固有性能差距,以及其实现中关键路径上的额外开销(如额外的内存拷贝和分配)。

Table 5: LV-Eval上的推理性能 [60] (实验 #5)。
表5:LV-Eval上的推理性能 [60] (实验 #5)。

7.2 敏感性分析

(Exp #6) 对请求到达率的敏感性:如图11所示,在第二次运行(完全缓存命中)中,随着请求率从0.3 QPS增加到9.0 QPS,Beluga-KVCache在TTFT和TPOT方面始终优于MoonCake。这是因为在此场景下,KVCache读取时间成为主要瓶颈,而Beluga基于CXL的数据访问效率远高于MoonCake的RDMA。

(Exp #7) 对输入上下文长度的敏感性:如图12所示,在使用2K、4K、8K和原始LV-EVAL(>15K)不同长度上下文的负载进行评估时,Beluga的性能优势随着输入token数量的增加而变得更加显著。这是因为在更长的上下文中,KVCache的读/写时间占端到端延迟的比重更大。

(Exp #8) 对软件配置的敏感性:

图11:对请求到达率的敏感性(实验 #6)。
图12:对输入上下文长度的敏感性(实验 #7)。
图13:对软件配置的敏感性(实验 #8)。

7.3 性能提升分解

(Exp #9) 密集KVCache数据传输性能:我们针对KVCache传输中的关键操作——散点/聚集操作进行了基准测试。如图14所示,与MoonCake采用的低效两步数据路径(GPU → 主机 → 内存池)相比,Beluga完全消除了主机内存反弹缓冲区。这种直接数据路径使KVCache的写和读延迟分别降低了36.2%和38.7%。

(Exp #10) 稀疏KVCache数据传输性能:我们分析了Qwen-32B和Llama-3-8B模型中的KVCache稀疏性,发现超过74%的重要token是非连续的,确认了稀疏KVCache的内存访问模式是高度离散的(表6)。基于此,我们评估了读取16个稀疏token的KVCache的性能。在Qwen-32B模型中,Beluga实现了95.9%的延迟降低。原因是RDMA方案因需要为非连续数据发出大量高开销请求而成为瓶颈,而Beluga允许单个CUDA内核通过CXL的直接映射内存高效地管理整个细粒度传输。

(Exp #11) RPC性能:我们比较了CXL-RPC与两种RDMA实现(RDMA-RC和RDMA-UD)的性能。如图15所示,在低并发(QD=1)下,CXL-RPC的往返延迟为2.11µs,比RDMA-RC(8.39µs)和RDMA-UD(8.83µs)快4倍。在高并发(QD=128)下,CXL-RPC的单线程吞吐量达到12.13 Mops,分别比RDMA-RC(4.5 Mops)和RDMA-UD(6.65 Mops)高2.7倍和1.8倍。这表明CXL的直接加载/存储模型避免了RDMA协议中大量的软硬件开销。

图14:密集KVCache的数据传输(实验 #9)。
图14:密集KVCache的数据传输(实验 #9)。

Table 6: 稀疏性分析和读取延迟(实验 #10)。
表6:稀疏性分析和读取延迟(实验 #10)。

图15:CXL/RDMA RPC的性能(实验 #11)。
图15:CXL/RDMA RPC的性能(实验 #11)。

A7 补充细节

8. CXL交换机的未来工作

本文使用首批商用CXL 2.0交换机之一,对CXL交换内存池进行了基础性分析,为CXL 2.0系统建立了关键性能基线,并展示了其在KVCache卸载等复杂任务中的有效性,为未来CXL原生系统开辟了广阔的设计空间。

未来硬件架构:随着CXL 3.1的出现,我们设想未来将构建一个基于CXL fabric的大规模、完全解耦的架构,如图16所示。在该架构中,一个对称的fabric将连接计算、内存和存储资源池,为所有连接设备提供统一的低延迟访问。通过将GPU直接连接到此fabric,可以消除遍历主机PCIe交换机和根复合体的延迟开销,提供比Beluga架构更低的内存访问延迟。

未来软件设计:新的硬件架构需要相应的软件栈来管理资源池和大规模一致性数据共享。

未来数据库设计:CXL内存池为需要大规模随机访问能力的内存密集型数据管理系统(特别是向量数据库和图数据库)带来了新机遇。例如,像HNSW这样的图算法传统上需要完全内存存储,可以利用CXL内存池突破内存容量限制。

图16:完全解耦的架构。
图16:完全解耦的架构。

9. 相关工作

LLM推理中的数据管理:KVCache是LLM推理的主要内存瓶颈,催生了大量旨在减少其内存占用的研究。算法层面有MQA、GQA等架构创新,以及H2O、FastGen、SnapKV等利用注意力分数稀疏性进行压缩或驱逐的方法。系统层面,PagedAttention引入了虚拟内存机制,而MoonCake和Dynamo利用远程资源池实现大规模请求调度。Beluga在此基础上提出了一种新的硬件架构,从系统层面减少数据移动开销,并为稀疏KVCache等新算法优化提供灵活的随机访问支持。

用于数据管理的解耦内存架构:解耦内存已在数据库系统中广泛应用。基于RDMA的内存解耦已用于事务处理和存储优化等多种场景。最近的系统如MoonCake和Dynamo利用RDMA将KVCache管理卸载到内存池。然而RDMA作为网络协议引入了额外的复杂性和延迟。CXL通过提供原生的类内存接口和特性解决了这些限制。此外,还存在如华为CloudMatrix这样的专用解决方案,但其厂商特定的设计限制了其广泛采用。

基于CXL的内存架构:CXL的引入引发了对其性能特性和系统潜力的广泛研究。早期的特性研究利用FPGA原型或CXL 1.1硬件进行了初步的量化分析。随后,一系列研究展示了CXL在内存数据库、图处理和深度学习系统等多种实际场景中的实用性。多项工作对CXL和RDMA进行了仔细的比较分析。先前的工作主要探讨了CXL用于CPU内存扩展。本文将CXL的能力扩展到以GPU为中心的KVCache管理,并使用了商用的CXL 2.0交换机。

A5 结论

本文设计、评估并优化了Beluga,一个新颖的、基于CXL交换机的GPU集群内存系统。通过对商用CXL硬件的详细特性分析,我们识别了关键的性能特征,并为构建高性能应用提出了一系列优化措施。为了展示Beluga的有效性,我们设计并实现了Beluga-KVCache,一个专为LLM推理中大规模KVCache管理量身定制的系统。该系统包括优化的数据传输、轻量级RPC和基于Beluga的简化调度器。我们的评估表明,Beluga-KVCache的性能显著优于最先进的基于RDMA的解决方案MoonCake,突显了CXL作为未来解耦内存系统基础的巨大潜力。