华为在全联接大会2026上给过一组仿真数字,同样是10万卡规模的训练集群,如果用传统8卡服务器堆出来,芯片之间的通信代价会超过训练时间的40%;换成用4K规模的超节点来组这10万卡,华为称模型浮点算力利用率(MFU)能提升2.75倍。

把一次训练迭代画成100个时间格,按华为这组仿真,通信相关代价占了40格以上。这些时间不等于GPU全部停算,其中可能包含数据传输、同步、协议处理,以及无法被计算掩盖的等待。继续往集群里加芯片,如果只把计算部分切得更碎,整次迭代未必会同比缩短。

这几年“超节点”“光互联”“NPO”“全量池化”轮番刷屏,都在处理同一类问题——通信墙。内存墙描述的是计算速度与数据供给速度之间的差距,范围可以覆盖寄存器、缓存、HBM和主存等多个层级;这篇把注意力放到设备之间,看模型拆到成千上万张卡之后,数据为什么来不及交换。

上一篇《4096张卡凭什么算一台计算机》拆的是昇腾960超节点怎样靠物理传输、互联协议、统一编址和调度容错,被搭成一台逻辑计算机。这一篇往前追问:为什么非得把互联域做这么大?

开头那个40%和2.75倍,是华为描述的架构仿真结果、经现场媒体转述,不是昇腾960的实机测试,也不是“所有10万卡集群都会固定损失40%”;它比较的是“4K超节点集群”和“8卡服务器集群”两种完整架构,不是单独换上NPO的效果。这两个数字后面还会专门拆,这里先只当引子。

两类供数瓶颈:计算单元取数与设备之间交换
两类供数瓶颈:计算单元取数与设备之间交换

模型变大,并不会自动长出通信墙。转折发生在模型、激活值和训练状态放不进少量卡之后:计算被摊到更多卡上,单卡算的只是一部分,下一步开始前还得把梯度、中间结果或Token重新交换、汇总。卡继续加,单卡计算量能降,但通信轮数、参与设备、跨越距离和同步等待不一定跟着同比下降。通信墙可以这样理解:

继续加算力卡后,单卡计算时间还在缩短,但无法被计算掩盖的通信与等待没有同比缩短,新增每张卡带来的训练加速越来越小。

它不是一条固定的硬件极限。墙出现在哪儿,取决于模型结构、并行策略、网络、拓扑和软件实现。同样的卡,换一种模型或并行策略,利用率可能完全不同。

一、卡为什么必须和卡“说话”

分布式训练最大的误解,是以为“把任务分给不同卡,各算各的就行”。实际上,每张卡拿到的通常只是同一个模型、同一批数据、或同一层计算的一部分;算完自己那份,就得和别人对齐,对齐就得互相传。通信是分布式训练的“税”,不是可选项。

跟着一层Transformer走一遍就清楚了。前向计算时,各卡算出局部激活值或局部矩阵结果;如果这一层被拆到多张卡上,下一层开始前得先把这些局部结果汇总;反向传播时,各卡算出局部梯度;模型副本或参数分片要保持一致,还得再归并、再分发。在常见的同步训练里,下一次迭代要建立在更新后的一致模型状态上。卡之间传的不是聊天消息,而是梯度、激活值、参数分片、优化器状态,乃至Token的路由结果。

这些“对齐”动作有个统称叫集合通信,最典型的是AllReduce,一句话就能说明白:

每张卡交出自己的局部结果,系统完成求和等归并操作,再把一致的结果发回参与计算的每一张卡。

其余几个常打交道的操作也各有分工。AllGather由每张卡贡献一份数据分片,所有参与卡最后都收到拼接后的完整结果;ReduceScatter先归并,再把结果分片发下去;All-to-All则让每个参与者向其他参与者发送不同的数据块。定义可以直接参照NVIDIA的NCCL集合通信文档,这里不展开。

