DeepSeek & 清华北大联合发布DualPath:突破Agentic LLM推理的存储带宽瓶颈

DeepSeek 新论文提出 DualPath 推理系统,优化 Agentic LLM 在预填充-解码分离架构下的 KV-Cache 读取,显著提升吞吐量。

原文标题:DeepSeek新论文来了!联手清华、北大,优化智能体大模型推理

原文作者:机器之心

冷月清谈:

DeepSeek 联合清华、北大提出名为 DualPath 的创新推理系统,旨在优化智能体工作负载下的大语言模型(LLM)推理性能。该系统通过引入“双路径 KV-Cache 加载”机制,解决了预填充-解码(PD)分离架构下 KV-Cache 读取负载不平衡的问题。DualPath 的核心在于增加了一条新的加载路径,KV-Cache 可以先从存储读入 Decode 引擎,再通过高速 RDMA 网络传回 Prefill 引擎,从而实现存储带宽的全局池化,确保大规模数据传输不干扰延迟敏感型的推理任务。实验结果表明,DualPath 在离线推理场景中实现了 1.87 倍的吞吐量提升,在线服务场景下实现了 1.96 倍的服务吞吐量提升。

怜星夜思:

1、DeepSeek 的 DualPath 系统主要针对 Agentic LLM 的推理瓶颈,那么对于非 Agentic 的 LLM,这种优化思路是否仍然适用?如果适用,可能需要做出哪些调整?
2、DualPath 架构中,Decode Engine (DE) 承担了一部分 KV-Cache 的加载任务,这是否会影响 DE 的推理性能?DeepSeek 如何解决这个问题?
3、论文中提到,DualPath 在包含 1152 个 GPU 的大规模生产集群上进行了评估。那么,对于 GPU 数量较少的小规模集群,DualPath 的收益是否仍然显著?

原文内容

图片
机器之心编辑部


「DeepSeek V4 来了!」这样的消息是不是已经听烦了?


我们也是。


不过 DeepSeek V4 虽然迟迟未发,但今天我们等来了其与清华、北大合作撰写的一篇新论文。


总结来说,这篇新论文介绍了一个名为「DualPath」的创新推理系统,专门针对智能体工作负载下的大语言模型(LLM)推理性能进行优化。具体来讲,通过引入「双路径 KV-Cache 加载」机制,解决了在预填充 - 解码(PD)分离架构下,KV-Cache 读取负载不平衡的问题。


该推理系统带来了显著效果:在离线推理场景中实现了 1.87 倍的吞吐量提升,在线服务场景下实现了 1.96 倍的服务吞吐量提升。



  • 论文标题:DualPath: Breaking the Storage Bandwidth Bottleneck in Agentic LLM Inference

  • arXiv 地址:https://arxiv.org/pdf/2602.21548


我们知道,如今智能体已经成为主流 AI 开发范式。但是,智能体范式下出现了全新的瓶颈,即存储带宽。


在多轮互动的智能体场景中,上下文信息会随轮次迅速累积,导致其呈现出 「长上下文、短追加」 的特征。研究指出,这类负载的 KV-Cache 命中率通常高于 95%。这意味着系统性能的决定性因素已不再是纯粹的计算能力,而是从存储中加载 KV-Cache 的效率。



在现有的预填充 - 解码分离(PD-disaggregated)架构中,所有的存储 I/O 压力都集中在预填充引擎(PE)的存储网卡上,而解码引擎(DE)的存储带宽则被闲置。这种带宽利用的极度不平衡,成为了限制系统吞吐量的核心障碍。


针对这一痛点,DualPath 重新设计了数据加载路径,核心创新在于引入了存储到解码(Storage-to-Decode)路径,包括以下两个特征:


一方面是双路并行。KV-Cache 不仅可以直接读入预填充引擎,还可以先加载到解码引擎,随后通过高带宽 RDMA 计算网络高效传输至预填充引擎。


另一方面是带宽资源池化:通过动态分配两条路径的负载,DualPath 成功将集群中所有引擎的存储网卡聚合为一个 全局容量池,彻底打破了单节点 I/O 的限制。



另外,为了确保大规模数据传输不干扰延迟极其敏感型的模型推理任务,DualPath 还采用了以下两项关键技术:


一是以计算网卡(CNIC)为中心的流量管理:系统将所有 GPU 相关的流量(包括本地内存拷贝)统一通过计算网卡进行管理,同时利用网络的服务质量(QoS)机制,将推理通信设为高优先级,确保加载 KV-Cache 的流量仅利用闲置带宽,不影响延迟 SLO。


