DualPath:破解Agentic LLM推理中的存储带宽瓶颈

副标题:一种通过双路径KV-Cache加载技术提升多轮对话AI系统性能的新架构


引言:当AI代理成为主流,推理架构面临新挑战

大型语言模型(LLMs)正在从简单的单轮聊天机器人进化为能够自主规划、调用工具、通过多轮交互解决实际任务的智能代理系统。无论是代码助手还是自动化任务代理,这些应用都依赖于多轮LLM推理——一个长会话过程,其中上下文随时间不断累积。

这种转变带来了一个根本性的技术挑战:Agentic工作负载变得极度I/O密集。想象一下,一个AI代理在与外部环境(如浏览器、Python解释器)交互时,可能经历数十甚至数百轮对话。虽然每轮的工具调用或反馈很短(通常只有几百个token),但上下文长度可以增长到极端程度——甚至达到百万token级别。

更关键的是,由于大多数上下文(通常超过95%的token)在轮次间被重用,KV-Cache的命中率极高。这意味着KV-Cache加载效率,而非纯计算能力,成为主导系统性能的关键因素

本文将深入介绍DualPath——一种突破性的推理系统架构,它通过创新的双路径KV-Cache加载机制,解决了现代AI数据中心中的存储带宽瓶颈问题。


核心问题:为什么现有的PD分离架构会遇到瓶颈?

什么是PD分离架构?

在现代LLM推理系统中,Prefill-Decode(PD)分离已成为事实标准架构。这种设计将推理过程分为两个阶段:

阶段 名称 特点 负责引擎
第一阶段 Prefill(预填充) 计算密集型、可批处理 Prefill引擎(PE)
第二阶段 Decode(解码) 内存受限、延迟敏感 Decode引擎(DE)

Prefill阶段:处理输入prompt,计算并生成KV-Cache。这个阶段需要大量计算,但可以高效批处理。

Decode阶段:基于KV-Cache自回归地生成token。这个阶段对延迟极其敏感,因为用户需要实时看到生成的内容。

PD分离的优势在于减少两阶段间的干扰,允许各自采用针对性的优化策略和硬件配置。

瓶颈在哪里?

在标准的PD分离架构中,存在一个根本性的效率问题:

┌─────────────────────────────────────────┐
│  传统架构的带宽利用情况                  │
├─────────────────────────────────────────┤
│  Prefill引擎(PE)                       │
│  ├─ 计算NIC:40%利用率                   │
│  ├─ 存储NIC:100%利用率 ← 瓶颈!         │
│  └─ GPU:部分空闲,等待数据              │
├─────────────────────────────────────────┤
│  Decode引擎(DE)                        │
│  ├─ 计算NIC:低利用率                    │
│  ├─ 存储NIC:几乎空闲 ← 浪费!           │
│  └─ GPU:活跃,但存储带宽未利用          │
└─────────────────────────────────────────┘

问题的本质:Prefill引擎必须从远程存储加载大量KV-Cache,导致其存储网络带宽(SNIC)持续饱和;而Decode引擎的存储NIC却基本闲置。这种不对称的带宽利用严重制约了整个系统的吞吐量。

为什么不能简单地给Prefill引擎增加更多带宽?在通用集群中,这不仅成本高昂,而且往往不现实。因此,更优的方案是利用所有引擎的可用I/O带宽,而不是让Prefill引擎独自承担所有负载。


DualPath的核心创新:双路径KV-Cache加载

什么是双路径加载?

DualPath的核心洞察是:KV-Cache加载不必以Prefill为中心。传统系统总是直接将KV-Cache从存储加载到Prefill引擎,这无法利用Decode引擎的远程存储带宽。

DualPath引入了第二条路径——除了传统的存储→Prefill路径外,还允许KV-Cache先加载到Decode引擎,然后通过高性能RDMA网络(计算网络)传输到Prefill引擎。

┌─────────────────────────────────────────┐
│  DualPath架构的带宽利用情况              │
├─────────────────────────────────────────┤
│  Prefill引擎(PE)                       │
│  ├─ 计算NIC:80%利用率(RDMA传输)       │
│  ├─ 存储NIC:100%利用率                  │
│  └─ GPU:更高利用率,更少等待            │
├─────────────────────────────────────────┤
│  Decode引擎(DE)                        │
│  ├─ 计算NIC:活跃(RDMA传输)            │
│  ├─ 存储NIC:100%利用率 ← 充分利用!     │
│  └─ GPU:正常解码工作                    │
└─────────────────────────────────────────┘

