在 Slurm 开启的情况下运行分布式训练工作负载 SageMaker HyperPod - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Slurm 开启的情况下运行分布式训练工作负载 SageMaker HyperPod

SageMaker HyperPod 专门用于训练大型语言模型 (LLM) 和基础模型 (FM) 的工作负载。此类工作负载通常需要采用各种并行处理技术,并针对机器学习基础架构和资源进行优化操作。通过使用 SageMaker HyperPod,您可以利用免费的 SageMaker 分布式训练框架:分布式数据并行度 (SMDDP) 库,可提供经过优化的集体通信操作,以及实现各种模型并行技术 (SMP) 的SageMaker 模型并行度 (SMP) 库。SageMaker Amazon

在 a 上使用 SMDDP SageMaker HyperPod

S MDDP 库是一个集体通信库,可提高分布式数据并行训练的计算性能。SMDDP 库可与开源分布式训练框架配合使用:PyTorch 分布式数据并行 (DDP)PyTorch 完全分片数据并行 (FSDP) 和威震天-。DeepSpeedDeepSpeedSMDDP 库通过提供以下内容来解决关键集体通信操作的通信开销。 SageMaker HyperPod

  • 该库AllGather针对以下内容进行了优化 Amazon。 AllGather是分片数据并行训练中使用的一项关键操作,分片数据并行训练是一种内存效率高的数据并行技术,由 SageMaker 模型并行度 (SMP) 库、 DeepSpeed 零冗余优化器 (ZerO) 和完全分片数据并行度 (FSDP) 等常用库提供。 PyTorch

  • 该库通过充分利用 Amazon 网络基础设施和 SageMaker ML 实例拓扑来优化 node-to-node 通信。

运行示例数据并行训练作业

浏览以下使用 SMDDP 库实现数据并行技术的分布式训练示例。

要设置在上使用 SMDDP 库的环境 SageMaker HyperPod

以下是在上使用 SMDDP 库的训练环境要求。 SageMaker HyperPod

  • PyTorch v2.0.1 及更高版本

  • CUDA v11.8 及更高版本

  • libstdc++运行时版本大于 3

  • Python v3.10.x 及更高版本

  • ml.p4d.24xlargeml.p4de.24xlarge,它们是 SMDDP 库支持的实例类型

  • imdsv2已在训练主机上启用

根据你想要如何运行分布式训练作业,有两种方法可以安装 SMDDP 库:使用 SMDDP 二进制文件直接安装,以及使用 SMDDP 库中预安装的 Dee SageMaker p Learning Containers (DLC)。预装有 SMDDP 库的 Docker 镜像或 SMDDP 二进制文件的 URL 列在 SMDDP 库文档的支持框架中。

在 DLAMI 上安装 SMDDP 库 SageMaker HyperPod
  • pip install --no-cache-dir https://smdataparallel.s3.amazonaws.com/binary/pytorch/<pytorch-version>/cuXYZ/YYYY-MM-DD/smdistributed_dataparallel-X.Y.Z-cp310-cp310-linux_x86_64.whl

    注意

    如果您在 Conda 环境中工作,请确保 PyTorch使用conda install代替进行安装。pip

    conda install pytorch==X.Y.Z torchvision==X.Y.Z torchaudio==X.Y.Z pytorch-cuda=X.Y.Z -c pytorch -c nvidia
在 Docker 容器上使用 SMDDP 库
  • SMDDP 库已预先安装在 Deep Learning Contain SageMaker ers (DLC) 上。要查找 SMDDP 库的 SageMaker 框架 DLC 列表,请参阅 SMDDP 库文档中的支持的框架。 PyTorch 您也可以自带安装所需依赖项的 Docker 容器来使用 SMDDP 库。要了解有关设置自定义 Docker 容器以使用 SMDDP 库的更多信息,另请参阅。使用 SageMaker 分布式数据并行库创建自己的 Docker 容器

    重要

    要在 Docker 容器中使用 SMDDP 库,必须将主机上的/var/log目录挂载到容器/var/log中。这可以通过在运行容器时添加以下选项来完成。

    docker run <OTHER_OPTIONS> -v /var/log:/var/log ...

要了解如何使用 SMDDP 运行数据并行训练作业,请参阅。如何使用分布式数据并行库运行 SageMaker分布式训练作业

在集群上使用 SMP SageMaker HyperPod

SageMaker 模型并行度 (SMP) 库提供了各种state-of-the-art模型并行技术,例如完全分片的数据并行性、专家并行性、使用 FP16/BF16 和 FP8 数据类型的混合精度训练以及张量并行性。SMP 库还与 FS PyTorch DP、NVIDIA 威震天和 NVIDIA Transformer Engine 等开源框架兼容。

运行模型并行训练工作负载示例

SageMaker 服务团队提供样本训练作业,使用位于 SMP 库实现模型并行性。awsome-distributed-training/3.test_cases/17.SM-modelparallelv2