关键词搜索

全站搜索
×
密码登录在这里
×
注册会员
×

已有账号? 请点击

忘记密码

已有账号? 请点击

使用其他方式登录

DeepSpeed微软开源深度学习优化库,能以更少 GPU做到1000亿参数模型

发布2023-04-10 浏览726次

详情内容

微软(Microsoft)11 日发布更新版 DeepSpeed 库,此深度学习优化库引进新方法训练包含上兆参数的 AI 人工智慧模型,亦即模型内部可提供预测变量。微软宣称名为"3D 平行"(3D parallelism)的技术,可适应不同的工作负载需求,以便运行超大模型,同时平衡扩充效率。

github:https://github.com/microsoft/DeepSpeed

文档:www.deepspeed.ai/

DeepSpeed于2021年2月发布,它是一个Python库,它仅使用800个Nvidia V100图形卡就可以创建具有一万亿个参数的深度学习模型,是全球当前最大模型的五倍多。如果没有DeepSpeed,则相同的任务将需要4,000台Nvidia A100,这比V100快2.5倍,处理100天。

image.png

在GPT-3显示模型继续改善较大的神经网络和数据集之后,该工具特别有用。但是,这确实威胁到将最新的创新推向资源更少的小型团队无法企及的范围,但是DeepSpeed允许这些团队以最少的硬件与更大的服务竞争。转向云处理可以使大型模型AI培训更加容易获得。


具体来说,DeepSpeed 加入了 4 项系统性新技术来进一步拓展 AI at Scale 倡议。推动了微软的AI产品与平台的创新。这些技术提供了极为高效的计算、显存和通信的利用效率,并助力训练有着十亿至万亿量级参数的模型。支持超长输入序列,无论在单卡GPU、千卡GPU的高端集群上,还是在慢速以太网的低端集群上,均可以使用。

用 3D 并行化实现万亿参数模型训练: DeepSpeed 实现了三种并行方法的灵活组合:ZeRO 支持的数据并行,流水线并行和张量切片模型并行。3D 并行性适应了不同工作负载的需求,支持具有万亿参数的超大型模型,实现了近乎完美的显存扩展性和吞吐量扩展效率。提高的通信效率,使用户可以在网络带宽有限的常规群集上,以 2-7 倍的速度训练有数十亿参数的模型。

ZeRO-Offload 使 GPU 单卡,能够训练 10 倍大的模型: 为了同时利用 CPU 和 GPU 内存来训练大型模型,扩展了 ZeRO-2。用户在使用带有单张英伟达 V100 GPU 的机器时,可以在不耗尽显存的情况下,运行多达 130 亿个参数的模型,模型规模扩展至现有方法的10倍,保持有竞争力的吞吐量。此功能使数十亿参数的模型训练,更加大众化,,并为许多深度学习从业人员,打开了一扇探索更大更好的模型的窗户。

通过 DeepSpeed Sparse Attention,用6倍速度执行10倍长的序列: DeepSpeed提供了稀疏 attention kernel ——一种工具性技术,可支持长序列的模型输入,包括文本输入,图像输入和语音输入。与经典的稠密 Transformer 相比,支持的输入序列长一个数量级,在保持相当的精度下,获得最高 6 倍的执行速度提升。还比最新的稀疏实现快 1.5–3 倍。稀疏 kernel 灵活支持稀疏格式,使用户能够通过自定义稀疏结构进行创新。

比特 Adam 减少 5 倍通信量: Adam 是一个在大规模深度学习模型训练场景下的,有效的(也许是最广为应用的)优化器。与通信效率优化算法往往不兼容。在跨设备进行分布式扩展时,通信开销可能成为瓶颈。推出了一种 1 比特 Adam 新算法,高效实现。该算法最多可减少 5 倍通信量,实现了与Adam相似的收敛率。在通信受限的场景下,观察到分布式训练速度,提升了 3.5 倍,这使得该算法,可以扩展到不同类型的 GPU 群集和网络环境。


根据微软的介绍,DeepSpeed 库中有一个名为 ZeRO(零冗余优化器,Zero Redundancy Optimizer)的组件,这是一种新的并行优化器,它可以大大减少模型和数据并行所需的资源,同时可以大量增加可训练的参数数量。