这更像一桌人分工做一道大菜。人越多,切配越快;可每道工序上桌前都要全桌确认才能继续,人一多,确认这一步也会吃掉更多时间。

  • 能推出的判断:单卡算得再快,只要下一步依赖别人的结果,这次通信就进入了训练的关键路径。它拖多久,整步就得等多久。
  • 不能顺手推出的:通信时间≠所有卡完全停摆。很多系统会让计算和通信重叠着跑,真正拖慢训练的,是没被计算掩盖、最终暴露在关键路径上的那部分通信。所以“通信占40%”不等于“40%时间GPU在纯发呆”。
一次训练迭代的集合通信
一次训练迭代的集合通信

二、四种并行,四本不同的通信账

大模型训练常把四种并行混在一起用。跟着数据走,更容易看清它们分别带来了什么通信成本。

并行方式为什么要拆卡间主要交换什么常见通信容易卡在哪
数据并行同一个模型跑不同批数据梯度、参数分片AllReduce、ReduceScatter、AllGather每轮训练后的全局同步
张量并行单层矩阵/参数放不进一张卡激活值、局部矩阵结果AllReduce、AllGather、ReduceScatter每层都可能通信,次数多、时延敏感
流水线并行不同层分布在不同设备相邻阶段的激活值和梯度点对点传输流水线气泡、阶段负载不均
专家并行(MoE)专家分散在不同卡上被路由到各专家的TokenAll-to-All流量不规则、热门专家拥塞、长尾等待

数据并行:交换的是“训练共识”。每张卡处理不同样本,但最后必须把梯度归并,否则下一轮各卡上的模型副本会朝不同方向更新,越训越散。要点在于扩大数据并行的规模,不代表每张卡要通信的数据量会按卡数同比下降;尤其当单卡批次已经很小时,继续加卡,计算时间缩短了,通信占比反而可能上升。微软的ZeRO++公开材料就把“小批次、多设备、跨设备带宽不足”列为通信容易变成主要瓶颈的典型场景。

张量并行:一层模型被切开,每层都要碰头。它把一次矩阵计算拆到多张卡上,解决了单卡容量和单卡算力不够的问题,但部分结果需要频繁归并。这里有个反常识的判断值得单独拎出来:

数据并行往往按训练步骤来同步,张量并行却可能在每一层里通信好几次。消息未必最大,但频率很高,对时延尤其敏感。

Megatron-LM的公开论文可以支撑“张量、流水线、数据并行组合,以及跨节点通信会限制扩展”这一机制描述。

流水线并行:一张卡慢一点,后面一串卡都在等。不同的层被放到不同设备上,激活值沿流水线往后传、梯度再反向传回。阶段切得不均、微批次不够,或某个阶段慢了,就会留下“流水线气泡”。这里不必深挖调度算法,只要读者看到一件事:通信墙里不只有“传输时间”,还有“数据没到导致的空闲时间”。

专家并行:MoE省下了计算,却增加了Token的搬运。MoE每次只激活一部分专家,降低了每个Token实际执行的计算量;但这些专家往往分散在不同设备上。只看一次前向过程,Token先被发往选中的专家,算完再送回原位置,通常对应两次All-to-All;完整训练还要处理反向传播中的通信。它同时考验带宽、低时延、负载均衡和拥塞控制:某个热门专家收到的Token过多,其他卡就算提前算完,也得等最慢的那一组。

四种并行,四本通信账
四种并行,四本通信账

三、模型越大,为什么更容易撞墙

模型越大,不代表通信占比必然越高。模型放不下、需要更多并行维度之后,通信问题才会快速显现。

原因一,容量先逼着模型跨卡。参数、梯度、优化器状态、激活值都在吃显存。模型规模或上下文长度一涨,单卡HBM装不下,就只能把模型状态拆到更多卡上。模型从“复制到多卡”变成“每张卡只拥有一部分”,参数和中间结果的跨卡访问就很难再避免。