通过动态选择这两条路径,DualPath重新分配了网络负载,缓解了Prefill侧的带宽饱和问题。

两条路径的数据流详解

DualPath为每个引擎分配了少量DRAM作为缓冲区(PE Buffer和DE Buffer),支持两种读取路径:

路径一:PE读取路径(传统方式)

  1. 存储→PE Buffer:KV-Cache从持久存储读入Prefill引擎的缓冲区
  2. PE Buffer→PE HBM:在注意力层计算前,将该层KV-Cache传入GPU高带宽内存
  3. PE HBM→DE Buffer:计算完成后,KV-Cache传入Decode引擎缓冲区
  4. 重复:上述过程重复n_layer次,与计算重叠进行

路径二:DE读取路径(创新方式)

  1. 存储→DE Buffer:KV-Cache首先读入Decode引擎的缓冲区
  2. DE Buffer→PE HBM:Prefill过程中,通过RDMA从DE Buffer读取对应层的KV-Cache
  3. PE HBM→DE Buffer:层计算完成后,仅将miss token的KV-Cache传回DE Buffer与hit token合并
  4. 重复:同样重复n_layer次

为什么这种设计不会引入新的瓶颈?

你可能会担心:增加了一条数据路径,会不会导致计算网络拥塞?或者DRAM带宽成为新瓶颈?

DualPath的理论分析表明,在合理的P/D(Prefill/Decode)比例下,系统可以实现无瓶颈运行。关键条件包括:

  • 计算NIC带宽:通过精细的流量管理,确保KV-Cache传输不会干扰延迟敏感的模型执行通信
  • DRAM压力:通过分层块(Layer Block)和全块(Full Block)的混合布局,优化内存访问模式
  • PCIe带宽:采用CNIC中心化的数据传输方式,统一管理所有GPU PCIe流量

对于典型的8 GPU节点配置(g=8,存储带宽比例s=1),无瓶颈的P/D比例范围是1/7到7/2,覆盖了绝大多数实际部署场景。


技术实现:三大核心组件

1. CNIC中心化流量管理器

现代LLM推理使用多种先进数据传输技术,如GPUDirect Storage和CUDA拷贝引擎。然而,这些技术存在一个共同问题:它们无法将KV-Cache流量与延迟敏感的集合通信隔离

为什么这很重要?在模型执行过程中,集合通信(如专家并行中的AllToAll、张量并行中的ReduceScatter/AllGather)以亚毫秒级的突发方式发生。如果KV-Cache传输干扰了这些关键通信,会严重降低推理延迟。

DualPath的解决方案:采用**CNIC中心化(Compute NIC-Centric)**的数据传输方式。所有进出GPU的数据,包括本地H2D/D2H拷贝,都必须通过GPU配对的计算NIC,使用GPUDirect RDMA数据路径。

具体实现

  • 对于InfiniBand网络:利用虚拟通道(Virtual Lanes, VL)进行流量隔离

    • 高优先级VL:专门用于模型推理通信(保留99%带宽)
    • 低优先级VL:用于KV-Cache传输(防止饥饿)
  • 对于RoCE网络:使用DSCP标记和流量类(TC)实现类似隔离

意外收获:CNIC辅助的H2D/D2H在处理大量小数据块时,性能优于CUDA拷贝引擎。单次RDMA写操作仅需约1微秒,而cudaMemcpyAsync有5-7微秒的开销。

2. 自适应请求调度器

DualPath需要实时决定:每个请求应该使用哪条路径?这涉及两个层面的调度:

引擎间调度(Inter-Engine Scheduling)

引擎被组织成组,只有每组的Leader Engine与中央调度器交互。调度时考虑三个关键指标:

  • seq_e:分配给引擎但未完成的请求数
  • tok_e:这些请求的总token数
  • read_q_n(e):引擎所在节点的磁盘读取队列长度

Prefill引擎调度策略

  1. 过载引擎tok_e > β):不分配新请求
  2. 短队列引擎read_q_n(e) ≤ αtok_e ≤ β):优先分配,防止存储NIC欠载
  3. 长队列引擎read_q_n(e) > αtok_e ≤ β):次优先分配

Decode引擎调度策略

  • 第一阶段:跨组平衡,将请求分配给总tok_e最小的组
  • 第二阶段:组内平衡,考虑HBM容量和token数量,避免碎片化