二是自适应请求调度:调度器实时监控各引擎的磁盘读取队列长度和计算负载,动态决定每个请求的最优路径。同时,通过计算配额机制优化引擎内调度,最大限度减少 GPU 执行过程中的气泡。


研究团队在包含 1152 个 GPU 的大规模生产集群上对 DualPath 进行了评估,并验证了离线与在线服务场景下吞吐量的显著提升。


接下来解析 DualPath 系统细节。


DualPath 系统概览


为了打破 Prefill 侧存储 I/O 的瓶颈,DeepSeek 提出了一种双路径加载架构,重新设计了在 Prefill–Decode 解耦(PD-disaggregated)推理架构中 KV-Cache 的读取方式。传统做法是所有 KV-Cache 都从存储直接读入 Prefill 侧 GPU,导致 Prefill 侧存储网卡成为单点瓶颈。DualPath 则在此基础上增加了一条新的加载路径,从而缓解这一不平衡问题。


DualPath 仍然建立在两项已有技术之上:


(1)P/D 解耦(PD Disaggregation),将 prompt 处理与 decode 处理分离,以提高整体效率;

(2)Layerwise Prefill,通过按层加载 KV-Cache,避免了 LayerKV 和 PrefillOnly 指出的 Prefill 引擎上的 HBM 显存瓶颈问题,从而提升 GPU 利用率。


DualPath 整个系统由三部分组成:


  • 推理引擎(Inference Engines)。每个引擎管理一张 GPU。引擎分为两类:用于执行 prefill 的 Prefill Engine(PE),以及用于执行 decode 的 Decode Engine(DE)。

  • 流量管理器(Traffic Manager)。每个引擎内部都包含一个流量管理器,负责:(1)主机与设备之间的内存拷贝(H2D 与 D2H);(2)PE 与 DE 之间的 KV-Cache 传输;(3)通过存储网卡进行 KV-Cache 的读写操作。DeepSeek 采用以 CNIC 为中心的流量管理方案,以防止 KV-Cache 相关流量干扰模型推理过程中的通信。

  • 请求调度器(Request Scheduler)。一个中心化调度器,负责接收客户端请求并将其分配到不同引擎。同时,它还负责在两条加载路径之间动态分配数据流量(如图 4 所示)。



双路径加载(Dual-Path Loading)


传统系统中,KV-Cache 只能从存储直接读入 Prefill 引擎,因此所有存储带宽压力都集中在 Prefill 侧,形成单点瓶颈。DualPath 在此基础上增加了一条新的加载路径:KV-Cache 可以先从存储读入 Decode 引擎,再通过高速 RDMA 计算网络传回 Prefill 引擎。这样,系统就可以同时利用 Prefill 和 Decode 两侧的存储网卡带宽,而不是只依赖 Prefill 一侧,从而消除带宽不均衡问题。


为了实现双路径加载,DualPath 在每个 Prefill Engine(PE)和 Decode Engine(DE)上分配少量 DRAM 作为缓冲区,分别称为 PE buffer 和 DE buffer。


Prefill 侧读取路径。首先,将命中 token 的 KV-Cache 从持久化存储中读取到 PE buffer(如图 4a 中标注 1 和 2)。在某一注意力层开始计算之前,该层对应的 KV-Cache 会从 PE buffer 传输到 PE 的 HBM(3 和 4),用于计算未命中(cache-miss)的 prompt token 的 KV-Cache。随后,命中和未命中 token 的所有 KV-Cache 都会被传输到 DE buffer,以组成完整的 prompt KV-Cache( 5–7)。步骤 3–7 的流程会重复 n_layer 次。在 prefill 前向计算过程中,数据传输与计算是重叠执行的。


预填充 DE 读取路径。首先,命中 token 的 KV-Caches 会被读取到 DE 缓冲区中(如图 4b 中的标签 1 和 2 )。在 PE 预填充期间,相应层的 KV-Cache 会从 DE 缓冲区中读取,这同样与计算过程相重叠( 3-5)。此过程会重复 n_layer 次。当每一层的计算完成后,只有缺失 token 的 KV-Caches 会被传输到 DE 缓冲区,并与现有的命中 token KV-Cache 进行合并。


解码阶段。在 DE 缓冲区接收到完整的提示 KV-Cache(包括通过 PE 读取路径加载的 KV-Cache 以及新追加 token 的 KV-Cache)后,解码阶段正式开始。DE 首先分配 HBM 并执行主机到设备(H2D)传输(如图 4a 中的标签 8 和 9;图 4b 中的标签 6 和 7 ),随后在开始解码前释放 CPU 内存。


