三分之一个世纪前,加拿大学者们提出了经典的MoE模型神经网络结构,在人类探索AI的「石器时代」中,为后世留下了变革的火种。
近十年前,美国硅谷的互联网巨擎在理论和工程等方面,突破了MoE模型的原始架构,让这个原本被置于学术高阁的理念,化身成为了随后AI竞争的导火索。
如今,后发优势再一次来到了大洋此岸,以华为为代表的中国科技企业,纷纷提出对MoE架构的优化重组方案。尤其是华为的MoGE架构,不仅克服了MoE负载不均衡及效率瓶颈的弊病,还能够降本增效,便于训练和部署。
AI之战远未终结,但正如在其他领域中「多快好省」的中国产业底色一样,大模型这棵生于西方长于彼岸的科技树,也同样会被东方智慧经手后,进化为更加普适和亲切的工具。
近期,虎嗅将打造《华为技术披露集》系列内容,通过一连串的技术报告,首次全面披露相关的技术细节。
希望本系列内容能为业界起到参考价值,也希望更多人能与华为一起,共同打造长期持续的开放协作生态环境,让昇腾生态在中国茁壮成长。
在通往更强大的AI路上,MoE已成为科技巨头另一个首选路径。
只要Scaling Law没有失效,大模型的参数规模依旧不断扩大,由此AI智能水平才能不断攀升。
凭借独特的架构设计,MoE正以前所未有的参数规模,成为突破大规模模型训练的算力瓶颈的关键路径之一。
然而,如何将MoE潜力真正转化为高效的训练实践,一直是业界探索的难题。
此前,华为曾通过Adaptive Pipe&EDPB框架,实现了集群级高效分布式计算,让通信和计算能完美并行,提高训练集群效率。
本次,华为通过昇腾与鲲鹏算力的深度协同,进一步实现了训练算子计算效率和内存利用率大幅提升。
他们从单节点视角出发,深入到NPU和CPU内部,对算子计算、下发、训练内存使用等进行细粒度拆解。
令人惊喜的是,结果显示,MOE训练在之前的基础上,吞吐又提升了20%,内存占用降低了70%。
这不仅是一次技术突破,更是引领MoE训练的风向标。
MoE训练单节点效率提升挑战
现实中,MoE模型的训练并非易事。
因其框架的复杂性,除了集群分布式训练效率优化外,在单节点训练效率提升方面有两大核心挑战:
1. 算子计算效率低,存在等待
首先,硬件核心计算单元,如Cube利用率不足,存在冗余操作和可优化的数据流水搬运,进而拖累了整体计算吞吐。
同时,专家路由机制导致算子下发频繁,且容易中断。
因为,复杂的专家路由机制增加了算子下发的调度压力,如同高速闸道入口既窄还有频繁红灯,形成了Host-Bound瓶颈。
2. 「昂贵的」NPU内存永远不够用
为了扩展模型参数量以提高模型智能水平,MoE模型参数量动辄千亿甚至万亿。
加之训练过程中前向传播累积的海量激活值,让内存资源显得捉襟见肘。
如果太过挤压内存,还容易引发NPU内存溢出(OOM),造成训练中断。
因此,NPU内存优化是大规模MoE训练永恒的主题。
针对这些难题,华为给出了业界最完整的解决方案。
昇腾算子计算加速,训练吞吐飙升15%
毋庸置疑,只有更高算力的利用率,才能将AI系统的效用最大化。
除了并行策略、通算掩盖等框架层优化方法,硬件亲和算子优化,也是进一步获得潜在性能优化的新路径。
在MoE模型中,最「吃时间」的几个核心算子有:融合算子FlashAttention、基础算子MatMul,以及负责数据重排与反重排的Vector(矢量)算子。
这些算子,占据了总计算耗时75%以上。
从数学等价和昇腾硬件亲和角度出发,华为提出了「瘦身术」、「均衡术」、「搬运术」三大优化策略。
得益于这些方案,MoE模型计算冗余消除,数据流效率提升,同时计算单元间数据移动减少,充分发挥出昇腾的硬件能力。
在Pangu Ultra MoE 718B模型训练实践中,三大算子加速实现整体训练吞吐量提升15%。
FlashAttention「瘦身术」(RECT-FA)
针对FA算子,华为团队优化了计算顺序,进而消除了冗余计算,进一步让FA内部处理流水排布更紧密。
它能支持原生非对齐计算,直接处理Key/Query维度不匹配场景,省去填充与切片开销。
利用昇腾片上缓存原位累加技术,可基于数学等价计算消除旋转位置编码中复杂的拼接操作(如图1所示)。