☰
AI大模型训练下的RDMA网络革新:Stellar动态调度架构解析
2026/10/20 4:42:00 网站建设 项目流程

搞网络的人看到这题目应该都会心头一紧。SIGCOMM是整个网络方向含金量最高的会,能在上面发一篇云AI RDMA网络的paper,还得是圣杯级别的难题——偏偏AI大模型训练最吃网络的时刻,传统RDMA方案偏偏在最关键的负载均衡和性能隔离上卡了脖子。

这篇文章我仔细啃了两遍,结合我自己在数据中心网络里摸爬滚打的经验,把里面核心的设计思路、解决的问题、以及到底怎么落地到真实集群里,给你一条条拆开讲清楚。不整虚的,直接把干货掰开揉碎。

1. 先搞清楚Stellar要解什么题:AI训练流量为什么让老方案狼狈不堪

1.1 传统RDMA网络的“静态执法”困境

先说背景。RDMA(远程直接内存访问)这技术本身不新鲜,关键在“远程直接内存访问”这七个字:网卡可以直接读写远端机器的内存,绕过操作系统内核,延迟能做到微秒级以下。过去几年,业内主流的无损RDMA网络——也就是RoCEv2——靠什么保证不丢包?靠PFC(优先级流控)逐跳反压,再靠DCQCN这类拥塞控制算法把流量控制在网络承受范围之内。

问题就出在“静态”这两个字上。

传统RoCE网络里的负载均衡,大多依赖ECMP(等价多路径)哈希。什么叫ECMP哈希?就是交换机看到一个数据流,按五元组(源IP、目的IP、源端口、目的端口、协议)算一个哈希值,把这个流固定扔给某一条物理路径。只要哈希不冲突,同一个流的所有包都走同一条路,天然保序,实现也简单。

但AI训练流量恰恰是ECMP的克星。

大模型训练的核心通信模式就是集合通信,最常见的是AllReduce(全量归约)和AlltoAll(全换)。AllReduce做梯度聚合,每个GPU要跟所有其他GPU交换数据;AlltoAll做专家并行或序列并行,每个GPU要把数据切碎了发给其他所有GPU。跑起来是什么效果?集群里成千上万个GPU同时发起通信,流的大小、方向、持续时间全在动态变化,流与流的碰撞此起彼伏。

这时候ECMP哈希的弊端暴露无遗:

  • 两条大流哈希到同一条物理链路,这条链路瞬间打满,另一条路径闲着,网络利用率上不去
  • 哈希冲突的直接后果是拥塞、丢包、PFC风暴,RDMA的延迟飙升
  • 而AI训练是个“木桶效应”极其严重的场景——2000张卡一起训练,只要其中一对卡的通信慢了,整个训练step的完成时间就被拖到最慢那一对

说白了,传统网络像个刻板的交警,每个路口只认死规则、只看车牌号;AI流量却是一大群不走寻常路的车队,路线随时变化,交警的规则本根本跟不上。

1.2 多任务并存时的一粒老鼠屎效应

如果说单任务流量已经让人头疼,多任务混跑就是雪上加霜。

现在云厂商的AI集群什么样?不是一次只跑一个大模型,而是十几个训练任务同时在集群里跑。有的任务80张卡,有的任务几百上千张卡。这些任务的流量在网络里完全交织在一起。

问题来了:RDMA网络本身是个“共享池”。一个任务里的某个通信流量稍微激进一些,占满了某条链路的buffer,其他任务的流量就得跟着遭殃,严重的还会引发PFC死锁——一个流的拥塞反压到上游交换机,上游交换机buffer也满了,继续反压到网卡,最后把整片网络的流量全部堵死。

传统方案不是没有隔离手段,无非是限速、打标、把不同任务的流量硬切到不同的虚拟网络里。但AI流量的特征决定了这种硬隔离的代价极高:你给任务A划了两条路径,可任务A遇上AlltoAll浪涌流量,两条路径根本不够用;任务B那边明明空闲着四条路径,却因为隔离策略不能用。