DE 缓冲区的设计虽然给 DRAM 和 CNIC 带来了额外的带宽压力(因为增加了一次额外的 H2D 拷贝),这本可以通过 GPU Direct RDMA 直接绕过来避免。然而,由于在此类智能体场景下生成的长度通常较短,首 token 延迟在整个端到端请求时间中占据了不可忽视的比例。引入 DE 缓冲区有助于减少 GPU 内存占用。在解码过程中,每当累积一个完整的 token 块(例如 64 个 token)时,系统会立即将其持久化到磁盘中。


不同的数据块布局。DualPath 采用了两种不同的数据块布局:完整块和层级块,它们分别包含所有层的信息和单个层的信息。对于所有与存储系统的交互,均采用完整块。在 PE 读取的情况下,KV-Cache 加载到 PE HBM 以及传输到 DE 缓冲区的过程是以层级流式方式进行的,两者都使用层级块。同样地,对于 DE 读取路径,从 DE 缓冲区到 PE HBM 的传输也使用层级块。


无瓶颈(Bottleneck-Free)分析


比例(预填充 / 解码比例)下证明了,该系统可以完全打满所有存储网卡(NIC)的带宽,且不会引入计算网卡或 DRAM 的瓶颈。


假设 PCIe 拓扑配置良好(即每一对 GPU - NIC 都位于同一个 PCIe 交换机下)、任务调度负载均衡、计算网络无拥塞,且存储读取带宽得到了充分利用。


首先是 PE CNIC 带宽分析。对于 PE CNIC,由于存在回环流量(即不经过交换机的 H2D 和 D2H 拷贝),因此无论读或写操作,PCIe 侧的总流量始终大于或等于交换机方向的流量。因此,只需要计算 PCIe 侧的压力。读取操作包括 PE 路径 (3) 和 (5),其在所有配对上的总流量为:



其次是 DRAM 压力分析。DRAM 是半双工的,因此将读取和写入压力相加。对于 PE 内存,其压力为 2sB,这通常不会超过内存带宽。对于 DE 内存,遵循上述类似的分析,可以得出其压力为 (3 + 2P / D) Bs。要求 DE 内存压力小于或等于 M,得到如下:



更多公式请参考原论文。


实际挑战


双路径架构从根本上重新定向了数据移动方式:KV-Cache 既可以直接从存储加载到预填充引擎,也可以通过解码引擎间接加载 。通过这种方式,系统聚合了所有引擎的存储带宽,从而打破了预填充侧的 I/O 瓶颈 。然而,在实际系统中实现这一高层设计引入了三个相互关联的挑战 。


一是细粒度数据传输。层级执行范式虽然对于克服 HBM 容量限制至关重要,但它会将 KV-Cache 碎片化为海量的细粒度数据块。为了实现吞吐量增益,在存储、主机 DRAM 和 GPU HBM 之间传输这些海量的细粒度数据块时,必须确保产生极低的开销,并与计算任务无缝重叠。


二是流量隔离。DualPath 中复杂的数据路径在计算网络和 PCIe 链路上都引入了额外的 KV-Cache 传输流量。一个主要的顾虑是,这些流量可能会干扰模型执行中至关重要的、对延迟敏感的现有集合通信操作 —— 例如专家并行中的 AllToAll,以及张量 / 上下文并行中的 ReduceScatter 和 AllGather。由于这些集合通信直接决定了端到端的推理延迟,因此在不降低模型推理性能的前提下利用空闲 I/O 带宽是一个关键挑战。


三是动态负载均衡。由于采用了两种不同的 KV-Cache 加载路径,系统必须及时决定每个请求使用哪条路径。过于简单的策略可能会导致某条路径过载,从而重新产生原始瓶颈。流量调度器必须实时平衡多个因素:存储网卡队列长度、GPU 上的计算负载以及请求的工作负载特性。


评估结果


在评估部分,论文核心任务只有一个:证明 DualPath 在真实 agent 工作负载下,确实能解决存储带宽瓶颈,并带来稳定、可扩展的性能提升。


论文在自研推理框架上实现 DualPath,核心改动约 5000 行代码。底层使用 FlashMLA、DeepGEMM、DeepEP 等高性能算子,存储后端采用 3FS 分布式存储。


评测模型包括:DS 660B(MoE + 稀疏注意力)、DS 27B(缩小版实验模型),Qwen 32B(稠密模型)。


离线批量推理


这一部分模拟 RL rollout 场景:n 个 agent 同时启动,测整体完成时间(JCT)。


