基于 Megatron-Core 的稀疏大模型训练工具:阿里云MoE大模型最佳实践

💡 原文中文,约9000字,阅读约需22分钟。
📝

内容提要

随着大模型技术的发展,MoE大模型证明了稀疏MoE技术能降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时的核心问题,在下游任务上取得了很好的模型效果。Megatron-Core MoE支持并行性、路由和负载均衡等特性,提供了一个强大的MoE训练框架。阿里云PAI的MoE训练工具由PAI平台、PAI-Megatron-Patch和NVIDIA Megatron-Core组成。通过测试,验证了训练工具的可靠性和稳定性。

🔎

延伸解读

MoE负载均衡的挑战与应对

MoE模型通过Router将token分配给不同专家,但容易出现负载不均衡:少数专家处理大量token,多数专家仅处理少量token,导致训练效率下降。文章提到两种缓解方法:引入辅助损失函数鼓励专家接收均衡的样本,或采用drop tokens策略,即设定专家容量,超出容量的token被丢弃并通过残差连接传递。Mixtral-8x7B则采用Megablocks的dropless MoE算法,通过块稀疏算子处理变长输入,避免丢弃token。

Megatron-Core MoE的关键特性

Megatron-Core MoE支持专家并行,不同Rank处理不同专家,并可结合数据并行、张量并行、流水并行等3D并行策略。它提供多种路由类型(如Top-K router)和负载均衡算法(如Sinkhorn、Z-Loss),并利用GroupedGEMM将多个小GEMM合并为单个kernel,提升SM利用率。此外,还优化了Sinkhorn、token重排等操作的CUDA Kernel。未来将支持上下文并行、FP8训练等特性。

从HuggingFace到Megatron的权重转换要点

将HuggingFace模型权重转换到Megatron格式时,需注意张量并行(TP)下的权重切分与合并顺序。例如,MLP层的gate_proj和up_proj在TP=2时,需按特定顺序组合成Megatron的dense_h_to_4h操作,顺序错误会导致前向推理无法对齐。对于MoE模型,还需通过expert_model_parallel_size和world_size参数精细控制专家分布,如Mixtral的8个专家在16卡上可配置为tp4ep4、tp8ep2或tp2ep8。转换后需通过零样本loss验证正确性。

训练效果与性能实测

文章展示了Mixtral-8x7B在继续预训练和微调任务上的收敛情况,以及代码生成任务的评测结果。微调后的模型在Human-eval通过率上优于LLaMA2等开源模型。吞吐性能对比中,在A800 80G显存、两机16卡环境下,Megatron-Core MoE的吞吐速度比Megablocks快约10%,但文章指出当前数据仅供参考,因Megatron-Core仍在进行性能优化。这些实测验证了训练工具的可靠性和稳定性。

❓

Q&A

MoE大模型相比稠密模型有什么优势?

MoE大模型通过稀疏技术降低计算量和提升推理速度,模型效果甚至超过同规模稠密模型。具体来说,MoE可以在不增加FLOPs的情况下,通过增加MLP模块的数量来增加模型参数量级,从而提升模型在下游任务上的效果。

MoE中的负载不均衡问题如何解决?

可以通过引入辅助损失函数来鼓励所有专家接收到大致相等数量的训练样本,或者通过drop tokens的方式,即定义expert capacity,超出容量的tokens被丢弃,不足的用padding填充。Mixtral-8x7b模型采用Megablocks的dropless moe算法,通过块稀疏算子实现dropless功能。

阿里云PAI的MoE训练工具由哪些部分组成?

阿里云PAI的MoE训练工具由三部分组成:PAI平台(包括DSW和DLC产品)、PAI-Megatron-Patch以及NVIDIA Megatron-Core。

Megatron-Core MoE支持哪些并行策略?

Megatron-Core MoE支持专家并行(Expert Parallel),以及3D并行(数据并行、张量并行、流水线并行、序列并行)。对于更大的MoE模型,还支持将专家并行与其他并行策略结合使用。未来还将支持上下文并行。

如何将HuggingFace模型权重转换为Megatron格式?

转换时需要注意TP>1时的权重矩阵切分与合并操作,以符合Megatron的建模方式。对于MoE模型,需要新增expert_model_parallel_size和world_size参数来精细化处理experts的分布。转换后可通过zeroshot loss验证转换的正确性。

Mixtral-8x7B模型在代码生成任务上的微调效果如何?

基于Evol-Instruct-Code-80K数据对Mixtral-8x7B-Instruct-v0.1模型进行微调后,在Human-eval上的通过率相比微调前有显著提升,并且优于LLaMA2等开源通用模型。

Megatron-Core MoE的吞吐性能如何?

在相同配置下,Megatron-Core的吞吐速度比Megablocks快10%左右。但当前数据仅供参考,因为Megatron-Core还在进行性能优化。

🏷️

标签

➡️

继续阅读