分享

Microsoft的新框架实现大规模AI

 新用户0175WbuX 2022-01-24

  ZeRO-2,新的ONNX Runtime和与OpenAI合作构建的超级计算机是Microsoft为实现大规模AI工作负载所做的最新努力。

  Microsoft的新框架实现大规模AI

  > Credits: microsoft/en-us/research/blog/zero-deepspeed-new-system-optimizations-ena

  具有大量数据集的训练模型正在成为现代深度学习应用程序中的规范。 一些最新的创新,例如变形金刚和其他预训练模型,构成了庞大的训练基础设施。 这种类型的预训练模型通常被视为人工智能(AI)的最新突破,并引发了全球一些顶尖技术公司争夺该领域的竞赛。 在最近的Build大会上,Microsoft公开了几项关键工作,以实现大规模构建和使用预训练模型。

  预训练模型和Transformer一直是深度学习最新突破的核心。 Google凭借其著名的BERT模型打开了这一运动的大门,随后其他大型结构(例如OpenAI的GPT-2或微软的Turin-NLG)很快被效仿。 建立此类模型不仅需要大量的计算资源,因为它通常需要针对此类大型培训练习进行优化的体系结构。 鉴于其新颖性,这些架构仍未包含在主流深度学习框架中。 微软最近的举措代表了一些最全面的工作,旨在简化深度学习社区的大规模模型的创建和访问。 让我们回顾一些努力:

  ZeRO-2和DeepSpeed

  今年早些时候,微软开放了DeepSpeed的第一个版本,这是一个用于大规模培训优化的减肥框架。 DeepSpeed是Microsoft破纪录的Turing-NLG模型背后的基础架构。 该版本还包括名为零冗余优化器(ZeRO)的优化模块。 从概念上讲,ZeRO试图在模型和数据并行性之间找到一个中间点,以使模型的可扩展性最大化。 ZeRO的最大好处在于,无需代码重构即可在内存中运行大型深度学习模型。 这是通过优化模型使用的内存来完成的。 从这个意义上讲,ZeRO可以被视为深度学习模型的内存优化方法。

  ZeRO-2是ZeRO的第二个版本,与之前的版本相比,它包含了多项创新。 这些创新包括与深度学习模型中的内存消耗相关的各种领域,例如激活内存,碎片内存和模型状态内存。

  ·模型状态内存:与传统的数据并行方法相比,ZeRO-2优化了用于保持模型状态的内存,最多可节省8倍。 任何深度学习模型都可以在三个基本阶段中对其状态进行建模:划分优化器状态,梯度和参数。 与传统方法相比,ZeRO的第一个实现能够在Pos阶段优化内存消耗,最多可节省4倍。 ZeRO-2扩展了该方法,可以优化梯度阶段的内存消耗,从而节省了额外的2倍。

  ·激活内存:即使在优化了模型状态内存之后,也可能由于正向传递中存储的激活而导致瓶颈,以便启用向后传递。 ZeRO-2引入了一种激活分区技术,该技术通过卸载到主机CPU来消除这些内存瓶颈。

  ·内存碎片化:深度学习模型中的某些内存效率低下是由于模型不同张量的生命周期导致的碎片导致的。 ZeRO-2在张量的不同生命周期内管理内存,从而消除了这种效率低下的情况。

  Microsoft的新框架实现大规模AI

  > Source: microsoft/en-us/research/blog/zero-2-deepspeed-shattering-barriers-of-deep

  ZeRO-2最杰出的创新之一是,它可以在每个GPU上实现内存优化。 这与大多数通过在不同GPU之间分配训练进行优化的替代方法形成对比。 当ZeRO-2小组能够使用单个GPU在44分钟内训练Google BERT版本时,这种优化的价值就显而易见。 下表显示了与以前的尝试相比,ZeRO-2方法的改进。

  Microsoft的新框架实现大规模AI

  > Source: microsoft/en-us/research/blog/zero-2-deepspeed-shattering-barriers-of-deep

  ZeRO-2在以下方面提供了一些优势:支持数十亿参数的模型,实现更高的吞吐量和速度,每个GPU和整个GPU集群的可伸缩性以及在单个GPU中训练超大型模型的能力。

  Microsoft的新框架实现大规模AI

  > Source: microsoft/en-us/research/blog/zero-2-deepspeed-shattering-barriers-of-deep

  ZeRO-2 + ONNX运行时

  ONNX Runtime是一个开源框架,支持不同机器学习框架之间的互操作性。 关于机器学习互操作性的有趣问题之一是,是否适用于超大型模型。 将ONNX用于决策树相当简单,但是它可以用于具有数十亿个参数的模型吗?

  微软决定将DeepSpeed和ZeRO-2作为ONNX Runtime的一部分,以优化ONNX模型的训练和内存管理。 在世界上一些最大的预训练模型上测试了结果,例如Visual Studio中的GPT-2,Office 365中的Turing-NLG以及Bing中具有5亿个参数的大型变压器。 下表说明了与原始实现相比的好处。

  Microsoft的新框架实现大规模AI

  > Source: cloudblogs.microsoft/opensource/2022/05/19/announcing-support-for-accelerated-

  一台AI第一台超级计算机

  基础架构是实现大规模预训练模型的关键。 微软和OpenAI的科学家合作开发了专门用于大型深度学习工作负载的超级计算机。 超级计算机包括单个系统的深不可测的基础结构,每个系统具有超过285,000个CPU内核,10,000个GPU和每秒400吉比特的网络连接能力。

  由Microsoft-OpenAI超级计算机托管的基础结构将其置于世界排名前五位的超级计算机中。 然而,更值得注意的是,该超级计算机针对AI工作负载进行了优化。 从这个意义上讲,超级计算机旨在执行大型预训练模型,例如Turing-NLG或BERT。 微软将把新的超级计算机作为Azure云的一部分提供给开发人员。

  争夺大规模AI主导地位的竞赛有望成为AI市场未来几年最引人入胜的趋势之一。 目前,微软的举措,如DeepSpeed-ZeRO-2,ONNX Runtime和新型OpenAI超级计算机,代表了该竞赛中令人印象深刻的第一步。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多