为了解决MoE模型训练困难,泛化性能差的问题,相较于Mixtral-MoE, Skywork-MoE设计了两种训练优化算法:
区别于Megatron-LM社区已有的EP(Expert Parallel)和ETP(Expert Tensor Parallel)设计,昆仑万维提出了一种称之为Expert Data Parallel的并行设计方案,这种并行方案可以在Expert数量较小时仍能高效的切分模型,对Expert引入的 all2all通信也可以最大程度的优化和掩盖。相较于EP对GPU数量的限制和ETP在千卡集群上的低效, EDP可以较好的解决大规模分布式训练MoE的并行痛点,同时EDP的设计简单、鲁棒、易扩展,可以较快的实现和验证。
由于first stage的Embedding计算和last stage的Loss计算,以及Pipeline Buffer的存在,流水并行下均匀切分Layer时的各stage计算负载和显存负载均有较明显的不均衡情况。昆仑万维提出了非均匀的流水并行切分和重计算Layer分配方式,使得总体的计算/显存负载更均衡,约有10%左右的端到端训练吞吐提升。
昆仑万维基于目前各大主流模型评测榜单评测了Skywork-MoE,在相同的激活参数量20B(推理计算量)下,Skywork-MoE能力在行业前列,接近70B的Dense模型,使得模型的推理成本有近3倍的下降。同时Skywork-MoE的总参数大小比DeepSeekV2的总参数大小要小1/3,用更小的参数规模做到了相近的能力。
有别于传统的固定系数(固定超参)的aux loss,昆仑万维在MoE训练的不同阶段让模型自适应的选择合适的aux loss超参系数,从而让Drop Token Rate保持在合适的区间内,既能做到expert分发的平衡,又能让expert学习具备差异化,从而提升模型整体的性能和泛化水平。在MoE训练的前期,由于参数学习不到位,导致Drop Token Rate太高(token分布差异太大),此时需要较大的aux loss帮助token load balance;在MoE训练的后期,昆仑万维希望Expert之间仍保证一定的区分度,避免 Gating倾向为随机分发Token,因此需要较低的aux loss降低纠偏。
如何对MoE模型高效的进行大规模分布式训练是一个有难度的挑战,目前社区还没有一个最佳实践。Skywork-MoE提出了两个重要的并行优化设计,从而在千卡集群上实现了MFU 38%的训练吞吐,其中MFU以22B的激活参数计算理论计算量。
pg电子麻将6月3日,昆仑万维宣布开源2千亿稀疏大模型Skywork-MoE,性能强劲,同时推理成本更低。Skywork-MoE基于之前昆仑万维开源的Skywork-13B模型中间checkpoint扩展而来,是首个完整将MoE Upcycling技术应用并落地的开源千亿MoE大模型,也是首个支持用单台4090服务器推理的开源千亿MoE大模型。
一个可以遵循的经验规则是:如果训练MoE模型的FLOPs是训练Dense模型的2倍以上,那么选择from Scratch训练MoE会更好,否则的话,选择Upcycling训练MoE 可以明显减少训练成本。
本次开源的Skywork-MoE模型隶属于天工3.0的研发模型系列,是其中的中档大小模型(Skywork-MoE-Medium),模型的总参数量为146B,激活参数量22B,共有16个Expert,每个Expert大小为13B,每次激活其中的2个Expert。
昆仑万维在Gating Layer的token分发逻辑处新增了一个normalization操作,使得Gating Layer的参数学习更加趋向于被选中的top-2 experts,增加MoE模型对于top-2的置信度:
昆仑万维希望本次开源的Skywork-MoE模型、技术报告和相关的实验结果可以给开源社区贡献更多的MoE训练经验和Know-how,包括模型结构、超参选择、训练技巧、训练推理加速等各方面,探索用更低的训练推理成本训更大更强的模型,在通往AGI的道路上贡献一点力量。
此外,Skywork-MoE还通过一系列基于Scaling Laws的实验,探究哪些约束会影响Upcycling和From Scratch训练MoE模型的好坏。
Skywork-MoE是目前能在8x4090服务器上推理的最大的开源MoE模型。8x4090服务器一共有192GB的GPU显存,在FP8量化下(weight占用146GB),使用昆仑万维首创的非均匀Tensor Parallel并行推理方式,Skywork-MoE可以在合适的batch size 内达到2200 tokens/s的吞吐。