动机
最常见的深度学习框架应该是 TensorFlow、Pytorch、Keras,但是这些框架在面向大规模模型的时 候都不是很方便。 比如 Pytorch 的分布式并行计算框架(Distributed Data Parallel,简称 DDP),它也仅仅是能将数 据并行,放到各个 GPU 的模型上进行训练。 也就是说,DDP 的应用场景在你的模型大小大于显卡显存大小时,它就很难继续使用了,除非你自 己再将模型参数拆散分散到各个 GPU 上。 今天要给大家介绍的 DeepSpeed,它就能实现这个拆散功能,它通过将模型参数拆散分布到各个 GPU 上,以实现大型模型的计算,弥补了 DDP 的缺点,非常方便,这也就意味着我们能用更少的 GPU 训练更大的模型,而且不受限于显存。
- 大模型(LLM)在训练时往往需要大量内存来存储中间激活、权重等参数,百亿模型甚至无法在单 个 GPU 上进行训练,使得模型训练在某些情况下非常低效和不可能。这就需要进行多卡,或者多 节点分布式训练。 在大规模深度学习模型训练中有个主要范式:
- 数据并行
- 模型并行 目前训练超大规模语言模型技术路线:GPU + PyTorch + Megatron-LM + DeepSpeed DeepSpeed 是由 Microsoft 提供的分布式训练工具,旨在支持更大规模的模型和提供更多的优化策 略和工具。与其他框架相比,DeepSpeed 支持更大规模的模型和提供更多的优化策略和工具。其 中,主要优势在于支持更大规模的模型、提供了更多的优化策略和工具(例如 ZeRO 和 Offload 1.用 3D 并行化实现万亿参数模型训练。DeepSpeed 实现了三种并行方法的灵活组合:ZeRO 支 持的数据井行,流水线井行和张量切片模型井行。3D 并行性适应了不同工作负载的需求,以支 持具有万亿参数的超大型模型,同时实现了近乎完美的显存扩展性和吞吐量扩展效率。此外, 其提高的通信效率使用户可以在网络带竞有限的常规群集上以 2-7 倍的速度训练有数十亿参数 的模型。 2.ZeRO-Offload 使 GPU 单卡能够训练 10 倍大的模型:为了同时利用 CPU 和 GPU 内存来训练 大型模型,我们扩展了 ZeRO-2。我们的用户在使用带有单张英伟达 V100 GPU 的机器时,可 以在不耗尽显存的情况下运行多达 130 亿个参数的模型,模型规模扩展至现有方法的 10 倍,并 保持有竞争力的吞吐量。此功能使数十亿参数的模型训练更加大众化,并为许多深度学习从业 人员打开了一扇探索更大更好的模型的窗户。 3. 通过 DeepSpeed Sparse Attention 用 6 倍速度执行 10 倍长的序列:DeepSpeed 提供了稀疏 attention kerel———种工具性技术,可支持长序列的模型输入,包括文本输入,图像输入和 语音输入。与经典的稠密 Transformer 相比,它支持的输入序列长一个数量级,并在保持相当 的精度下获得最高 6 倍的执行速度提升。它还比最新的稀疏实现快 1.5-3 倍。此外,我们的稀 疏 kernel 灵活支持稀疏格式,使用户能够通过自定义稀疏结构进行创新。 4.1 比特 Adam 减少 5 倍通信量:Adam 是一个在大规模深度学习模型训练场景下的有效的(也 许是最广为应用的)优化器。然而,它与通信效率优化算法往往不兼容。因此,在跨设备进行 分布式扩展时,通信开销可能成为瓶颈。我们推出了一种 1 比特 Adam 新算法,以及其高效实 现。该算法最多可减少 5 倍通信量,同时实现了与 Adam 相似的收敛率。在通信受限的场景