这不是调度问题,这是网络架构层面的设计缺陷。

2. Stellar的整体思路:把“静态执法”变成“动态调度”

2.1 核心思想:集中式全局视角加分布式快速响应

Stellar给出的解法,一句话概括:用集中式控制器拿到全局视野,再靠交换机上的自适应路由做局部快速响应,两边配合起来。

你可以把它理解成一套“全局调度中心+现场指挥官”的体系:

  • 全局调度中心(集中式控制平面):实时收集全网拓扑信息、链路负载信息、每一条流的路径信息和流量信息。这相当于拿到了一张实时更新的全城交通热力图,知道哪条路堵、哪条路空、哪个车队要去哪。
  • 现场指挥官(分布式自适应路由):交换机本地针对细粒度的流量动态调整转发路径。不像ECMP那样只看哈希结果做一次性决定,而是结合全局调度中心给的信息,在拥塞发生时把流量从堵的路上挪到空的路上。

这套架构最关键的点在于:集中式不是事无巨细地管到每一个包的转发路径,否则控制器的压力和响应速度根本跟不上微秒级的流量变化。集中式只负责给出“大方向”——比如哪些任务应该用哪些路径集合、哪些链路被某个大流占住了需要给其他流让道。真正的包级别转发决策,放权给交换机本地做。

这就像城市交通:交管局(控制器)不会指挥每一辆车每一个路口怎么拐,但它会告诉你哪里在管制、哪里在修路,然后交警(交换机)在现场灵活疏导。

2.2 三层协同:为什么少了任何一层都会出问题

我把这张论文里的架构拆成三层来看,逻辑就非常清晰了。

顶层:多任务与路径协同调度

这一层干的事是“大调配”。控制器掌握整个集群的GPU分配情况,知道每个训练任务占用哪些GPU、这些GPU之间即将产生什么样的通信模式。基于这个信息,它会给每个任务预测性地划拨路径资源。关键细节是,这层不是只看当前链路负载,而是会去感知“这个任务下一步的通信流量可能有多大”。比如某个任务马上要做一次全量AllReduce,它需要的带宽是数百Gbps级别,控制器会提前把这个任务的关键路径上的链路预留出来。

中层:动态路径切换与流的重映射

这一层解决的是“静态哈希”最痛的问题。既然ECMP哈希容易撞车,那就让交换机能动态改变流与物理路径的映射关系。Stellar的做法是让交换机上的自适应路由模块持续跟踪每条流的大小和速率。一旦某条流在链路上产生了拥塞,并且控制器下发了路径调整策略,交换机就会把这条流平滑迁移到备用路径上。

注意“平滑”这两个字。RDMA对乱序是零容忍的——包一旦乱序,接收端就得丢弃重传,性能直接雪崩。所以Stellar在做路径切换时用了一套很讲究的机制,确保同一个流的“正在途中的包”不会因为路径切换而产生乱序。这套机制具体是什么,后面我会展开讲。

底层:在网拥塞感知与快速反馈

这一层是交换机通过硬件计数器持续监控每条端口的队列深度、丢包率、PFC暂停次数,把这些信息实时汇总到控制器。控制器拿到这些数据,才能形成“全网拥塞地图”,驱动顶层和中层做出决策。

三层各有分工:底层负责收集情报,顶层负责制定战略,中层负责战术执行。少了底层,控制器就是瞎子;少了顶层,中层就只能局部优化,治标不治本;少了中层,顶层再聪明,现场也没人执行。

3. 核心机制逐一拆解:Stellar到底动了哪些手术

3.1 可感知多任务的路径分配策略

刚才说了,Stellar的顶层调度会感知任务。这里有一个很实际的难点:控制器怎么知道一个任务未来会产生什么通信模式?

论文的做法我自己也在实践中验证过类似思路——利用集合通信的可预测性。大模型训练的通信模式本质上不是随机的,它是被算法结构决定的。Transformer的训练里,每完成一个iteration,梯度同步的通信模式几乎一模一样。AllReduce跨机通信的数据量也是稳定的,因为模型并行策略是固定的。