KV-Cache读取任务调度:在选定PE和DE后,选择读取队列更短的一侧执行存储读取。未来工作考虑将请求拆分,从两侧并行读取。

引擎内调度(Intra-Engine Scheduling)

仅Prefill引擎需要引擎内调度。由于数据并行(DP)配置中每个GPU服务不同请求集,工作负载可能不平衡,导致GPU在同步点产生空闲气泡。

解决方案:基于计算配额的批处理选择

  • 使用FIFO顺序打包请求
  • 每个请求描述为(cached, bsz)对:已缓存token数、本轮需计算token数
  • 预测注意力层执行时间,确保不超过预设的计算配额(如300ms)
  • 如添加请求会超配额,对该请求执行分块预填充(Chunked Prefill)

3. 分层KV-Cache块布局

Layer-wise预填充将KV-Cache块大小减少到原来的1/layer,块数量增加到layer倍。这对传输和存储性能构成挑战。

DualPath的双块设计

块类型 形状 用途
Layer Block [1, tokens, bytes] 存储单层KV-Cache,用于层间流传输
Full Block [layer, tokens, bytes] 存储完整层KV-Cache,用于存储交互

优势

  • 与存储的所有交互使用Full Block,优化存储性能
  • 层间流传输使用Layer Block,减少内存占用
  • 无需手动内存布局转换,简单拼接Layer Block即可得到Full Block

KV-Cache在分布式存储中使用Trie结构组织,每个树节点对应一个Full Block。


性能评估:真实场景下的显著提升

实验设置

测试平台

  • GPU集群:NVIDIA Hopper GPU,InfiniBand互联
  • 节点配置:每节点8 GPU,8×400Gbps计算NIC + 1×400Gbps存储NIC
  • 存储后端:3FS(无内部DRAM缓存,可饱和存储NIC带宽)

评估模型

  1. DeepSeek-V3.2 660B(MoE,稀疏注意力)
  2. DeepSeek 27B(内部实验模型,660B的缩小版)
  3. Qwen2.5-32B(Dense模型,GQA)

数据集:从生产级Agentic RL训练工作负载收集的三个轨迹数据集

数据集 最大长度 平均轮次 平均追加长度 平均生成长度 平均总长度 平均上下文长度
32K 32K 60 608 148 28,639 17,183
48K 48K 106 474 172 42,607 25,120
64K 64K 157 429 176 55,958 32,721

对比基线

  • Basic:未修改的内部推理框架
  • SGL(MC):SGLang + Mooncake + 3FS(部分配置因不支持而N/A)
  • Oracle:理论上限,绕过所有磁盘读取和传输

离线批处理推理结果

在RL训练的回滚(rollout)阶段场景中,所有代理同时开始推理,测量作业完成时间(JCT)。

关键发现

  1. DeepSeek 660B:DualPath相比Basic提升最高1.87倍,性能接近Oracle,表明KV-Cache I/O瓶颈被基本消除

  2. DeepSeek 27B:提升最高1.78倍,但由于1P1D配置存储带宽有限,仍比Oracle慢1.09-1.85倍

  3. Qwen 32B:趋势与DeepSeek模型一致

  4. 规模效应:DualPath在更大batch size和更长上下文长度下收益更明显

P/D比例影响

  • 在1P1D、2P1D、1P2D配置下,DualPath平均提速1.64倍(最高2.46倍)
  • 有趣的现象:Basic 1P1D ≈ Basic 1P2D,DualPath 1P1D ≈ Basic 2P1D,DualPath 2P1D ≈ DualPath 1P2D
  • 这证实了存储带宽是Agentic推理的主导瓶颈,而非计算能力

追加长度和生成长度的影响

  • 追加长度增加时,Basic性能逐渐接近DualPath(计算压力增大,I/O压力相对减小)
  • 生成长度增加时,由于更大的Prefill间隔时间,KV-Cache加载压力降低
  • 在典型Agentic场景(短追加、短生成)下,DualPath保持1.82-1.99倍优势

在线服务结果

在在线服务场景中,代理按泊松过程到达,测量延迟指标:

  • TTFT(Time To First Token):首token延迟
  • TTST(Time To Second Token):次token延迟
  • TPOT(Time Per Output Token):每输出token时间

服务水平目标(SLO):TTFT ≤ 4秒,TPOT ≤ 50毫秒

