亚马逊 SageMaker 模型并行库中的新性能改进
基础模型是在海量数据上大规模训练的大型深度学习模型。可以进一步对其进行微调,以执行各种下游任务,并构成支持多个 AI 应用程序的核心支柱。最突出的类别是大语言模型 (LLM),包括自动回归模型,例如经过训练以完成自然文本的 GPT 变体。LLM 通常包含数十亿个参数,因此它们很少能安装在单个加速器上,并且需要模型并行化技术。另一个类别是扩散模型,尤其是
为了帮助我们的客户进一步最大限度地降低培训成本并缩短上市时间,我们很高兴在 SageMaker 并行模型中推出两项新的性能改进——S M DDP Collectives 和 FlashAttenction。 SMDDP Collections 是 亚马逊云科技 基础设施上性能最高的大型模型训练集体库,由
“我们在Stability AI的使命是奠定基础,通过人工智能激活人类的潜力。为了实现这一使命,我们需要在数百个加速计算实例上高效地训练开源基础模型。我们依靠 SageMaker 及其分布式训练库来优化性能并实施最先进的策略,在整个训练集群中分片模型和数据。这些优化降低了我们的培训成本,帮助我们更快地满足客户需求,并加快新模型的开发。”
— 稳定人工智能创始人兼首席执行官 埃马德·莫斯塔克。
在这篇博客文章中,我们将首先介绍 SageMaker 模型并行库中的最新性能改进。然后,我们将重新审视如何使用分片数据并行训练基础模型。最后,我们将对 13B、50B 和 100B 参数自动回归模型的性能进行基准测试,并总结未来的工作。
SageMaker 模型并行库中的新性能改进
从
1。亚马逊云科技 优化的 AllGather 来自 SMDDP 集体
在分片数据并行中,由于 GPU 上仅存在模型状态的分片,因此在向前或向后传递计算期间,需要一个 allGather 集合来收集来自分片组中所有 GPU 的完整参数集。在之前版本的 SageMaker 并行模型中,我们使用了 NVIDIA 集体通信库 (NCCL) 作为这些集体。但是,NCCL 是一个通用集体通信库,不是为 亚马逊云科技 基础设施设计的,即使启用了 EFA,也导致性能不理想。
之前,我们开发了
2。闪光注意力
在现代变压器架构中,最大的内存消耗来源之一是自注意力层中的激活足迹。这是因为每个注意力头都会为每个输入计算 SxS 注意力矩阵,其中 S 是序列长度,并且该矩阵会经过多种操作,例如丢失、softmax 和矩阵乘法,每个中间输出都需要内存空间才能用于反向传播。
FlashAttent
使用 SageMaker 并行模型大规模训练基础模型
要使用由 SMDDP Collections 提供支持的 SMP 训练基础模型,无需在分片数据并行训练作业中进行额外更改。如果你不熟悉并行使用分片数据,请关注 这
GPT-2 模型的即用型训练脚本可以在 train_gpt_simple.py 中找到。
我们重点介绍分片数据并行训练作业的
s
使用 m
“自动” 作为其默认值。 p_options 中的超参数 ddp_dist
_backend 现在有一个新选项 “自动”
时,SMP 将使用经过 亚马逊云科技 优化的 AllGather 进行分片数据并行处理作业,否则将回退到 NCCL。您可以参考
如果你想在 SMP 中并行运行分片数据,特别是使用 NCCL 作为首选的通信后端,你可以在 smp_options 中将 “
ddp_dist_
backend” 设置为 “nccl”。
在最新的 smpv1.13 版本中,分片数据并行训练技术支持开箱即用的 BERT、RobertA、GPT-2、GPT-J、Gpt-neo 和 Gpt-Neox 等热门型号的 FlashAttenction。
这是通过在模型创建期间传递
tensor_parallelism=TRUE 来实现的,无需设置 tensor_parallel_degree
。 train_gpt_simple.py
基准测试性能
我们在三种不同的模型尺度上对 SageMaker 模型并行库中的分片数据并行度进行了基准测试,以了解 FlashAttenction 和 亚马逊云科技 优化的 AllGather 这两项新功能如何促进性能改进。置放组无需在 SageMaker 上重现这些基准测试。
13B 参数 GPT-Neox
在此设置中,我们专注于理解 FlashAttenction 带来的性能提升,而我们将 亚马逊云科技 优化的 AllGather 排除在外。使用 FlashAttenction 可以节省大量的 GPU 内存,这有助于我们增加批量大小或降低分片程度,从而提高性能。如下结果所示,我们观察到,在16-64个p4d节点上的各种配置下,使用FlashAttenction的13B参数GPT-Neox模型的SMP平均加速约为20.4%。标准注意力计算期间的内存使用量以二次方式随着序列长度的增加而增加,但是 FlashAttenction 的内存使用量与序列长度成线性关系。因此,随着序列长度的增加以及使用更大的序列长度成为可能,FlashAttenction 会更加有用。
Configuration | Performance | ||||
Model/Training | Cluster | SMP | Without FlashAttention (TFLOPs/GPU) |
With FlashAttention (TFLOPs/GPU) |
% Speedup |
13B GPT-NeoX Seq length: 2048 Global batch size: 1024 FP16 |
16 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:64 gradient_accumulation: 1 |
130 | 159 | 22.31 |
13B GPT-NeoX Seq length: 2048 Global batch size: 2048 FP16 |
32 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:64 gradient_accumulation: 1 |
131 | 157 | 19.85 |
13B GPT-NeoX Seq length: 2048 Global batch size: 4096 FP16 |
64 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:64 gradient_accumulation: 1 |
131 | 156 | 19.08 |
50B 参数 Bloom
现在,我们来看看来自 SMDDP Collectives 的 亚马逊云科技 优化版 AllGather 如何使用 SMP 加速大型模型训练。我们对 50B 参数的 Bloom 模型进行了基准测试,比较了使用和不使用 亚马逊云科技 优化的 AllGather 集合体的性能。我们观察到,在 32 个节点到 64 个节点的训练作业中,SMDDP 集合可将模型训练速度提高多达 40%。由于可以更好地利用 p4d.24xlarge 实例可用的 400 Gbps 网络带宽,SMDDP 集合有助于提高性能。再加上将通信相关处理卸载到 CPU 的设计选择,有助于实现良好的计算到网络的重叠,从而优化性能。计算与网络的重叠在大型模型中尤其重要,因为节点间通信的数据大小会随着模型大小的增加而呈线性扩展。
Configuration | Performance | ||||
Model/Training | Cluster | SMP | Without 亚马逊云科技-optimized AllGather (TFLOPs/GPU) |
With 亚马逊云科技-optimized AllGather (TFLOPs/GPU) |
% Speedup |
50B Bloom Seq length: 2048 Global batch size: 2048 BF16 |
32 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:128 gradient_accumulation: 1 |
102 | 143 | 40.20 |
50B Bloom Seq length: 2048 Global batch size: 4096 BF16 |
64 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:128 gradient_accumulation: 1 |
101 | 140 | 38.61 |
100B 参数 GPT-Neox
最后,我们在启用了两个最新功能的情况下对 SMP 进行了基准测试。它表明,在参数为100B的GPT-Neox型号上,这个新版本的SMP v1.13比之前的版本快了30%。
Configuration | Performance | ||||
Model/Training | Cluster | SMP | Without FlashAttention and without 亚马逊云科技-optimized AllGather (TFLOPs/GPU) |
With FlashAttention + 亚马逊云科技-optimized AllGather (TFLOPs/GPU) |
% Speedup |
100B GPT-NeoX Seq length: 2048 Global batch size: 2048 FP16 |
32 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:256 offload_activations<p></p>
|
121 | 158 | 30.58 |
100B GPT-NeoX Seq length: 2048 Global batch size: 4096 FP16 |
64 p4d.24xlarge nodes | Activation checkpointing sharded_data_parallel_degree:256 offload_activations<p></p>
|
122 | 158 | 29.51 |
对于未来的工作,我们将努力在 SMDDP 集体中支持 亚马逊云科技 优化的减少散射。Reduce-Scatter 集合对于对反向传递中计算的梯度求平均值和分片至关重要。我们预计这将在未来的版本中进一步加快 SMP 库的速度。
结论
在这篇文章中,我们讨论了 SageMaker 模型并行库中分片数据并行技术的两项最新性能改进。LLM 在提高机器学习模型的质量和可重用性方面表现出巨大的希望。亚马逊云科技 团队正在与客户紧密合作,不断降低培训成本和缩短上市时间。
作者简介