基于这个特性,控制器可以从训练框架的通信原语层面获取任务对未来带宽的“预约请求”。我自己的理解是,这种预约不一定非得精确到每一条流的字节数,只需要知道“这个任务在未来几十毫秒内,会有多大体量的跨机通信、通信发生在哪些GPU groups之间”。知道这点,调度中心就足以做路径规划了。

拿到所有任务的带宽预约之后,控制器要解一个路径分配问题。这个问题的输入是:

  • 全网拓扑(哪些交换机连接哪些GPU服务器)
  • 每条链路的容量
  • 每个任务在不同时间段的带宽需求
  • 每条流的五元组及起始节点、终止节点

输出是:一条流应该走哪条路径,以及这条流和其他流如何共享链路。

这本质上是个多商品流(Multi-commodity Flow)问题,理论上是个NP-hard问题。论文里用的是启发式算法在秒级时间内给出一个接近最优的解。我在实际工程里遇到过类似问题,分享一个我自己的体会:这类启发式算法真正的难点不在数学推导,而在把“约束条件”建模建得足够贴近真实物理网络。比如,光知道链路带宽不够,还得考虑交换机buffer大小、流的burst特性、甚至PFC反压带来的耦合效应。约束没建好,算法算出来的路径看着挺好,一跑真实流量就原形毕露。

3.2 交换机上的自适应路由是怎么实现的

这一块是Stellar的精华所在。

传统交换机转发只有“查表-出端口”两个动作。Stellar的自适应路由改成了“查表-判定拥塞-选择出端口”。

交换机的自适应模块怎么知道哪条路径拥塞?原理是通过交换机内部的硬件状态——每条出端口的队列深度。当端口队列积压到一定阈值,说明这条出口链路要堵了。但如果只靠阈值触发,响应太被动,流量在该拥塞的路径上已经等了不少时间。

Stellar的做法是让控制平面定期下发“拥塞感知表”——记录哪些路径可能拥塞、哪些路径上有大流占用、哪些路径目前是空载状态。交换机上的转发逻辑在哈希之外,加了一个仲裁步骤:如果哈希命中的出端口正是拥塞路径,则根据拥塞感知表的优先级,选一条不那么堵的备用路径发出去。

当然,实话说,这种“按需旁路”机制在学术论文里听起来很顺,工程实现上的坑非常多。最大的坎就是乱序问题。

我举个具体场景:某条流的前100个包已经从路径A发出去了,路径B是备用路径。现在交换机决定第101个包走路径B。如果路径A比路径B短,走路径A的100个包可能还没到接收端,走路径B的101个包反而先到了。接收端网卡一看序号乱了,立刻丢包并触发重传,整个流的吞吐崩塌。

Stellar怎么解决?论文里给的核心方案是**“按流粒度的路径切换加序列协调”**。也就是说,路径切换不发生在包的级别,而是发生在流或者子流的级别。更具体一点,切换的时机是在流的间隙(比如两个连续的flit之间没有待发送数据),或者在交换机本地能够确认前一条路径上的包已经全部清空之后。

翻译成人话:要搬家可以,但必须等老房子的东西全搬完了再走新房子的门。

这个设计在工程上有很高的代价——它要求交换机具备按流计数和清空感知的能力,部分传统交换芯片是不支持的。这也是为什么这类型的方案在真实硬件上部署,通常都跑在可编程交换芯片上。要是用固定管线芯片,这机制大概率落不了地。

3.3 细粒度流调度:Big Flow和Small Flow的区别对待

RDMA网络里最尴尬的问题就是大象流和小鼠流同路。

AI训练里的大象流是AllReduce的梯度流量,动不动就是数百MB到GB级别的数据量,一条流能把整条链路的带宽全吃掉。小鼠流是控制面、元数据、心跳之类的短报文,通常只有几十KB,但对延迟极其敏感。

在实际负载里,这两类流量混在一起跑。传统网络一视同仁地转发,结果小鼠流排在大象流后面,忍受毫秒级别的排队延迟。一次控制面握手慢了,可能拖累整个训练任务里某个step的启动。

