发表时间: 2025-12 · NeurIPS 2025
作者/机构:Inho Jeong, Sunghyeon Woo, Sol Namkung, Dongsuk Jeon (Seoul National University, SK hynix, NAVER Cloud)
一句话结论
本文提出了一种无 DRAM 的大模型推理 KV Cache 交换架构 HiFC,通过建立 GPU 与商用 SSD 的直接数据传输通道,在保持与 DRAM 交换方案同等吞吐量的前提下,将长上下文推理的内存扩展成本降低了 4.5 倍。
要解决什么问题
大语言模型在处理长上下文时,自回归解码阶段会产生极大的 KV Cache,极易撑爆 GPU 的高带宽内存(HBM)。现有的主流推理框架(如 vLLM)通常将溢出的 KV Cache 交换到主机的 DRAM 中,但这需要配置海量 DRAM,导致极高的硬件采购成本和持续的功耗开销。为了降本,另一种路线是将其卸载到容量更大、价格更低的 NVMe SSD 上。然而,原有的 SSD 卸载方案(如 FlexGen)存在严重的机制卡点:GPU 缺乏原生的 NVMe 接口,所有读写 I/O 都必须先经过主机 CPU 和 DRAM 作为中转,再穿过 PCIe 总线。这种间接的数据路径受到严重的带宽限制,导致推理吞吐量大幅掉点。此外,推理过程中频繁且零散的非顺序写入会引发严重的写放大效应,不仅进一步拖慢速度,还会急剧加速闪存磨损,导致 SSD 在高负载下迅速报废。
怎么做的
HiFC 的核心思路是彻底绕过主机 CPU 和 DRAM,建立 GPU 到 SSD 的直接、高带宽数据通道,并通过将随机读写转化为顺序读写来榨干闪存性能。它能绕开原有卡点,是因为直接内存访问消除了中转带来的延迟与带宽瓶颈,而顺序写入机制完美契合了闪存的物理特性。该方法由三个关键部件构成:第一,闪存缓存块分配器。它扩展了 vLLM 原有的内存分配器,将固定大小(如 64 个 token)的 KV Cache 块直接映射到 SSD 上。当 GPU 显存告急时,调度器会选中牺牲序列,将其 KV 块直接驱逐到闪存中。第二,感知闪存的块管理算法。为了避免零散写入毁掉 SSD 寿命,该模块采用追加写入策略,强制将驱逐的 KV 块按物理顺序写入商用 SSD 的伪单层单元(pSLC)区域。这种设计避免了复用旧的逻辑地址,将写放大系数压低至 1.02,使设备写入寿命提升了 8 倍。第三,GDS 加速缓存引擎。它利用 GPU Direct Storage 技术执行实际的搬运工作。为了让逻辑上的 KV 块与 SSD 物理上的 4KB 逻辑块地址完美对齐,引擎会预先计算好每个注意力层和键值类型的精确字节偏移量,直接将张量作为 4KB 对齐的缓冲区发起 I/O 调度。此外,HiFC 能在不掉速的情况下完成交换,是因为它利用了流水线调度中的吞吐量缺口来隐藏 I/O 延迟。当深度流水线带来的单 token 延迟 $T_{\mathrm{lat}}$ 导致实际吞吐量低于理想吞吐量时,系统会产生一个停顿预算 $T_{\mathrm{gap}}$:
只有当单次闪存交换的物理耗时 $T_{\mathrm{swap}}$ 超过这个预算时,即满足以下条件,交换开销才会在端到端性能中显现:
效果如何
实验在两张 80GB 的 NVIDIA A100 GPU 和一块配置了 200GB pSLC 缓存的商用 1TB NVMe Gen4 SSD 上进行。测试模型包括 DeepSeek-R1-Distill-Qwen-32B、Mistral-7B 等,数据集涵盖 Qasper、GovReport 和 NarrativeQA(平均上下文长度最高达 18.4K)。对比基线主要有两个:一是纯 GPU 显存方案(代表无交换的性能上限,但在长文本下会迅速 OOM),二是基于 DRAM 交换的 vLLM 方案(代表当前工业界兼顾性能与高成本的主流路线)。量化结果显示,在各类长上下文任务中,HiFC 的端到端吞吐量与昂贵的 DRAM 基线几乎完全一致(差距在 1% 到 2% 以内)。在 GovReport 数据集、并发批处理大小为 200 的压力测试下,HiFC 依然维持了 182 tokens/s 的吞吐量,甚至略高于 DRAM 基线的 172 tokens/s。在成本方面,替换 128GB DRAM 为 1TB pSLC SSD 后,三年期的内存扩展总成本(包含设备采购与持续功耗)降低了 4.5 倍,功耗下降了 12.8 倍。此外,在初始化 100GB 的超大 KV Cache 时,HiFC 耗时仅 32 秒,比 DRAM 基线快了 2.81 倍。作者也承认了该方法的局限性:在短上下文或对延迟极度敏感的单次请求场景下,闪存的物理访问延迟仍可能拖慢 token 处理速度;在多 GPU 共享同一块 SSD 的拓扑结构中,如果缺乏精细的带宽调度,极易引发 I/O 争用;且维持 SSD 的极致性能需要针对特定文件系统和硬件进行专家级的调优,这增加了实际部署的门槛。
大语言模型(LLM)在长上下文推理过程中通常会产生庞大的键值(KV)缓存,其内存占用量很容易超过GPU上的高带宽内存(HBM)容量。现有的LLM推理框架(如vLLM)通过将KV缓存页交换到主机DRAM来缓解这一内存压力。然而,配置大规模DRAM池的高昂成本使得这种解决方案在经济上缺乏吸引力。尽管相较于DRAM,将数据卸载到固态硬盘(SSD)是一种扩展内存容量的经济高效的方式,但传统框架(如FlexGen)在这一过程中会经历严重的吞吐量下降,因为将SSD流量通过CPU路由到GPU的数据路径受到了严重的带宽限制。
为了克服这些限制,本文提出了HiFC(High-efficiency Flash Cache),这是一种新颖的无DRAM(DRAM-free)交换方案,能够以低延迟和高有效带宽直接访问驻留在SSD中的内存。HiFC将KV页面存储在商用NVMe SSD的伪SLC(pSLC)区域中,在顺序I/O下维持高吞吐量,并将写入耐用性提高了高达$8 \times$。借助GPU Direct Storage(GDS)技术,HiFC实现了SSD与GPU之间的直接数据传输,完全绕过了主机DRAM并缓解了PCIe瓶颈。HiFC采用细粒度的块映射机制,将写入操作限制在高性能的pSLC区域,从而在负载下稳定延迟和吞吐量。实验表明,在NarrativeQA等多种长上下文工作负载下,HiFC实现了与基于DRAM交换相媲美的推理吞吐量,同时在三年周期内将GPU服务器系统的内存扩展成本大幅降低了$4.5 \times$。
LLM服务中KV缓存管理的重要性:基于解码器的LLM推理包含预填充(prefill)和解码(decode)两个截然不同的阶段。在预填充阶段,模型并行处理整个输入提示词,在每个自注意力层,所有提示词token的键(key)和值(value)向量被存储下来,称为KV缓存。在解码阶段,模型每次生成一个token,对于每个解码步骤,重用先前token缓存的键和值向量来计算自注意力,从而实现高效的自回归生成,而无需在每一步重新处理整个序列。虽然这种基于缓存的机制显著提高了解码期间的计算效率,但存储KV缓存需要大量内存。具体而言,KV缓存的内存占用与批处理大小、模型的隐藏层大小以及输入序列长度成正比。因此,涉及大批处理大小或长输入上下文的场景会导致过度的内存使用和潜在的内存不足(OOM)故障。例如,为DeepSeekR1模型提供每个请求仅几百个token的服务就可能消耗数百GB的GPU内存。因此,高效的KV缓存管理对于实现可扩展且高吞吐量的LLM推理至关重要。
现有的KV缓存管理技术:早期的LLM服务系统通过为每个请求的最大上下文长度预分配单个连续的GPU缓冲区来管理KV缓存。由于实际序列通常较短,这种方法会遭受严重的内部碎片问题;实证报告显示,只有$20 - 40\%$的保留KV缓存空间包含有用数据,其余均被浪费。为了克服这一限制,出现了两种互补的技术:
无DRAM系统设计的动机:将KV缓存卸载到主机DRAM或SSD是缓解长上下文LLM推理期间GPU内存压力的常见方法。虽然将KV缓存块卸载到主机DRAM可以缓解GPU HBM容量有限的问题,但这种方法会带来高昂的运营成本,并且对于需要大量KV缓存的内存密集型工作负载(如长序列处理或代理AI)仍然不够。或者,将数据卸载到商用NVMe SSD可以降低基础设施成本并提供更好的内存可扩展性,从而支持更大的KV缓存和更长的上下文。然而,这种策略会导致严重的吞吐量下降,因为每次I/O仍必须穿过主机DRAM和PCIe总线。在带宽受限的条件下,这种间接的数据路径会严重损害解码性能。这些限制促使我们设计一种无DRAM的卸载架构,该架构绕过中间内存暂存,实现GPU与SSD之间直接的高带宽数据传输。这种架构避免了现有方法中固有的累积延迟和带宽瓶颈,同时简化了整体系统设计并降低了运营成本。
无DRAM系统设计的挑战:实现无DRAM架构面临几个关键的技术挑战。首先,SSD提供的I/O吞吐量通常低于DRAM,特别是在碎片化或随机访问模式下,这使得在推理期间难以维持高性能。其次,闪存(Flash memory)的耐用性有限;频繁的小规模写入会增加写入放大(WA)并加速设备磨损,从而降低长期可靠性。第三,传统的卸载路径依赖CPU DRAM作为中间缓冲区,这引入了额外的PCIe传输和冗余的内存拷贝,导致延迟增加和资源利用效率低下。
HiFC架构组件概述:为了解决上述问题,本文提出了HiFC,这是首个在KV缓存管理中消除主机DRAM需求的无DRAM设计。HiFC在不牺牲吞吐量或可靠性的情况下,实现了一个可扩展且经济高效的无DRAM推理栈。HiFC通过三个紧密集成的组件实现这些改进:(1) 用于直接基于SSD分配KV缓存的闪存缓存(FC)块分配器;(2) 旨在最大化闪存存储性能和寿命的闪存感知块管理算法;(3) 用于在GPU和SSD之间高效交换KV缓存的GDS加速缓存引擎。
闪存缓存块分配器(Flash Cache Block Allocator):HiFC通过在现有的GPU和CPU块之外引入FC块来扩展vLLM内存分配器。在解码阶段,当GPU内存耗尽时,现有的KV缓存块会被换出到FC块以释放内存。这些FC块由FC块分配器管理,该分配器应用块追加(block append)策略,在SSD上生成顺序I/O工作负载。所有块都具有固定大小(例如,32–128个token),以保持与vLLM块级调度的兼容性并最小化碎片。
闪存感知的块管理(Flash-Aware Block Management):与DRAM或GPU内存不同,SSD对随机访问和块重用模式高度敏感。为了解决这个问题,FC块分配器采用了一种闪存感知的块分配策略,确保KV块的物理顺序放置,从而减少内部碎片并最小化写入放大(WA)。具体而言,该模块按物理顺序分配被驱逐到闪存的块,并使用简单的追加策略管理它们,避免重用陈旧的逻辑地址。这种顺序访问模式不仅提高了吞吐量,还显著延长了SSD的使用寿命,将WA因子降低至1.02以下(相比之下,传统SSD使用场景中为1.4)。
GPU-闪存缓存交换引擎(GPU–Flash Cache Swapping Engine):为了最大化吞吐量并消除中间缓冲,HiFC利用GDS【15, Nvidia gpudirect storage 2021】将驻留在GPU中的KV张量直接传输到SSD,并附带字节级偏移量以实现高效的I/O调度。为此,将闪存缓存交换功能集成到vLLM缓存引擎中。为了进一步提高I/O效率,HiFC利用了多线程I/O调度(最多16个线程)以及将张量直接重用为4KB对齐的GDS缓冲区。这种设计在SSD的pSLC区域维持了超过$4.7 \mathrm { G i B / s }$的吞吐量,确保了可靠的KV缓存交换操作。
HiFC架构与操作流程:这些技术的结合建立了一个高效且可扩展的无DRAM内存层次结构,在长上下文LLM推理的成本、容量和性能之间取得了平衡。在其核心,HiFC将vLLM中使用的CPU块分配器替换为专用的闪存缓存块分配器,该分配器结合了闪存感知的块管理。这实现了一种动态交换机制:在解码阶段,当GPU内存变得稀缺时,调度器会识别出一个受害者序列组,并指示worker启动换出操作。worker的缓存引擎执行此操作,利用自定义CUDA内核通过GDS将KV缓存数据直接传输到SSD以获得最大吞吐量。一旦回收了足够的GPU内存,调度器就会指示worker将换出的序列组重新换入GPU内存。整个数据流促进了直接的GPU-HiFC KV缓存传输,完全绕过了主机DRAM。
内存扩展成本计算模型:为了评估不同KV缓存存储介质的长期成本效益,基于总拥有成本(TCO)模型使用等式计算3年部署期的内存扩展成本。成本由两部分组成:用于提供存储容量的资本支出(CapEx),以及由持续功耗、数据中心电源使用效率(PUE)和区域电费决定的运营支出(OpEx)。公式如下:
三年期成本对比分析:评估了三种KV缓存存储配置的3年内存扩展成本:DRAM(DDR4)、企业级TLC SSD和HiFC(pSLC SSD)。HiFC配置的资本支出比DRAM减少了$3.6 \times$,功耗降低了$12.8 \times$。这导致总内存扩展成本仅为$136,比基于DRAM的方法低$4.5 \times$。因为直接使用商用SSD的TLC区域会引入性能下降和耐用性降低,从而导致成本效率低下。HiFC通过选择支持pSLC区域的商用SSD并专门在该区域内运行(占选定SSD总容量的$20\%$)来解决此问题。这种方法将驱动器的使用寿命延长了高达$8 \times$并确保了稳定的性能。
硬件配置:
软件配置:操作系统为Ubuntu 22.04.5 LTS。基于vLLM v0.6.6框架实现,依赖CUDA Toolkit 12.3, PyTorch 2.5.1, GDS Release 1.8.1.2。
性能与KV缓存交换对比实验:
硬件拓扑的可扩展性实验:
跨多样化模型和数据集的鲁棒性实验:
KV交换对吞吐量的影响实验:
KV块管理验证实验:
块大小对交换延迟隐藏的影响实验:
I/O吞吐量对比实验:
KV缓存初始化的可扩展性实验:
本文介绍了HiFC,这是一种新颖的无DRAM架构,旨在为大上下文LLM推理高效地提供KV缓存内存扩展。HiFC将传统的基于DRAM的交换替换为支持GDS的SSD(利用其伪SLC区域),从而创建了直接的GPU到SSD数据传输路径,消除了中间主机内存瓶颈。实验证明,HiFC保持了与传统DRAM交换方法相媲美的推理吞吐量。此外,广泛的验证确认这一优势在多样化的模型、数据集乃至多GPU扩展场景中均成立,突显了HiFC的鲁棒性和普遍适用性。对于长上下文和多批处理场景,vLLM的序列流水线调度器与HiFC优化的闪存缓存协同工作,有效管理KV缓存交换并最小化开销。同时,用1 TiB pSLC配置的SSD替代$128 \mathrm { G i B }$的DRAM,使三年期内存扩展成本降低了约五倍。总而言之,HiFC为可扩展的LLM推理提供了一条经济可行且高效的途径,尤其在大上下文和大批量推理场景中大有裨益。未来的工作计划探索混合闪存-DRAM缓存方案,以在各种工作负载下保持稳定的性能。
与InstInfer的比较:虽然HiFC和InstInfer【13】都致力于超越DRAM扩展KV缓存,但它们基于根本不同的设计原则。InstInfer是一种硬件专用解决方案,依赖计算存储驱动器(CSD)执行存储内注意力处理以缓解PCIe瓶颈。相反,HiFC是专为广泛采用而设计的通用软件解决方案,在vLLM框架内利用商用NVMe SSD和GPU。
与其他卸载系统的比较(AttentionStore和Mooncake):AttentionStore【36】提出了针对多轮对话工作负载优化的DRAM/SSD缓存层级,使用DRAM作为主缓存以最小化SSD访问延迟。Mooncake【27】引入了解耦架构,用于跨集群共享KV缓存,主要针对大批量离线推理。相反,HiFC设计为无DRAM的在线推理解决方案,利用GDS最大化I/O带宽,并通过vLLM调度器隐藏I/O延迟(表10)。
确定闪存缓存字节偏移量:为了支持追加分配策略并实现顺序I/O,FC块必须与SSD物理4KB LBA格式对齐。HiFC预计算并存储针对每一层的KV类型特定偏移量查找表,将其直接传递给GDS API。
内存扩展成本分析与未来预测:
通过pSLC SSD提升总写入字节数(TBW):
HiFC交换的延迟影响分析:
基于流水线的交换开销感知模型:
写入放大因子(WAF)分析:
参考文献引用汇总: