生成数据智能

使用 Amazon SageMaker 模型并行和数据并行库进行分布式训练和高效扩展 |亚马逊网络服务

日期:

大型语言模型(LLM)的分布式深度学习领域已经取得了巨大进展,特别是在 2022 年 5.32 月发布 ChatGPT 之后。LLM 的规模不断增长,参数达到数十亿甚至数万亿,而且往往不会由于内存限制,适合单个加速器设备(例如 GPU)甚至单个节点(例如 ml.p3xlarge)。培训法学硕士的客户通常必须将工作负载分配到数百甚至数千个 GPU 上。实现如此规模的训练仍然是分布式训练的一个挑战,而在如此大的系统中高效训练是另一个同样重要的问题。在过去的几年里,分布式训练社区引入了XNUMXD并行(数据并行、管道并行和张量并行)和其他技术(例如序列并行和专家并行)来应对此类挑战。

2023年XNUMX月,亚马逊宣布发布 SageMaker模型并行库2.0 (SMP),在大型模型训练中实现了最先进的效率,以及 SageMaker 分布式数据并行库 (SMDDP)。此版本是 1.x 的重大更新:SMP 现在与开源 PyTorch 集成 完全分片数据并行 (FSDP) API,允许您在训练大型模型时使用熟悉的界面,并且与 变压器引擎 (TE),首次与 FSDP 一起解锁张量并行技术。要了解有关该版本的更多信息,请参阅 Amazon SageMaker 模型并行库现在可将 PyTorch FSDP 工作负载加速高达 20%.

在这篇文章中,我们探讨了性能优势 亚马逊SageMaker (包括 SMP 和 SMDDP),以及如何使用该库在 SageMaker 上高效训练大型模型。我们通过在最多 4 个实例的 ml.p24d.128xlarge 集群上进行基准测试,以及 Llama 16 模型的 FSDP 混合精度与 bfloat2 来演示 SageMaker 的性能。我们首先演示 SageMaker 的近线性扩展效率,然后分析每个功能对最佳吞吐量的贡献,最后通过张量并行性对高达 32,768 的各种序列长度进行高效训练。

使用 SageMaker 进行近线性扩展

为了减少 LLM 模型的总体训练时间,考虑到节点间通信开销,在扩展到大型集群(数千个 GPU)时保持高吞吐量至关重要。在这篇文章中,我们展示了调用 SMP 和 SMDDP 的 p4d 实例的鲁棒性和近线性扩展(通过改变固定总问题大小的 GPU 数量)效率。

在本节中,我们将演示 SMP 的近线性缩放性能。在这里,我们使用固定序列长度 2、用于集体通信的 SMDDP 后端、启用 TE、全局批量大小为 7 万、具有 13 至 70 个 p4,096d 节点来训练各种大小(4B、16B 和 128B 参数)的 Llama 4 模型。下表总结了我们的最佳配置和训练性能(模型每秒 TFLOPs)。

�ͺųߴ� 节点数 TFLOPs* sdp* TP* 卸载* 缩放效率
7B 16 136.76 32 1 N 100.0%
32 132.65 64 1 N 97.0%
64 125.31 64 1 N 91.6%
128 115.01 64 1 N 84.1%
13B 16 141.43 32 1 Y 100.0%
32 139.46 256 1 N 98.6%
64 132.17 128 1 N 93.5%
128 120.75 128 1 N 85.4%
70B 32 154.33 256 1 Y 100.0%
64 149.60 256 1 N 96.9%
128 136.52 64 2 N 88.5%

*在给定的模型大小、序列长度和节点数量下,我们在探索各种 sdp、tp 和激活卸载组合后显示了全局最优吞吐量和配置。

上表总结了受分片数据并行 (sdp) 程度(通常使用 FSDP 混合分片而不是完全分片,下一节将详细介绍)、张量并行 (tp) 程度和激活卸载值变化影响的最佳吞吐量数字,演示 SMP 与 SMDDP 的近线性缩放。例如,给定 Llama 2 模型大小 7B 和序列长度 4,096,总体而言,它在 97.0、91.6 和 84.1 个节点上分别实现了 16%、32% 和 64%(相对于 128 个节点)的缩放效率。不同模型尺寸的缩放效率是稳定的,并且随着模型尺寸变大而略有增加。