原因二,单卡计算缩短了,通信却没按同样比例缩短。假设一项计算原本在一张卡上要80毫秒,拆到8张卡,理想情况下计算时间可能接近10毫秒;但一次集合通信的耗时,由消息大小、链路带宽、固定时延、参与卡数和拓扑共同决定,不会自动变成八分之一。可以用一个简化公式理解:

单步时间 ≈ 单卡计算时间 + 无法隐藏的通信时间 + 同步等待时间

加卡主要压缩第一项。要是后两项降不下来,扩展收益就会一点点被吃掉。

原因三,通信范围从板内一路走到柜外。卡数一多,数据路径会经过卡内、同一服务器、同一机柜、跨机柜,最后可能进入跨超节点或跨集群网络。Scale-up把一个紧耦合域做大,让更多卡在低时延、高带宽的互联体系里协作,NVLink和灵衢都属于这条路线;Scale-out把多个域连接成更大的集群,常见技术包括InfiniBand、RoCE和以太网。

超节点试图把更多设备纳入低时延、高带宽的Scale-up域,减少高频通信过早落到较慢的Scale-out网络。跨服务器、跨机柜访问和节点内访问还差多少,需要看分层带宽、时延和集合通信实测。

上一篇拆过灵衢从柜内、跨柜到集群组网的分层设备。它们对应不同距离和通信范围,电互联与光互联按链路条件配合使用。这里不再重复具体参数。

原因四,同步训练受最慢参与者约束。集合通信要等所有参与者都进入同一个操作。某张卡算慢了、某条链路拥塞、某个MoE专家过载,都可能把整体完成时间拖到最慢的一端。卡越多,撞上慢卡、抖动和临时故障的概率通常越高,这些长尾会继续侵蚀扩展效率。

卡卡越多,扩展收益为什么变小
卡卡越多,扩展收益为什么变小

四、通信墙,其实是四堵墙叠在一起

通信问题不能全归给带宽。更细地看,它由四部分叠在一起。

  • 带宽墙:一次要搬的数据太多。梯度、激活值或Token量太大,链路吞吐扛不住。提高链路速率、压缩数据、降低通信精度、减少重复搬运,主要都是在处理这一层。
  • 时延墙:数据不大,但通信次数太多。张量并行和小消息的集合通信可能在每一层触发;即使总数据量不大,每次启动、路由、同步的固定时延累积起来,也足够拖慢训练。
  • 拓扑墙:理论总带宽很高,流量却挤在少数链路上。卡和卡之间并不是任意两点都有同样的距离和带宽;并行策略若没贴合物理拓扑,大量数据会跨到较慢的链路上,一部分端口拥塞,另一部分却在空转。
  • 同步墙:整个系统要等最慢的一张卡。负载不均、链路拥塞、故障恢复和软件调度都会进入这本账。这里正好回扣之前那篇“掉卡”:卡越多,遇到慢卡、链路抖动和临时故障的概率越高,尾延迟也更难压住。

带宽数字最直观,也最容易比错。按NVIDIA官方口径,HGX H100中单GPU的NVLink带宽是900GB/s,HGX B200提高到1800GB/s;同一份参考架构列出的跨节点网络配置,则是每台服务器最多8张、每张最高400Gb/s的SuperNIC。前者是GPU域内互联,后者是网卡端口,两者的统计对象、聚合范围和单位都不同,不能拿900GB/s和400Gb/s直接相除。真正需要比较的是一次集合通信经过哪些层级、每层有多少并发链路、有效带宽和尾延迟分别是多少。

只公布端口速率、总互联带宽或光模块数量,不足以证明训练已经翻过通信墙。

五、40%和“MFU提升2.75倍”,到底该怎么读

40%和2.75倍来自同一组华为架构仿真,但它们回答的不是同一个问题,使用时也有不同边界。