Stellar里对小流是特殊优待的。交换机能识别出哪些是“持续时间短、总量小”的流,给它们分配独立的快路径,优先转发。大象流则被压到专门的路径上,甚至会被主动打散到多条链路上。

这个“大小流分离”的思路,说实话不是Stellar首创的,业界很多方案都提过,但Stellar把这件事和全局任务感知结合起来了。控制器知道哪个任务即将发起一个大象流,能在它诞生之前就给它铺好专用的多路径通道,而不是等大象流已经堵在队列里才开始分流。

3.4 故障处理与无感迁移

网络做再好,链路故障还是躲不开。光模块老化、光纤松动、交换机升级,都是家常便饭。

Stellar对故障的处理策略是:故障感知和路径迁移的联动。

传统网络里一条链路断了,依赖的是动态路由协议收敛——协议发现拓扑变了,重新计算路由,下发流表。整个过程在毫秒到百毫秒级别,对传统TCP流量来说还能忍,但对RDMA训练流量来说,几百毫秒的断流相当于白白浪费了整个集群几万GPU-hours的计算量。

Stellar的思路是缩短故障感知到路径切换之间的时间窗。交换机监视物理链路状态,一旦发现链路down或者链路质量剧烈下降,立刻上报控制器,同时本地把经过这条故障链路的流标记出来。控制器收到故障信息后,把之前分配好的路径集合重新调整,把故障链路上的流映射到其他健康路径上。关键步骤是,这个过程不依赖重传超时,而是直接主动推送新路径给交换机。从我的经验看,这种主动推送机制能把故障恢复时间压缩到几十毫秒级别,对训练任务的影响能控制在一个可接受的范围内。

当然,真实环境里故障不只有链路down,还有“半死不活”的链路——物理链路up,但误码率高得离谱,偶尔丢包。这种故障最难查,因为它不触发链路状态变化,只能靠误码率监控与重传率异常检测来发现。Stellar有没有做这个我不确定,但从实战角度看,任何号称高性能的网络方案,不在“哑故障”上做文章,落地的时候都会被现实狠狠教育。

4. 从论文到落地:这套方案对AI集群实战设计的启示

4.1 硬件需求和部署形态:不是所有交换机都能跑

聊完了原理,必须给想动手实践的人泼一盆冷静的水:Stellar这套架构对底层硬件的要求非常具体。

核心要求有几点:

  • 交换机需要支持自适应路由:这不是普通的Hash转发能搞定的,需要交换芯片具备按流状态统计、队列监控、路径重映射的能力
  • 端网协同:流信息要能从GPU/网卡侧上报到控制器,或者控制器要能获取训练框架的通信原语信息。这意味着服务器的网卡或驱动需要做一些配合改动
  • 集中式控制器:需要一个全局控制平面,实时收集全网状态并下发决策。控制器的可靠性、扩展性本身就是个工程挑战

目前市面上支持这类能力的主流方案多是基于可编程交换芯片的硬件。如果你手头是老旧的数据中心交换机,大概率只能“see the idea, not the implementation”。

4.2 对网络运维人员的实战操作建议

看完了论文里的新架构,你的第一反应可能是“这是厂商该操心的事”。这个想法没错,但网络团队不能完全坐等。

我在实际维护AI集群网络的过程中,有几个心得值得分享:

第一,先把自己的网络监控体系补到位。无论你最后用不用类似Stellar的方案,你都必须能做到“分钟级定位拥塞链路”。我在自己的机房里强制要求每个交换机都打开端口的队列深度监控,实时上报到统一监控平台。没有这个基础数据,任何优化方案都无从谈起。

第二,重新审视ECMP哈希的配置。如果你还在用传统的ECMP做负载均衡,至少要做一件事:确保哈希因子中包含足够的随机性,尽量让大流的哈希分布更均匀。这不是长久之计,但在方案升级之前能缓一口气。我自己踩过的坑是,默认哈希配置下,两条大象流哈希到同一路径的概率比想象中高得多。