关键发现

  • 吞吐量提升:DualPath的代理每秒处理能力(APS)相比Basic提升1.67倍(27B)到2.25倍(660B)
  • 延迟特性:TTST与Basic相当,TPOT未增加,证明DualPath未引入额外解码开销
  • TTFT稳定性:DualPath在不同到达率下保持稳定的TTFT组件,而Basic的队列时间因存储带宽不足而急剧增长

消融研究

逐步添加技术组件,量化各自贡献(64K上下文,1024/2048代理):

配置 相比Basic的JCT降低
Basic + Layerwise Prefill 17.21%
+ Dual-path Loading 额外38.19%(累计55.4%)
+ Scheduling Algorithm 额外45.62%(累计最优)

负载均衡效果

  • 存储NIC流量均衡:从1.53(轮询调度)改善到1.18(Max/Avg比率,1.0为完美均衡)
  • 注意力层执行时间均衡:任务前5%阶段保持Max/Avg比率低至1.06,显著减少GPU空闲气泡

大规模扩展性

在多达1,152 GPU的大规模集群上验证:

场景 配置 结果
离线推理 2P4D (2K代理) → 48P96D (48K代理) JCT从3,167s到3,201s,接近线性扩展
在线服务 44P88D 吞吐量22倍提升(0.4→8.8 APS),延迟保持稳定

调度器CPU使用率始终低于10核,证明其不会成为瓶颈。


深入理解:为什么DualPath有效?

硬件趋势与Workload的错配

从NVIDIA Ampere到Blackwell架构,I/O计算比例下降了14.4倍。这意味着:

  • GPU计算能力(FLOPS)快速增长
  • 网络带宽和HBM容量增长相对滞后
  • 在Agentic工作负载下,我们更早遇到内存墙通信墙

小HBM容量限制了token批处理大小,无法充分利用Tensor Core等计算单元。低NIC带宽限制了KV-Cache加载速度,导致GPU空闲等待。

Cache-Compute Ratio的重要性

定义:KV-Cache加载量与所需计算量的比值(GB/PFLOP)

模型 Cache-Compute Ratio (16K-64K上下文)
Qwen2.5-32B (FP16) 117-267
GPT-OSS-120B 47-95
Qwen3-235B-A22B 39-60
DeepSeek-V3.2 660B 13-36
DeepSeek-V3 660B 4.8-5.8

即使是经过MLA优化的DeepSeek-V3.2,在32K上下文、429 token追加长度场景下,cache-compute ratio仍达约22GB/PFLOP,对存储带宽构成显著压力。对于KV-Cache更大的模型,情况更为严峻。

现代AI数据中心架构的约束

标准NVIDIA DGX SuperPOD的设计原则:

  • 计算网络(东-西向):高速NVLink + 400Gbps计算NIC,用于GPU间通信
  • 存储网络(南-北向):独立400Gbps存储NIC,用于数据集、检查点、KV-Cache访问
  • 关键隔离:计算网络和存储网络物理隔离,防止相互干扰

DualPath的创新在于:在不破坏这种隔离的前提下,通过计算网络传输KV-Cache,从而聚合所有节点的存储带宽。


实际部署考虑

适用场景

DualPath特别适合以下场景:

  1. Agentic RL训练:回滚阶段需要处理大量多步代理轨迹,DRAM被训练状态占用,必须依赖外部存储
  2. 长上下文在线服务:多轮对话应用,上下文累积到极端长度
  3. 高KV-Cache命中率工作负载:短追加、多轮次交互模式

配置建议

P/D比例选择

  • 根据理论分析,确保P/D比例在合理范围内(如g=8,s=1时为1/7到7/2)
  • 实际部署建议通过小规模实验确定最优比例

DRAM分配

  • DeepSeek模型:每节点80GB
  • Qwen等较大KV-Cache模型:每节点320GB
  • 相比纯DRAM缓存方案(如Mooncake需要1.5TB/节点),大幅降低内存成本

流量隔离配置(InfiniBand示例):

qos_max_vls 4
qos_high_limit 240
qos_vlarb_high 0:192,1:192,2:0,3:192
qos_vlarb_low 0:192,1:192,2:64,3:192

局限性与未来工作

  1. 动态适应性:当前工作负载高度动态(如RL训练前半段Prefill压力显著高于后半段),需要更灵活的并行策略和P/D比例在线调整机制

  2. 调度优化:大规模部署下,仍有空间降低TTFT的尾部延迟

  3. 拆分读取:当前实现选择单侧读取,未来可探索将请求拆分到两侧并行读取

  4. 工作集管理:在线场景下,随着到达率和JCT增加,KV-Cache工作集可能超出内存,需要更智能的缓存策略