不同 Agent 批量规模与最大 Agent 长度(MAL)的影响。 随着批量规模增大以及 MAL 变长,DualPath 的优势更加明显。图 7 展示了在不同 batch size 与 MAL 组合下的 JCT 表现。SGL (MC) 出现错误,未能完成部分大规模配置(图中 token 为 N/A)。在 DS 660B 模型上,DualPath 相比 Basic 最高实现了 1.87× 的加速,并展现出接近 Oracle 的性能,这表明 KV-cache 的 I/O 开销基本被消除。在 DS 27B 上,DualPath 相比 Basic 最高提升 1.78×,但由于 1P1D 架构下存储带宽受限,其性能仍比 Oracle 慢 1.09–1.85×(见图 8)。对于 Qwen 32B,趋势与 DS 27B 类似。




不同追加长度(Append Length)与生成长度(Generation Length)的影响。如图 9 所示,随着追加长度增加,Basic 的性能逐渐接近 DualPath 和 Oracle,而 DualPath 与 Oracle 的性能变化较小,这表明系统瓶颈始终主要来自 GPU 计算压力。与 Basic 相比,DualPath 在不同追加规模下实现了 1.82–1.99× 的加速。生成长度扩展时的趋势类似。 



Online Serving(在线推理服务)


在线服务实验部分则模拟真实生产环境下 agent 按泊松分布持续到达的场景,设置 TTFT ≤ 4 秒、TPOT ≤ 50 毫秒为服务等级目标。结果表明,DualPath 显著提高系统可承载的到达率上限:在 DS 27B 上提升 1.67 倍,在 DS 660B 上提升 2.25 倍。


与此同时,DualPath 的 TTST 与 Basic 基本持平,TPOT 也未引入额外解码开销,说明其优化集中在 KV-Cache 读取与排队阶段,而不会影响解码阶段效率。更重要的是,在负载升高时,DualPath 能保持 TTFT 结构稳定,而 Basic 的排队时间会因存储带宽不足迅速上升,成为延迟恶化的主要来源。



最后,论文还做了大量消融实验,感兴趣的读者,可以参考原论文,查看更多内容。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com

CNIC 流量管理和 QoS 机制确实是保证推理服务质量的关键。但在实际应用中,挑战肯定不少:

1. CNIC 资源竞争:如果集群中多个任务同时需要使用 CNIC 进行数据传输,可能会出现资源竞争,导致优先级高的任务也受到影响。
* 应对方案:可以引入更精细的资源调度策略,例如基于 CGroup 的资源隔离,确保高优先级任务获得足够的 CNIC 资源。
2. QoS 参数调优:QoS 参数设置不合理,可能会导致优先级高的任务延迟过高,或者优先级低的任务完全无法运行。
* 应对方案:需要根据实际业务场景和模型特点,对 QoS 参数进行精细化调优。可以考虑使用自动化调优工具,根据历史数据和实时监控信息,动态调整 QoS 参数。
3. 网络拥塞:如果网络带宽不足,即使设置了 QoS,也可能无法保证高优先级任务的延迟。
* 应对方案:可以采用流量整形、拥塞控制等技术,缓解网络拥塞。此外,还可以考虑升级网络设备,提高网络带宽。

总而言之,CNIC 流量管理和 QoS 机制的有效性,很大程度上取决于具体的部署环境和参数配置。需要不断地监控、调优,才能达到最佳效果。

DualPath 架构的核心优势在于缓解存储带宽瓶颈,因此对于 I/O 密集型的智能体应用效果显著。但是,对于其他类型的应用,可能存在以下局限性:

1. 计算密集型应用:如果智能体的主要瓶颈在于计算复杂度,例如需要进行大量的矩阵运算或者复杂的逻辑推理,那么 DualPath 带来的收益可能有限。
2. 低延迟敏感型应用:DualPath 引入了额外的 KV-Cache 传输路径,可能会增加一定的延迟。对于对延迟要求极高的应用,例如实时对话系统或者控制系统,需要仔细评估 DualPath 是否会影响用户体验。
3. 小规模集群:DualPath 的优势在于聚合了集群中所有引擎的存储带宽。如果集群规模较小,存储带宽本身就比较充足,那么 DualPath 的收益可能不明显。

因此,在选择是否使用 DualPath 时,需要综合考虑智能体应用的特点、集群规模以及性能指标要求,选择最合适的架构。

我持谨慎乐观态度。DualPath针对的是Agent LLM这种“长上下文,短追加”的场景,其他类型的AI应用未必符合这个特点。如果简单照搬,可能会适得其反。我觉得需要深入分析具体应用的数据访问模式,才能判断DualPath的思路是否适用。比如,对于随机访问较多的应用,可能需要考虑其他的优化方案。

