10倍!微软开源史上最大的NLG模型,一个可以训练1000亿个参数的模型大模型很难训练。微软最近开源了一个深度学习优化库DeepSpeed,通过提高规模、速度、可用性和降低成本,可以在当前这一代GPU集群上训练出超过1000亿参数的深度学习模型,极大地促进了大型模型的训练。同时,与最新技术相比,其系统性能可提升5倍以上。据微软介绍,在DeepSpeed库中有一个名为ZeRO(零冗余优化器)的组件,这是一种新的并行优化器,可以大大减少模型和数据并行所需的资源,同时,可训练参数的数量可以会大大增加。研究人员利用这些突破创建了图灵自然语言生成模型(Turing-NLG),这是最大的公开语言模型,有170亿个参数。ZeRO是DeepSpeed的一部分,是一种针对大规模分布式深度学习的全新内存优化技术,可以在目前的GPU集群上训练出千亿参数的深度学习模型,其吞吐量是目前最好的系统的3到5倍.它还为训练具有数万亿参数的模型提供了清晰的思路。ZeRO有三个主要的优化阶段,对应于优化器状态、梯度和参数分区。ZeRO克服了数据并行和模型并行的局限性,同时实现了两者的优点,通过跨数据并行过程将模型状态划分为上图所示的参数、梯度和优化器状态分区,而不是重复它们,从而消除了内存冗余数据并行进程之间。在训练期间使用动态通信计划,必要的状态在分布式设备之间共享,以保持数据并行计算粒度和流量。目前ZeRO第一阶段已经实现,OptimizerStatePartitioning(简称ZeRO-OS),具有强大的千亿参数模型支持能力,与DeepSpeed一起发布。DeepSpeed与PyTorch兼容,DeepSpeedAPI是PyTorch之上的轻量级包装器,这意味着开发人员无需学习新平台即可使用PyTorch中的所有内容。此外,DeepSpeed管理分布式训练、混合精度、梯度累积和检查点等所有样板SOTA训练技术,让开发者可以专注于模型开发。同时,开发人员只需对PyTorch模型进行几行代码更改,即可利用DeepSpeed独特的效率和有效性优势来提高速度和规模。DeepSpeed在以下四个维度表现出色:Scale:OpenAIGPT-2、NVIDIAMegatron-LM和GoogleT5等当前最先进的大型模型分别拥有15亿、83亿和110亿个参数,而DeepSpeed的ZeRO第一阶段提供系统支持以运行具有多达1000亿个参数的模型,这比当前最先进的模型大10倍。未来的计划是增加对ZeRO第2阶段和第3阶段的支持,为具有多达2000亿和数万亿参数的模型提供能力。速度:在各种硬件上观察到的吞吐量比当前最先进的吞吐量高出5倍。例如,为了在GPT系列工作负载上训练大型模型,DeepSpeed在具有低带宽互连(无NVIDIANVLink或Infiniband)的NVIDIAGPU集群上结合了基于ZeRO的数据并行性和NVIDIAMegatron-LM模型并行性,与使用相比仅威震天-LM在15亿参数的标准GPT-2模型上,DeepSpeed将吞吐量提高了3.75倍。在具有高带宽互连的NVIDIADGX-2集群上,对于具有20亿到800亿个参数的模型,速度提高了3到5倍。这些吞吐量的增加来自于DeepSpeed更高的内存效率和适应这些模型的能力,这些模型具有较低的模型并行度和较大的批量大小。成本:吞吐量的增加意味着训练成本的大幅降低,例如训练一个200亿参数的模型,DeepSpeed需要原来资源的3/4。易用性:只需要几行代码就可以让PyTorch模型使用DeepSpeed和ZeRO。与当前的模型并行库相比,DeepSpeed不需要重新设计代码或重构模型,也不会对模型大小、批量大小或任何其他训练参数施加限制。对于高达60亿参数的模型,在没有模型并行的情况下,可以方便的使用ZeRO提供的数据并行。相比之下,对于参数超过13亿的模型,标准的数据并行会耗尽内存。ZeRO第2和第3阶段将进一步增加可仅通过数据并行性进行训练的模型大小。此外,DeepSpeed支持ZeRO支持的数据并行和模型并行的灵活组合。最后附上GitHub地址:https://github.com/microsoft/DeepSpeed