现在,跑准万亿参数的大模型,可以彻底跟NVIDIA Say Goodbye了。
完成此举的,正是华为!
要知道,在此之前,训练万亿参数大模型这事,是有诸多“拦路虎”在身上的。
例如负载均衡难、通信开销大、训练效率低等等。
华为盘古团队(包含诺亚方舟实验室、华为云等)基于昇腾国产算力平台,一举攻破了上述所有的挑战——
6000+块昇腾NPU集群上完成了7180亿(718B)参数MoE模型的长期稳定训练,并通过多项突破性系统优化技术实现了显著性能提升。
这些创新大幅提高了训练效率,支撑了行业顶尖水平模型的开发!
不得不说,“国产”二字在大模型硬件上的含金量还在持续上升。
纯国产NPU,丝滑跑通准万亿参数大模型
在拆解华为一系列“黑科技”之前,我们先需要更深入地了解一下训练超大参数MoE模型背后的困难。
总体来看,在这条路上有“四大金刚”在严阵把守。
首先就是架构参数优化难题,需在众多参数组合中探索最优配置,设计适配昇腾NPU的大规模MoE架构,实现计算资源的高效利用。
其次是动态负载均衡挑战,路由机制需要智能分配任务,避免专家资源分配不均;这种不平衡不仅会因“木桶效应”降低训练效率,更可能导致模型收敛异常,影响最终性能表现。
还有分布式通信的瓶颈,在近万亿参数规模下,token在不同计算节点间的专家流转会产生巨大通信开销,“通信墙”问题成为制约训练效率的关键因素。
最后就是硬件适配复杂度,实现MoE算法与昇腾NPU等专用AI加速器的深度协同,需要打通算法设计、软件框架和硬件特性的全栈优化,充分释放硬件计算潜力。
针对这些问题,华为的这份技术报告分别从模型架构、MoE训练分析、系统优化等方面,详细介绍了其如何见招拆招。
首先就是MoE结构选型与昇腾亲和结构优化。
团队先进行先导实验,确定了细粒度专家加上共享专家这样的范式。随后在模型选型的时候,考虑了多个方面的因素。
在计算与访存亲和方面,通过增大模型里的hidden size(隐藏层大小),同时降低激活参数量,这样不仅能提升模型的计算量,还可以降低访存量,提高了模型训练时对算力的利用率,以及推理时的吞吐量。
在多维并行亲和方面,采用数量为2的指数级的专家数量,达成了TP8 x EP4超融合并行的方式。
运用TP-extend-EP技术,避免因 TP 切分细粒度专家造成MatMul(矩阵乘法)等算子的效率下降,同时使用分组 AllToAll 通信技术来减少 EP 通信所产生的开销。
在 DaVinci 架构亲和方面,将张量按照256进行对齐处理,使其能完美匹配16×16矩阵计算单元,充分释放昇腾NPU的算力。
在流水线编排亲和方面,采用PP(流水线并行)、VPP(可变流水线并行)、空层等技术,实现PP和VPP的负载均衡,减少计算资源闲置(空泡)的情况。
在模型结构仿真方面,团队根据硬件的适配特点,对模型参数的选择范围进行了大幅调整,把原本庞大的参数搜索空间缩小到了10000个左右。
为了能更准确地知道不同模型的性能极限,团队开发了一套专门的建模仿真工具。这个工具很厉害,它把模型结构、运行时采用的策略,还有硬件系统,都拆分成了一个个小的参数。
通过对算子、Block、Layer这些层级的计算、数据传输和读取操作进行模拟,就能算出模型从头到尾的整体性能。经过和实际测试数据对比,发现这个仿真工具的准确率能达到85%以上。
团队用这个建模仿真工具,把所有符合硬件适配要求的参数组合都测试了一遍,仔细评估它们在训练和推理时的数据处理速度,最后找到了性能相对更好的模型结构,具体情况可以看下面的图。
接下来,我们再看下MoE训练的分析。
在训练MoE模型的时候,和普通的稠密模型相比,有个特别让人头疼的问题,就是负载不均衡。
打个比方,就像一群人干活,有的人忙得不可开交,有的人却闲着没事干,这样效率肯定高不了。
为了解决这个问题,科研界从算法角度想了很多办法,提出了各种各样的辅助损失函数,这些函数关注的均衡范围不太一样。
比如,早期有专门针对序列级别的均衡辅助损失,还有通义千问提出的DP - Group(也就是全局批次大小)均衡辅助损失。
这些辅助损失函数,就像是给MoE模型里的路由模块(负责分配任务的部分)定了规矩,通过不同程度的约束,让它把任务分配得更均匀一些。具体的约束情况,都整理在下面的表格里了。
△Balance BSZ表示用来计算专家选择频率的tokens个数
团队还研发出了一种全新的EP组负载均衡损失算法。
和传统的micro-batch辅助损失相比,它不会过度强求局部任务分配的绝对均衡,避免了“矫枉过正”;跟DP组的均衡损失比起来,它在数据传输时耗费的资源更少,能节省不少通信成本。
而且在对专家任务量的约束程度上,它处于两者之间,是个更折中的方案。
为了验证这个新算法的效果,团队在一个总参数量达200亿(20B)的先导MoE模型上,专门做了消融实验,具体情况如下:
为了应对专家负载不均的“木桶效应”,MoE可以采用drop-and-pad的方式来提升训练的吞吐。
团队首先在一个20B的先导MoE上对比了不同专家总数下drop-and-pad和dropless的性能:
结果显示,dropless总是优于drop-and-pad方案。
并且这种性能的差距会随着专家数变多、模型参数变大而进一步放大。
因此在训练盘古Ultra MoE时采用了dropless的方案,并重点优化了这一策略下的训练效率。
具体而言,团队从四个关键方向对盘古Ultra MoE 模型进行了全面优化,包括改进并行计算策略、优化数据传输效率、提升显存使用效果,以及让任务分配更均匀。
在由6000+个昇腾NPU组成的大型计算集群上,模型的算力利用率(MFU,即Model FLOPs Utilization)达到了30.0% ,和优化前相比,提升幅度高达58.7%。
团队用一套能模拟全流程的模型仿真系统,反复试验寻找最佳的并行计算方案。
最终确定的方案是:采用16路流水线并行、8路张量并行、4路专家并行、2路虚拟流水线并行,以及48路数据并行。
在专家并行这块,团队用了TP拓展EP的策略。
简单来说,就是让TP组来划分专家数量,这样做能避免因为TP组拆分专家参数,导致GMM算子在处理小规模专家数据时效率暴跌的问题。
整个系统里,专家组总数是32组(TP 和 EP 组合计算得出),一共划分成256个专家。
虚拟流水线并行策略效果特别好,以前训练时,计算资源闲置(空泡率)的情况占18.98%,用了新策略后,直接降到10.49% 。
同时,通过合理分配MTP层和损失函数层的任务,把任务分配不均衡导致的负载溢出,控制在5%以内,大大减少了任务分配不均带来的负面影响。
为了解决并行扩展中的通信瓶颈,团队还设计了两个主要技术。
首先就是Hierarchical EP Communication分级EP通信。
相比机内通信,跨机通信带宽较低。团队采用分级EP通信,减少跨机通信量。
具体来说,采用跨机Allgather 通信将所有tokens同步到机内,然后在机内对token排序并采用机内AlltoAll通信对tokens重新分配。
机内通信和机间通信都可以通过前反向通信掩盖技术掩盖,从下图的通信量对比可以看到分级EP通信对跨机通信量减少的效果。
其次是Adaptive Pipe Overlap Mechanism自适应前反向掩盖策略。
即使采用分级EP通信策略,EP通信的耗时占比仍然很高。前反向的大部分EP通信与计算均具有依赖关系,自然掩盖策略会暴露大部分EP通信。
如果采用通算融合算子等自掩盖策略,又不可避免地会降低计算效率。
因此,团队采用基于VPP调度的自适应前反向掩盖策略,实现如下图流程的前向计算掩盖反向通信,反向计算掩盖前向通信。
核心设计包括:利用机间与机内通信链路带宽独立特点实现机内通信与机间通信的互相掩盖,利用算子的有效排布缓解host bound,将专家反向dw计算与dx计算分离做更细粒度的掩盖。
对显存进行优化时,团队采用了新的计算方式。
不再使用传统的全重计算,而是对细粒度模块,像MLA、Permute和激活函数进行重新计算,这样能避免额外的计算消耗。
同时,运用Tensor Swapping技术,把重新计算不太划算的激活值,先转移到CPU那边,等需要反向计算时再提前取回来,让NPU内存得到更高效的利用。
团队还在研究新的显存节省方法,准备把多种优化策略组合起来,根据不同的设备配置,找到最适合的组合,既能提高显存利用率,又不会降低模型性能。
让每台设备上专家处理的任务量(token 数量)尽量均匀,能大幅提升训练效率。
为此,团队设计了一套动态的设备级负载均衡机制。
首先,规划器就像一个“小管家”,通过观察一段时间内专家的工作负载情况,预测未来的任务量,再用贪心算法规划出如何重新分配专家,让设备间的任务更均衡。
然后,执行器定期行动,把不同Transformer层的专家参数和优化器状态在设备间转移。通过这种动态调整,模型的MFU提高了10%。
除了上面这些,团队还开发了一些专门适配昇腾设备的技术,包括主机端优化、计算卸载与数据共享,以及融合算子。
算子下发优化:
为了解决host端性能瓶颈问题,团队减少了那些需要频繁同步操作的算子,避免不必要的等待。同时,使用细粒度CPU绑核技术,让CPU和NPU配合得更好,任务下发更顺畅。
计算卸载与数据共享:
当遇到NPU处理起来效率低的数据计算,或者在TP区域内数据传输慢的情况,作者把这些不适合NPU的计算从主计算流程中分离出来,交给CPU在数据加载时处理。再结合数据共享技术,让同一节点内的计算和数据传输速度都大大提高。
融合算子:
除了盘古稠密模型里已有的FlashAttention 和 RMSNorm融合算子,团队在MoE模型里又加入了 GMMAdd、Permute和Umpermute融合算子。
GMMAdd融合算子把GroupedMatMul的反向计算和梯度累加放在一起处理,利用并行和流水线技术减少调度时间。Permute和Unpermute融合算子整合了多种操作,能更快地读写内存。
实验结果
在训练数据集构建过程中,团队实施严格的数据质量控制,并着重强调语料库的多样性、复杂性和全面性。
针对长链思维样本引入特殊标记符号对推理轨迹与最终答案进行结构化分隔。
后训练阶段采用指令微调策略,数据涵盖领域广泛,包含通用问答、文本生成、语义分类、代码编程、数理逻辑推理及工具使用等。
特别将推理与非推理样本比例设定为3:1,进一步提升推理性能。
实验表明,盘古Ultra MoE对话版本在多领域均展现出卓越竞争力,在大多数benchmark上与DeepSeek-R1表现相当。
比如通用理解任务(如CLUEWSC 94.8分、MMLU 91.5分)中展现卓越理解力,在数学推理与代码生成等高难度测试(如AIME2024 81.3分、MBPP+ 81.2分)中表现优异,具备突出的代码与数学解题能力。
团队还对盘古Ultra MoE进行了专家专业度分析。
在不同任务中,同一网络层的token会被优先路由至不同专家,专家专业化程度存在显著任务差异性。
这证实了盘古Ultra MoE已形成显著的专家差异化,这种特性不仅增强了模型的表达能力,更为其卓越性能提供了关键支撑。
盘古Ultra MoE的MoE层输出由共享专家和路由专家共同贡献的加权和构成。
因此,保持二者输出的平衡至关重要。
下图中展示了路由专家在各网络层均保持着与共享专家相当的贡献强度,这种均衡的协同作用有效提升了模型的整体表征能力。
团队还分析了专家的共激活现象,激活分数越高,说明两个专家之间的相关性越强。
在下图中,除少数例外情况外,这三层中的专家之间并未出现明显的共激活现象,这反映了盘古Ultra MoE的专家冗余度较低。
以上便是华为国产NPU跑准万亿参数大模型背后的奥义了。
华为盘古Ultra MoE技术的突破,不仅标志着国产算力平台在AI大模型训练领域迈入世界领先行列,更彰显了中国科技自主创新的强大实力。
它证明了中国企业在全球AI竞赛中已具备从跟跑到并跑,甚至领跑的实力。
未来,随着技术的持续迭代与应用场景的拓展,盘古Ultra MoE将为千行百业的智能化转型注入强劲动力,助力中国在新一轮科技革命中占据制高点,为人类科技进步贡献更多“中国智慧”。
标签: 华为