除了KV-Cache,计算效率也是瓶颈。像FlashAttention这样的技术已经证明了减少计算复杂度的潜力。未来,我觉得可以探索更高效的注意力机制,或者直接研究新的Transformer替代架构。再一个就是通信开销,尤其是在分布式推理的时候,节点间的同步和数据传输会严重影响整体速度。改进通信策略,比如使用更快的网络或者更智能的数据分片方式,也能带来显著提升。

这个问题问得好!我觉得 DualPath 的收益与集群规模之间存在一定的关系。在小规模集群中,存储带宽的瓶颈可能没有那么明显,因为单个节点的 I/O 压力相对较小。

但是,即使在小规模集群中,DualPath 仍然可能带来一些好处,例如可以更好地利用集群中的所有存储网卡带宽,提高资源利用率。此外,DualPath 的自适应调度机制也可以帮助平衡各个节点的负载,避免出现单点瓶颈。

从工程实现的角度来看,DeepSeek 应该做了很多优化来避免 DE 成为新的瓶颈。比如,他们使用了高性能算子(FlashMLA、DeepGEMM、DeepEP)来加速计算,优化了数据传输的效率,并且采用了 RDMA 等技术来减少数据拷贝的开销。

这些优化措施共同保证了 DualPath 在实际应用中能够取得良好的性能提升。

我个人觉得,DualPath 在小规模集群中的收益可能会打折扣。因为双路径加载引入了额外的网络传输开销,在小规模集群中,节点间的通信延迟可能相对较高,这会抵消一部分并行加载带来的好处。

而且,小规模集群的节点数量较少,单个节点出现故障的影响更大。如果 DE 节点出现故障,可能会导致整个系统的性能下降。

楼上的解释很形象!我补充一下,DualPath 还采用了自适应请求调度,调度器会实时监控各引擎的磁盘读取队列长度和计算负载,动态决定每个请求的最优路径。也就是说,如果 DE 负载过高,调度器会倾向于使用 Prefill Engine (PE) 读取路径。

这种动态调整机制可以有效地平衡各个引擎的负载,避免出现新的瓶颈。

这个问题问到了 DualPath 的一个关键点!论文里提到,DE 承担 KV-Cache 加载任务可能会给 DRAM 和 CNIC 带来额外的带宽压力,因为增加了一次额外的 H2D 拷贝。

DeepSeek 采用的解决方案是以 CNIC 为中心的流量管理,通过网络的服务质量(QoS)机制,将推理通信设为高优先级,确保加载 KV-Cache 的流量仅利用闲置带宽,不影响延迟 SLO(Service Level Objective)。说白了,就是"不占着茅坑不拉屎",只用空闲资源。

这个问题很有意思!我觉得 DualPath 的核心在于解决存储带宽瓶颈,尤其是在长上下文场景下。虽然 Agentic LLM 对长上下文的需求更为迫切,但非 Agentic LLM 在处理文档总结、长篇翻译等任务时,同样面临这个问题。所以,DualPath 的思路是有借鉴意义的。

具体调整方面,可能需要考虑任务的上下文长度和 KV-Cache 命中率。对于上下文较短、命中率较低的任务,双路径加载的收益可能不高,甚至会引入额外的 overhead,需要仔细权衡。

我觉得楼上两位都分析得很到位。我补充一点,DualPath 的设计考虑了推理的实时性要求,通过优先级控制和自适应调度来避免干扰延迟敏感任务。这一点对于在线服务场景尤为重要。

那么,对于非 Agentic LLM,可能需要根据具体的服务等级协议(SLA)来调整流量管理策略,例如调整优先级队列的长度、修改调度算法的参数等,以满足不同的延迟要求。

从经济效益的角度来看,如果 GPU 数量很少,那可能不如直接升级单机的存储性能划算。DualPath 这种方案更适合已经有一定规模,且受限于总存储带宽的集群。当然,具体情况还要具体分析,需要综合考虑集群规模、硬件配置、任务类型和性能要求等因素。

我来个更学术的回答吧。DualPath 本质上是一种存储优化策略,通过并行化数据加载来缓解 I/O 瓶颈。从这个角度看,只要 LLM 推理过程中存在显著的存储瓶颈,无论是否为 Agentic,DualPath 都有潜在的应用价值。

关键在于分析具体场景下的瓶颈所在。如果计算才是瓶颈,那么 DualPath 的效果可能就不明显。此外,还需要考虑硬件资源的限制,例如网络带宽、内存容量等,这些都会影响 DualPath 的实际效果。