第三,为大小流分离留好后路。如果你的交换机支持PFC优先级打标,可以考虑把不同优先级的流量引导到不同的物理通道上,先做到软隔离。

第四,也是最重要的:训练任务侧的通信拓扑要和网络拓扑对齐。这是很多人忽略的事。网络层再智能,如果训练框架里GPU分配不考虑物理拓扑,跨机通信就要绕远路。Stellar这类方案能在路径调度上做很多优化,但物理上相邻的GPU做通信,比跨区域通信铁定延迟低。最好的实践是在做任务调度时就尽量让同一个节点内的GPU先完成通信,再走跨机通信。

4.3 性能数据说明了什么

论文里给出了在真实测试床上的验证结果,核心数据我挑几个重点说:

  • 相比于传统ECMP方案,在AlltoAll流量模式下,网络吞吐提升了约30%到50%
  • PFC风暴的发生频率大幅下降,因为路径切换能把拥塞流量提前疏导走
  • 多任务混合跑场景下,任务间的性能干扰明显减弱,单个任务的训练效率稳定性提升

这些数字放在真实集群里,意味着什么?直接换算成训练时间——一个本来要跑10天的大模型训练,在网络优化后可能缩短到8天甚至更短。做AI基础设施的人都明白,几天的训练时间差,对应的就是几十万甚至上百万的GPU算力成本差。

但我提醒一句:看到这些数字别太兴奋。论文测试床的环境相对可控,真实生产集群还有散热、光模块质量、机房改造等各种干扰因素。更贴近真实情况的判断是,这类方案能带来收益,但收益的幅度和环境干净程度强相关。

5. 常见问题与排查思路:从传统RDMA迁徙到新型架构

5.1 换方案初期最容易踩的三个坑

我见过不少团队,看完此类论文就摩拳擦掌想落地,结果上来就撞墙。这仨坑最常见。

坑一:控制器成为新的性能瓶颈。集中式控制器要处理全网流的路径计算,输入信息一多,计算量暴涨。如果控制器的处理速度跟不上数据面状态变化的速度,下发的路径决策就是滞后的,甚至可能加剧拥塞。我们的实践是,控制器和交换机之间的通信要尽量精简,只上报变化量,别搞全量数据同步。

坑二:路径切换导致接收端乱序丢包。前面讲了,RDMA对乱序零容忍。如果你的交换机实现路径切换时不够平滑,接收端就会出现大量序列号跳变,性能比不做切换还要差。所以,任何路径切换方案,上线之前都必须用专门工具做乱序报文测试,而不是只测吞吐。

坑三:多任务路径规划与实际流量不匹配。控制器按任务的大类分配路径,但真实流量是有突发性的。某个任务在某个瞬间的实际流量超过预估,就会侵占其他任务的路径,引发跨任务干扰。解决方向是控制器要以更短的时间粒度和更细的流粒度做动态调配。

5.2 一张速查表帮你判断是否需要升级成此类方案

判断指标传统ECMP方案状态适合Stellar类方案的信号
训练任务规模单任务几十卡,跨节点通信少单任务几百上千卡,跨节点通信密集
负载均衡效果偶发链路打满,利用率低于50%多链路利用率不均,热点频发
PFC风暴偶尔出现,能通过限速缓解高频发生,限速后依然严重
多任务混跑任务间隔离要求低多任务混跑,且要求稳定SLA
运维能力无集中式控制器,纯手工运维已有控制器基础,能接受快速迭代

如果你符合右侧至少三个信号,这类方案就值得深入研究。如果条件还没到,先把自己的监控和基础负载均衡优化做扎实,别盲目追新。

5.3 技术落地中常被忽略的四个细节问题

除了上面三个大坑,实际部署时还有一些不起眼的细节,做不好也会卡壳。

细节一:网卡固件版本必须统一。RDMA网络对端侧网卡的一致性要求极高。不同固件版本的网卡在拥塞控制行为上有细微差异,混跑时会出现流量互相压制的情况。我在维护的集群里坚持所有网卡固件按月统一升级,虽然过程痛苦,但排除了一大批隐性故障。

