ZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning

Samyam Rajbhandari, Olatunji Ruwase, Jeff Rasley, Shaden Smith, Yuxiong He {samyamr, olruwase, jerasley, shsmit, yuxhe}@microsoft.com

A1 主要贡献

本文旨在解决大规模深度学习模型训练中日益严峻的“GPU内存墙”问题。过去三年,最大的密集模型参数量增长了1000倍以上,而GPU内存仅增长了5倍,这使得训练超大规模模型(如万亿参数模型)需要海量的GPU资源,且对数据科学家提出了重构模型的巨大负担。

本文的核心问题与研究目标如下:
1. 支持模型规模的未来增长:如何支持模型从百亿级别(如GPT-3)增长到百-万亿级别的下一轮1000倍增长?
2. 提升大模型的可及性:如何让没有大规模GPU集群的数据科学家也能访问和微调现有的大模型?
3. 简化大模型训练:能否通过消除模型重构和多种并行方式的需求,使大模型训练更加简便?

为应对上述挑战,本文提出了ZeRO-Infinity,一个新颖的异构系统技术,其主要贡献和创新点如下:
* 内存和性能特征分析:对大规模模型训练的内存需求(第3节)和带宽需求(第4节)进行了详细的特征分析,为系统设计提供了理论依据。
* ZeRO-Infinity系统技术:这是一个包含五项创新技术的深度学习训练系统,旨在满足大规模、易用且高效的训练需求:
1. Infinity Offload Engine:通过同时利用GPU、CPU和NVMe内存以及GPU和CPU计算,充分发挥现代集群的异构架构优势。
2. Memory-Centric Tiling:一种新颖的GPU内存优化技术,用于处理巨大的算子,避免了模型并行的需要。
3. Bandwidth-Centric Partitioning:一种数据分区策略,旨在利用所有并行设备的聚合内存带宽。
4. Overlap-Centric Design:用于重叠计算和通信,以隐藏数据传输开销。
5. Ease-Inspired Implementation:通过自动化通信和数据分区,避免了模型代码重构。
* 全面的评估验证
* 前所未有的规模:在32个NVIDIA DGX-2节点(512个V100 GPU)上运行了32万亿参数的模型。
* 卓越的训练效率:在相同硬件上实现了超过25 petaflops的吞吐量。
* 超线性可扩展性:展示了万亿参数模型的超线性扩展能力。
* 可及性和易用性:在单个DGX-2节点上微调了高达万亿参数的模型,且无需模型并行或代码重构。
* 对未来硬件系统设计的启示:讨论了ZeRO-Infinity对未来硬件设计的潜在影响。
* 开源实现:在深度学习优化库DeepSpeed中开源了ZeRO-Infinity的实现。

图1:ZeRO-Infinity可以在32个NVIDIA V100 DGX-2节点(512个GPU)上训练一个32万亿参数的模型,比现有的SOTA技术3D并行大50倍。
图1:ZeRO-Infinity可以在32个NVIDIA V100 DGX-2节点(512个GPU)上训练一个32万亿参数的模型,比现有的SOTA技术3D并行大50倍。

A3 背景知识/关键Observation/设计原则

2 背景知识与相关工作

3 内存需求

4 带宽需求

4.1 量化深度学习训练中的AIT

4.2 带宽需求

图3:假设加速器的单GPU峰值可实现吞吐量为70 TFlops时,带宽对效率的影响
图3:假设加速器的单GPU峰值可实现吞吐量为70 TFlops时,带宽对效率的影响

(a) 参数和梯度带宽
图片a
图片a

(b) 优化器状态带宽
图片b
图片b

(c) 激活检查点带宽

A2 方法细节

5 ZERO-INFINITY 设计概述

5.1 为前所未有的规模设计

5.1.1 用于模型状态的Infinity offload engine
5.1.2 用于激活的CPU卸载