SMP 和 SMDDP 对于其他序列长度(例如 2,048 和 8,192)也表现出类似的缩放效率。

SageMaker 模型并行库 2.0 性能:Llama 2 70B

在过去的几年里,模型规模持续增长,法学硕士社区不断更新最先进的性能。在本节中,我们将使用固定模型大小 2B、序列长度 70 和全局批量大小 4,096 万来说明 Llama 4 模型在 SageMaker 中的性能。为了与上表的全局最佳配置和吞吐量(使用 SMDDP 后端,通常是 FSDP 混合分片和 TE)进行比较,下表扩展到其他最佳吞吐量(可能使用张量并行),并在分布式后端(NCCL 和 SMDDP)上有额外的规范、FSDP分片策略(全分片和混合分片)、是否启用TE(默认)。

�ͺųߴ� 节点数 TFLOPS TFLOPs #3 配置 相对于基线的 TFLOP 改进
. . NCCL 完整分片:#0 SMDDP 完全分片:#1 SMDDP 混合分片:#2 与 TE 的 SMDDP 混合分片:#3 sdp* TP* 卸载* #0 → #1 #1 → #2 #2 → #3 #0 → #3
70B 32 150.82 149.90 150.05 154.33 256 1 Y -0.6% 0.1% 2.9% 2.3%
64 144.38 144.38 145.42 149.60 256 1 N 0.0% 0.7% 2.9% 3.6%
128 68.53 103.06 130.66 136.52 64 2 N 50.4% 26.8% 4.5% 99.2%

*在给定的模型大小、序列长度和节点数量下,我们在探索各种 sdp、tp 和激活卸载组合后显示了全局最优吞吐量和配置。

最新版本的 SMP 和 SMDDP 支持多种功能,包括本机 PyTorch FSDP、扩展且更灵活的混合分片、变压器引擎集成、张量并行性以及优化的所有聚集集体操作。为了更好地了解 SageMaker 如何为 LLM 实现高效的分布式训练,我们探索了 SMDDP 和以下 SMP 的增量贡献 核心功能:

  • SMDDP 通过 FSDP 完全分片增强了 NCCL
  • 用混合分片替代FSDP全分片,降低通信成本,提高吞吐量
  • 即使禁用张量并行性,TE 也能进一步提高吞吐量
  • 在较低的资源设置下,激活卸载可能能够实现由于高内存压力而无法进行或非常缓慢的训练

FSDP 全分片:SMDDP 相对 NCCL 的增强

如上表所示,当模型使用 FSDP 完全分片时,尽管 NCCL (TFLOPs #0) 和 SMDDP (TFLOPs #1) 吞吐量在 32 或 64 个节点上相当,但从 NCCL 到 SMDDP 却有 50.4% 的巨大提升128 个节点。

在较小的模型尺寸下,我们观察到 SMDDP 相对于 NCCL 具有一致且显着的改进,从较小的集群尺寸开始,因为 SMDDP 能够有效缓解通信瓶颈。

FSDP混合分片降低通信成本

在SMP 1.0中,我们推出了 分片数据并行性,一种由亚马逊内部支持的分布式训练技术 麦克风 技术。在SMP 2.0中,我们引入了SMP混合分片,这是一种可扩展且更灵活的混合分片技术,允许模型在GPU子集之间进行分片,而不是在所有训练GPU之间进行分片,这是FSDP完全分片的情况。它对于不需要在整个集群上进行分片以满足每个 GPU 内存限制的中型模型非常有用。这会导致集群拥有多个模型副本,并且每个 GPU 在运行时与更少的对等节点进行通信。

SMP的混合分片可以在更广泛的范围内实现高效的模型分片,从没有内存不足问题的最小分片程度到整个集群大小(相当于完全分片)。

为简单起见,下图说明了 tp = 1 时吞吐量对 sdp 的依赖关系。虽然它不一定与上表中 NCCL 或 SMDDP 全分片的最佳 tp 值相同,但数字非常接近。它清楚地验证了在 128 个节点的大型集群规模下从完全分片切换到混合分片的价值,这适用于 NCCL 和 SMDDP。对于较小的模型大小,混合分片的显着改进始于较小的集群大小,并且差异随着集群大小的增加而不断增加。

TE 的改进

TE 旨在加速 NVIDIA GPU 上的 LLM 培训。尽管由于 p8d 实例不支持 FP4 而没有使用 FP4,但我们仍然看到 pXNUMXd 上的 TE 带来了显着的加速。

除了使用 SMDDP 后端训练的 MiCS 之外,TE 还在所有集群大小(唯一的例外是 128 个节点的完全分片)上引入了一致的吞吐量提升,即使在禁用张量并行性(张量并行度为 1)时也是如此。

对于较小的模型大小或不同的序列长度,TE 提升是稳定且不平凡的,范围约为 3-7.6%。

低资源设置下的激活卸载

在低资源设置(给定少量节点)下,启用激活检查点时,FSDP 可能会遇到高内存压力(甚至在最坏的情况下会出现内存不足)。对于内存瓶颈的此类场景,打开激活卸载可能是提高性能的一个选项。

例如,正如我们之前所看到的,尽管模型大小为 2B、序列长度为 13 的 Llama 4,096 能够在至少 32 个具有激活检查点且没有激活卸载的节点上进行最佳训练,但当限制为 16 个时,它可以通过激活卸载实现最佳吞吐量节点。

支持长序列训练:SMP 张量并行

较长的序列长度是长对话和上下文所需要的,并且在法学硕士社区中得到了更多的关注。因此,我们在下表中报告了各种长序列吞吐量。该表显示了 SageMaker 上 Llama 2 训练的最佳吞吐量,序列长度从 2,048 到 32,768 不等。在序列长度为 32,768 时,本地 FSDP 训练在 32 个节点、全局批量大小为 4 万的情况下是不可行的。

. . . TFLOPS
�ͺųߴ� 序列长度 节点数 本机 FSDP 和 NCCL SMP 和 SMDDP SMP改进
7B 2048 32 129.25 138.17 6.9%
4096 32 124.38 132.65 6.6%
8192 32 115.25 123.11 6.8%
16384 32 100.73 109.11 8.3%
32768 32 不适用 82.87 .
13B 2048 32 137.75 144.28 4.7%
4096 32 133.30 139.46 4.6%
8192 32 125.04 130.08 4.0%
16384 32 111.58 117.01 4.9%
32768 32 不适用 92.38 .
*: 最大限度 . . . . 8.3%
*:中位数 . . . . 5.8%

当集群规模很大并且给定固定的全局批量大小时,某些模型训练可能无法使用本机 PyTorch FSDP 进行,因为缺乏内置管道或张量并行性支持。在上表中,给定全局批量大小为 4 万、32 个节点和序列长度 32,768,每个 GPU 的有效批量大小为 0.5(例如,tp = 2,批量大小为 1),否则如果不引入,这是不可行的张量并行性。

结论

在这篇文章中,我们展示了在 p4d 实例上使用 SMP 和 SMDDP 进行高效的 LLM 训练,这归因于多个关键功能的贡献,例如 SMDDP 相对于 NCCL 的增强、灵活的 FSDP 混合分片而不是完全分片、TE 集成以及支持张量并行性以支持长序列长度。经过各种模型、模型大小和序列长度的广泛设置测试后,它表现出强大的近线性缩放效率,在 SageMaker 上最多可支持 128 个 p4d 实例。总之,SageMaker 仍然是 LLM 研究人员和从业者的强大工具。

要了解更多信息,请参阅 SageMaker 模型并行库 v2,或联系 SMP 团队 [电子邮件保护].

致谢

我们要感谢 Robert Van Dusen、Ben Snyder、Gautam Kumar 和 Luis Quintela 的建设性反馈和讨论。


作者简介

刘欣乐Sheila 是 Amazon SageMaker 中的 SDE。业余时间,她喜欢阅读和户外运动。

苏希特·科古勒 是 AWS 人工智能团队的一名软件开发工程师,致力于深度学习框架。业余时间,他喜欢徒步旅行、旅行和烹饪。

朱维德 是 Amazon Web Services 分布式深度学习领域的软件工程师。他经常在旧金山湾区享受远足和棋盘游戏。

德里亚·卡夫达尔(Derya Cavdar) 在 AWS 担任软件工程师。她的兴趣包括深度学习和分布式训练优化。

腾旭 是 AWS AI 分布式培训组的软件开发工程师。他喜欢读书。

现货图片

最新情报

现货图片

在线答疑

你好呀! 我怎么帮你?