常见问题解答(FAQ)

Q1: DualPath与Mooncake等分布式内存缓存方案有什么区别?

A: Mooncake构建分布式DRAM池缓存KV-Cache,通过亲和性感知调度最大化命中率。这在内存充足场景下效果很好,但有两个局限:

  1. 内存受限场景(如RL训练回滚阶段,DRAM被训练状态占用)无法使用
  2. 超大工作集场景(在线服务)成本高昂,因为DRAM比SSD贵得多

DualPath直接针对存储后端,平衡所有存储NIC的流量,大幅减少DRAM使用而不损害性能。两者可以结合使用,但增益有限。

Q2: 为什么不用GPUDirect Storage直接读取KV-Cache到GPU?

A: GPUDirect Storage确实可以直接从存储读取到GPU HBM,但它无法隔离KV-Cache流量与延迟敏感的模型执行通信。在Agentic推理中,集合通信(如AllToAll)的延迟至关重要。CNIC中心化的方式虽然看似绕路,但是目前唯一实用的方法确保KV-Cache加载不降低关键模型执行性能。

Q3: DualPath会增加解码阶段的延迟吗?

A: 不会。实验数据显示,DualPath的TPOT(每输出token时间)与Baseline相当,TTST(次token时间)也无显著差异。这是因为:

  1. 计算网络的QoS机制确保KV-Cache传输使用空闲带宽
  2. DE Buffer设计优化了数据传输路径
  3. 解码阶段的计算和通信模式未受干扰

Q4: 如何决定使用PE读取路径还是DE读取路径?

A: 调度器基于实时负载信息动态决定:

  • 比较Prefill引擎和Decode引擎所在节点的存储读取队列长度
  • 选择队列更短的一侧执行存储读取
  • 同时考虑GPU负载、token数量、HBM容量等多维度因素

Q5: Layer-wise预填充是否必须?对性能有何影响?

A: Layer-wise预填充是DualPath的重要基础,它解决了长上下文预填充的HBM容量瓶颈。通过每层只加载当前层所需的KV-Cache,有效批处理大小(以token计)可提升约layer倍。消融研究显示,仅添加layer-wise预填充就可降低17.21%的JCT。

Q6: DualPath支持哪些网络类型?

A: 虽然实验在InfiniBand上进行,但设计原则适用于:

  • InfiniBand:使用Virtual Lanes(VL)进行QoS隔离
  • RoCE:使用DSCP和Traffic Class(TC)标记
  • 新兴技术:UnifiedBus、Ultra Ethernet等融合QoS机制的技术

Q7: 对于小模型(如27B),DualPath是否同样有效?

A: 有效,但提升幅度受存储带宽限制。在小模型1P1D配置下,由于总存储带宽有限,DualPath仍比Oracle慢1.09-1.85倍。建议通过增加节点数或优化P/D比例来释放更大潜力。


总结

DualPath通过重新思考PD分离架构中的KV-Cache加载方式,解决了Agentic LLM推理中的核心瓶颈。其关键创新包括:

  1. 双路径加载架构:打破Prefill-centric的局限,充分利用Decode引擎的闲置存储带宽
  2. CNIC中心化流量管理:在确保延迟敏感通信不受影响的前提下, opportunistically利用计算网络空闲带宽
  3. 自适应调度算法:动态平衡计算和网络资源,实现全局最优

在真实Agentic工作负载下,DualPath实现了最高1.87倍的离线推理吞吐量提升平均1.96倍的在线服务吞吐量提升,同时保持延迟指标稳定。这一架构为下一代长上下文、多轮交互AI应用的高效部署提供了坚实基础。


参考信息

本文基于以下研究论文:

  • DualPath: Breaking the Storage Bandwidth Bottleneck in Agentic LLM Inference
  • 作者:Yongtong Wu, Shaoyuan Chen, Yinmin Zhong 等(北京大学、清华大学、DeepSeek-AI)
  • 发表:arXiv:2602.21548v2 [cs.DC], 2026年2月

相关技术

  • PD分离架构:Splitwise, DistServe
  • Layer-wise预填充:LayerKV, PrefillOnly
  • 分布式KV-Cache:Mooncake, TokenLake
  • 高效注意力内核:FlashMLA, FlashInfer
  • 专家并行通信:DeepEP