可以写的:华为称,在其架构仿真中,由8卡服务器组成的10万卡集群,通信代价超过训练时间的40%;华为称,由4K规模超节点组成的10万卡集群,相比8卡服务器方案,MFU提升2.75倍;这组仿真说明,华为把“扩大紧耦合互联域”当成了降低通信开销的一条路径。

不能写的:不能写成昇腾960实机MFU提升2.75倍;不能写成NPO单项带来2.75倍;不能写成所有大模型训练都有40%时间浪费在网络上;不能从2.75倍直接倒推Token吞吐、训练成本或单位Token能耗;也不能把“通信代价”全理解成GPU完全空转,它可能同时包含传输、同步、协议处理,以及未被计算掩盖的等待。

假设某个具体系统恰好有40%的单步时间暴露在通信关键路径上,而且这部分与计算完全串行,那么即便理想化地把通信耗时全部消除,理论加速比是:

1 ÷ (1 − 40%) ≈ 1.67倍

这是最朴素的Amdahl式算账,只用来说明暴露通信时间对单步性能的影响,不能拿来验证或否定2.75倍。华为只说了“超过40%”,没有公布具体比例、模型、并行策略和仿真配置;MFU变化还可能同时受到拓扑、调度、负载均衡和计算通信重叠影响。

卡40%与2.75倍的证据边界
卡40%与2.75倍的证据边界

六、穿过通信墙,靠的不只是一根更快的光纤

通信墙由多种开销叠出来,解法也不只换一条更快的链路。常见办法可以按它们处理的开销来分:

解决方向具体办法主要解决
少传一些梯度压缩、低精度通信、参数分片、减少冗余通信量(带宽墙)
少传几次调整并行策略、算子融合、增大通信粒度固定时延(时延墙)
尽量走近路拓扑感知调度、把高频通信放进同一高速域跨层级通信(拓扑墙)
边算边传计算与通信重叠、异步预取隐藏部分通信时间
别让大家等一张卡专家负载均衡、拥塞控制、慢节点隔离尾延迟(同步墙)
把高速域做大NVLink、灵衢UnifiedBus、NPO光互联域内带宽、时延与功耗

这张表的最后一行对应上一篇讨论的物理传输层。NPO能把高速互联域推得更远,却不会自动减少模型产生的数据量,也替代不了集合通信算法、并行策略和负载均衡。华为目前把Hi-ONE表述为业界首个具备量产能力的NPO产品,这是厂商口径,不等于昇腾960超节点已经完成大规模交付。英伟达也在Quantum-X和Spectrum-X平台推进共封装光学交换机,光互联正在成为多家厂商扩大AI集群互联规模的一条路线。

结尾:算力的上限,越来越写在“卡和卡之间”

内存墙影响一张卡能不能及时拿到数据,通信墙影响成千上万张卡能不能协同工作。

下次再看某个超节点,可以拿这份通信效率成绩单去对:同一模型、同一精度下的训练Token/s;128卡、1024卡、4096卡的扩展效率曲线;一次迭代里,计算、通信、等待各占多少;AllReduce、AllGather、ReduceScatter、All-to-All的实测带宽与尾延迟;本地、柜内、跨柜、跨超节点的通信差距;不同并行策略下的MFU;MoE专家负载不均时的性能变化;长时间训练里的慢卡比例、掉卡频率和恢复时间。每项数字还要标明来自仿真、厂商实验室、客户实测还是第三方测试。

卡加到几千张时,有效算力还能留下多少,比峰值算力更能说明系统表现。模型继续变大之后,问题不只在于能不能塞进更多芯片,还在于芯片算完自己的那一份后,能不能及时拿到下一步计算所需的结果。


资料来源

资料边界说明: 本文为概念解释。文中“通信占比超40%”“MFU提升2.75倍”来自华为披露、现场媒体转述的架构仿真结果,不是独立第三方实测,也不是昇腾960实机成绩;“1.67倍”仅为说明性心算,不用于验证或否定任何厂商数字。涉及的带宽、占比和加速数字均不构成实测性能排名。