“专家混合 (MoE) 架构是一种深度学习模型架构,其中计算成本与参数数量成正比,允许更简单的扩展”。MoE 是目前唯一一种已被证明可以将深度学习模型扩展到数万亿个参数的方法,为能够学习更多信息的模型铺平了道路,并为计算机视觉、语音识别、自然语言处理和机器翻译系统等提供动力可以以新的方式帮助人们和组织的应用程序。
Tutel是微软研究人员开发的高性能MoE库,用于帮助开发大规模 DNN(深度神经网络)模型;Tutel 针对全新的 Azure NDm A100 v4 系列进行了高度优化,Tutel 多样化且灵活的 MoE 算法支持使跨 AI 领域的开发人员能够更轻松、高效地执行 MoE。与最先进的 MoE 实现(如 Meta 的 Facebook AI Research Sequence-to- PyTorch 中用于单个 MoE 层的序列工具包 (fairseq)。
Tutel 为具有 64 个 NDm A100 v4 节点的 Meta 的 1.1 万亿参数 MoE 语言模型提供了 40% 以上的加速,以实现端到端性能,这要归功于对全对全通信的优化。在 Azure NDm A100 v4 集群上工作时,Tutel 提供卓越的兼容性和全面的功能,以确保出色的性能。Tutel 是免费的开源软件,已集成到 fairseq 中。
Tutel 是一种高级 MoE 解决方案,通过专注于 MoE 特定计算和全对全通信的优化以及其他多样化和灵活的 MoE 算法支持,对现有的高级 MoE 解决方案(如 fairseq 和 FastMoE)进行了补充。Tutel 具有简单明了的用户界面,可以轻松与其他 MoE 系统结合使用。开发人员还可以使用 Tutel 接口从头开始将独立的 MoE 层包含到自己的 DNN 模型中,立即利用高度优化的最先进的 MoE 功能。
由于缺乏有效的实现,基于 MoE 的 DNN 模型依赖于由 PyTorch 和 TensorFlow 等深度学习框架提供的众多现成 DNN 算子的简单组合来组装 MoE 计算。由于冗余计算,这种方法会导致相当大的性能开销。Tutel 创建并实现了许多 GPU 内核,为 MoE 特定的计算提供运算符。例如,Tutel 将调度“门控输出”的时间复杂度从 O(N3) 降低到 O(N2),显着提高了数据调度效率。Tutel 还使用了一个快速的 cumsum-minus-one 运算符,它比 fairseq 加快了 24 倍的过程。
Tutel 优化了 Azure NDm A100 v4 集群上的多对多集体通信,用于大规模 MoE 训练,包括 CPU-GPU 绑定和自适应路由 (AR) 调整。在多非一致内存访问 (NUMA) 系统上,有效的 CPU-GPU 绑定对于全面性能至关重要,尤其是在 NDm A100 v4 节点上。不幸的是,目前的机器学习框架缺乏高效的全对全通信库,导致大规模分布式训练性能回归。Tutel 自动优化绑定并提供直观的界面供用户微调。Tutel 还在 NDm A100 v4 集群上使用多路径技术,特别是 AR。每个 GPU 通信的总数据流量大小在 MoE 的全对全通信中没有变化,
在 Azure NDm A100 v4 上,Meta 一直在使用 Tutel 来训练其大型语言模型,该模型使用类似于 GPT-3 的基于注意力的神经架构。该模型由 32 层注意力组成,每层都有 32 x 128 维的头部。每两层存在一个 MoE 层,每个 GPU 有一个专家。由于随着 GPU 数量的增加,全对全通信成为瓶颈,因此 Tutel 使用 8 个 A100 GPU 提高了 131%,使用 512 个 A100 GPU 提高了 40%。在下一个版本中,预计会有更多优化。
结论
MoE 是一项具有很大潜力的技术。它允许使用来自各种领域的方法进行整体训练,例如系统路由和大型节点的网络平衡,甚至可以利用基于 GPU 的加速。Tutel 的表现优于 fairseq 框架,并已被纳入DeepSpeed框架。Tutel 和相关连接将有助于 Azure 服务,特别是对于希望轻松扩展大型模型的公司。Tutel 将继续发展并提供更多令人兴奋的成果,因为教育部仍处于早期阶段,需要付出更多努力来充分发挥其潜力。
Github:
https : //github.com/microsoft/tutel
参考:
https://www.microsoft.com/en-us/research/blog/tutel-an-efficient-mixture-of-experts-implementation-for-large-dnn-model-training/