细节二:光纤链路质量问题比想象中影响更大。RDMA网络跑在无损模式下,对链路质量极其敏感。一根光纤的弯曲半径超标,可能让误码率上升一个数量级,而误码率的表现就是偶发的丢包和重传。新方案部署前,把每根光纤的衰减参数测一遍,能省下后面大量半夜排查时间。

细节三:不要忽略交换机CPU的负载。自适应路由方案里,交换机CPU要处理控制器的下发的策略、上报本地统计信息。如果交换机的CPU性能不够,一旦出现故障风暴(比如大量链路同时down),CPU会打满,数据面的转发反而失控。

细节四:训练框架侧的同步机制和网络方案的适配。这一点最容易被两边团队互相推诿。网络团队觉得方案没问题,训练框架团队觉得网络不够稳。实际上,Stellar这类动态路径切换要考虑训练框架的通信同步语义。我的建议是两边团队拉通做联合压测,别各测各的。

6. 工程实现里必须面对的性能与成本权衡

6.1 自适应路由带来的额外开销

任何优化方案都不会上天掉馅饼,Stellar的代价也很明确。

代价之一是交换机的资源占用。自适应路由要求交换机在本地维护更多流状态、更多路径信息,这直接吃掉了芯片的表项资源。代价之二是控制器的计算开销。每秒要处理全网的状态变更、路径计算,这个控制器的性能配置堪比一台小型的计算服务器。

从我在工程里做类似集中式网络优化方案的经验看,控制器的扩容设计一开始就要考虑好。不要等到全网规模上来了再回头加资源,你会发现改造的代价比一开始就大得多。

6.2 收益的量级估算参考

我做一个粗略测算供参考。假设你有512个GPU节点(每节点8卡,共4096卡)的集群在跑大模型训练,采用这类网络架构优化后,即使整体训练效率只提升10%,对应到整体算力成本上,就是一个相当惊人的数字。再叠加稳定性收益——少了几次PFC风暴导致的训练中断,省下的故障恢复时间更可观。

当然,这笔账能不能算通,取决于你的集群规模。如果只有几十卡的训练任务,网络优化带来的收益非常有限,还不如把预算花在GPU采购上。这个方案天生是为大规模AI集群准备的。

7. 未来演进与个人体会

看完Stellar的设计,我最直接的感受是:RDMA网络正在从“尽力而为的静态基础设施”变成“与应用联动的动态调度系统”。

这跟几年前网络领域流行的“应用感知网络”理念一脉相承,但真正把它落地到AI训练这样高要求的场景里,还是第一次看到比较完整的方案。

我对后续技术路线的判断主要有三个方向:

  • 端网融合会进一步加深。现在的方案还是网络侧主动收集、训练框架被动配合。下一步大概率是把训练框架的通信调度直接和网络控制器做联合设计,让网络不再是透明的管道,而是训练任务的一个可编程调度组件
  • 可编程数据平面会成为标配。这类方案依赖高灵活度的交换机硬件,传统的固定管线芯片很难承载。可编程芯片的成本在下降,大规模落地只是时间问题
  • 网络可观测性的重要性将继续上升。动态路径调度越复杂,全网状态的可观测性就越重要。后续方案一定会在带内网络遥测(INT)这类技术上倾注更多资源

如果你正在维护AI训练集群的网络,我的建议是:先别急着摘果子,先把基础监控和数据采集做好。等你的数据能清晰描述“哪条链路在哪个时间点在拥塞、哪条流在哪个交换机的哪个队列里排队”的时候,你自然就知道下一步该往哪儿走。

而我个人在实操中最深刻的体会是:网络优化永远不是纯技术问题,它是技术架构和业务场景反复对焦的过程。一套方案在A机房跑出亮眼数据,换个业务模型到B机房可能反而水土不服。先吃透自己的流量特征,再判断新技术是否适配,这是任何时候都不会过时的打法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询