图4:ZeRO-Infinity在四个数据并行(DP)rank上训练一个两层模型的快照。图中描绘了第一层反向传播的通信过程。分区后的参数从慢速内存移动到GPU,然后被收集起来形成完整的层。梯度计算完毕后,它们被聚合、重新分区,然后卸载到慢速内存。层用下标表示,DP rank用上标表示。例如,$P_0^{(2)}$ 是第0层参数中由DP rank(2)拥有的部分。
图4:ZeRO-Infinity在四个数据并行(DP)rank上训练一个两层模型的快照。图中描绘了第一层反向传播的通信过程。分区后的参数从慢速内存移动到GPU,然后被收集起来形成完整的层。梯度计算完毕后,它们被聚合、重新分区,然后卸载到慢速内存。层用下标表示,DP rank用上标表示。例如,$P_0^{(2)}$ 是第0层参数中由DP rank(2)拥有的部分。

5.1.3 用于工作内存的内存中心切片(Memory-centric tiling)

5.2 为卓越的训练效率设计

5.2.1 参数和梯度的效率
5.2.2 优化器状态的效率
5.2.3 激活的效率

5.3 为易用性设计

6 效率优化

6.1 带宽中心分区(Bandwidth-Centric Partitioning)

6.2 重叠中心设计(Overlap Centric Design)

6.3 Infinity Offload Engine

7 受易用性启发的实现

7.1 自动化数据移动

7.1.1 外部参数的自动注册

7.2 初始化期间的自动模型划分

A4 实验环境

表1:实验配置。单位B表示十亿,T表示万亿,K表示1024。
表1:实验配置。单位B表示十亿,T表示万亿,K表示1024。

A4 实验结果

模型规模与速度

图5:ZeRO-Infinity训练数万亿参数模型的效率和可扩展性。
图5:ZeRO-Infinity训练数万亿参数模型的效率和可扩展性。

超线性可扩展性

普及大规模模型训练

系统特性对模型规模的影响

图6:系统特性对模型规模和性能的影响。
图6:系统特性对模型规模和性能的影响。

表2:优化器、梯度和参数状态的设备放置选项和分区策略。
表2:优化器、梯度和参数状态的设备放置选项和分区策略。

系统特性对性能的影响

A5 结论

本文提出了ZeRO-Infinity,一种新颖的异构系统技术,它通过利用GPU、CPU和NVMe内存,实现了前所未有的模型规模,同时保证了训练的可及性、易用性和卓越效率。这项工作改变了我们对大规模模型训练中内存的看法,证明了不再需要将所有训练数据都放在昂贵且有限的HBM2等高速内存中。ZeRO-Infinity展示了通过并行利用多个设备上廉价、低速但容量巨大的CPU或NVMe内存,可以获得高效训练所需的聚合带宽,从而突破GPU内存墙。

展望未来,随着GPU和其他加速器的计算能力变得更强,高效训练所需的聚合带宽也将增加。如表3所示,即使加速器的计算能力比NVIDIA V100 GPU强10倍,在一个512个加速器的集群上,ZeRO-Infinity也仅需每个加速器与慢速内存之间有30 GB/s的带宽即可保持高效。这在当前技术下,例如通过NVLink连接加速器和慢速内存,是完全可以实现的。

显然,有了ZeRO-Infinity,加速器设备内存不再是模型规模或训练效率的瓶颈。然而,在合理时间内训练数十万亿或数百万亿参数的模型仍需要计算能力的巨大飞跃,并且在未来设备上高效运行也需要设备间带宽的相应提升。我们希望,随着设备内存不再是限制因素,ZeRO-Infinity将激励未来在超强计算能力加速器和超级计算集群方面进行更多以计算和设备间带宽为中心的创新,以支持模型规模的下一个1000倍增长及其带来的进步。

表3:在一个拥有512个加速器设备(其可实现计算能力分别为NVIDIA V100 GPU的10倍和100倍)的集群上,ZeRO-Infinity保持高效所需的带宽(bw)要求。
表3:在一个拥有512个加速器设备(其可实现计算能力分别为NVIDIA V100 GPU的10倍和100倍)的集群上,ZeRO-Infinity保持高效所需的带宽(bw)要求。

A6 附录