研究人员利用这些突破创建了图灵自然语言生成模型(Turing-NLG),这是最大的公开语言模型,参数为 170 亿。

ZeRO 作为 DeepSpeed 的一部分,是一种用于大规模分布式深度学习的新内存优化技术,它可以在当前的 GPU 集群上训练具有 1000 亿个参数的深度学习模型,其吞吐量是当前最佳系统的 3 到 5 倍。它还为训练具有数万亿个参数的模型提供了一条清晰的思路。

ZeRO 具有三个主要的优化阶段,分别对应于优化器状态、梯度和参数分区。

image.png

ZeRO 克服了数据并行和模型并行的局限性,同时实现两者的优点,它通过跨数据并行进程将模型状态划分为上图所示的参数、梯度和优化器状态分区,而不是复制它们,从而消除了数据并行进程之间的内存冗余。

在训练期间使用动态通信规划(dynamic communication schedule),在分布式设备之间共享必要的状态,以保持数据并行的计算粒度和通信量。

目前实施了 ZeRO 的第一阶段,即优化器状态分区(简称 ZeRO-OS),具有支持 1000 亿参数模型的强大能力,此阶段与 DeepSpeed 一起发布。

DeepSpeed 与 PyTorch 兼容,DeepSpeed API 是在 PyTorch 上进行的轻量级封装,这意味着开发者可以使用 PyTorch 中的一切,而无需学习新平台。此外,DeepSpeed 管理着所有样板化的 SOTA 训练技术,例如分布式训练、混合精度、梯度累积和检查点,开发者可以专注于模型开发。

同时,开发者仅需对 PyTorch 模型进行几行代码的更改,就可以利用 DeepSpeed 独特的效率和效益优势来提高速度和规模。


DeepSpeed 在以下四个方面都表现出色:

规模:目前最先进的大型模型,例如 OpenAI GPT-2、NVIDIA Megatron-LM 和 Google T5,分别具有 15 亿、83 亿和 110 亿个参数,而 DeepSpeed 的 ZeRO 第一阶段提供系统支持,以运行多达 1000 亿个参数的模型,这是比当前最先进的模型大 10 倍。

未来计划增加对 ZeRO 第二和第三阶段的支持,从而提供高达 2000 亿个乃至数万亿个参数的模型的能力。

速度:在各种硬件上,目前观察到的吞吐量比当前最先进技术高出 5 倍。例如,为了在 GPT 系列工作负载上训练大型模型,DeepSpeed 将基于 ZeRO 的数据并行与 NVIDIA Megatron-LM 模型并行相结合,在具有低带宽互连的 NVIDIA GPU 集群上(没有 NVIDIA NVLink 或 Infiniband),与仅对具有 15 亿参数的标准 GPT-2 模型使用 Megatron-LM 相比,DeepSpeed 将吞吐量提高了 3.75 倍。

在具有高带宽互连的 NVIDIA DGX-2 集群上,对于 20 至 800 亿个参数的模型,速度要快 3 到 5 倍。这些吞吐量的提高来自 DeepSpeed 更高的内存效率以及使用较低程度的模型并行和较大的批处理量来拟合这些模型的能力。

成本:提高吞吐量意味着大大降低训练成本,例如,要训练具有 200 亿个参数的模型,DeepSpeed 需要的资源是原来的 3/4。

易用性:只需更改几行代码即可使 PyTorch 模型使用 DeepSpeed 和 ZeRO。与当前的模型并行库相比,DeepSpeed 不需要重新设计代码或重构模型,它也没有对模型尺寸、批处理大小或任何其它训练参数加以限制。

对于参数多达 60 亿的模型,可以方便地使用由 ZeRO 提供的数据并行能力,而无需模型并行。而相比之下,对于参数超过 13 亿的模型,标准数据并行将耗尽内存。ZeRO 第二和第三阶段将进一步增加仅通过数据并行即可训练的模型大小。此外,DeepSpeed 支持 ZeRO 支持的数据并行与模型并行的灵活组合。


点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
确定支付下载