开始在 Amazon 中使用分布式培训 SageMaker - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

开始在 Amazon 中使用分布式培训 SageMaker

以下页面提供了有关开始在 Amazon 中进行分布式培训所需的步骤的信息 SageMaker。如果您已熟悉如何进行分布式训练,请在以下选项中,选择与您偏好的策略或框架相符的选项以开始使用。如果您想全面了解分布式训练,请参阅分布式训练概念

SageMaker 分布式训练库针对 SageMaker 训练环境进行了优化,有助于调整分布式训练作业 SageMaker,并提高训练速度和吞吐量。该库提供了数据并行和模型并行训练策略。它们结合了软件和硬件技术来改善节点间和节点间的通信,GPU并将 SageMaker extend 的训练功能与内置选项相结合,只需对训练脚本进行最少的代码更改。 

入门准备

SageMaker 训练支持在单个实例和多个实例上进行分布式训练,因此您可以大规模运行任何规模的训练。我们建议您在 Pyth SageMaker on TensorFlow中使用框架估算器类,例如PyTorch和SDK,它们是具有各种分布式训练选项的训练作业启动器。当你创建 estimator 对象时,该对象会设置分布式训练基础架构,CreateTrainingJobAPI在后端运行,找到当前会话正在运行的区域,然后提取一个预先构建的 Amazon 深度学习容器,其中预先打包了许多库,包括深度学习框架、分布式训练框架和驱动程序。EFA如果要将FSx文件系统挂载到训练实例,则需要将VPC子网和安全组 ID 传递给估算器。在中运行分布式训练作业之前 SageMaker,请阅读以下有关基本基础设施设置的一般指南。

可用区和网络背板

使用多个实例(也称为节点)时,重要的是要了解连接实例的网络、它们如何读取训练数据以及它们如何在彼此之间共享信息。例如,当您运行分布式数据并行训练作业时,许多因素,例如用于运行AllReduce操作的计算集群节点之间的通信,以及节点之间的数据传输和 Amazon Simple Storage Service 或 Amazon for Lustre 中的数据存储,在实现计算资源的最佳利用和更快的训练速度方面起着至关重要的作用。FSx为了减少通信开销,请确保在同一可用区中配置实例、VPC子网 Amazon Web Services 区域 和数据存储。

GPU具有更快网络和高吞吐量存储的实例

从技术上讲,您可以使用任何实例进行分布式训练。如果您需要运行多节点分布式训练作业来训练大型模型,例如大型语言模型 (LLMs) 和扩散模型,需要更快的节点间交换,我们建议使用EFA支持的启用GPU实例。 SageMaker特别是,为了在中实现最高性能的分布式训练作业 SageMaker,我们建议配备 A100 的 P4d 和 P4de 实例。NVIDIA GPUs这些实例还配备了高吞吐量、低延迟的本地实例存储和更快的节点内网络。对于数据存储,我们推荐使用 Amazon f FSx or Lustre,它为存储训练数据集和模型检查点提供高吞吐量。

使用 SageMaker 分布式数据并行度 () 库 SMDDP

该SMDDP库通过针对 Amazon 网络基础设施AllReduce和 Amazon SageMaker ML 实例拓扑进行了优化的AllGather集合通信操作来改善节点之间的通信。您可以使用该SMDDP库作为 PyTorch基于分布式训练包的后端:PyTorch 分布式数据 parallel (DDP)PyTorch 完全分片的数据并行度 (FSDP) 和威震天 DeepSpeed-。DeepSpeed以下代码示例说明如何设置用于在两个ml.p4d.24xlarge实例上启动分布式训练作业的PyTorch估算器。

from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )

要了解如何准备训练脚本并启动分布式数据并行训练作业 SageMaker,请参阅使用分布式数据并行度库运行 SageMaker 分布式训练

使用 SageMaker 模型并行度库 () SMP

SageMaker 提供SMP库并支持各种分布式训练技术,例如分片数据并行、流水线、张量并行、优化器状态分片等。要详细了解该SMP库提供的内容,请参阅 SageMaker 模型并行度库的核心功能

要使用 SageMaker模型并行度库,请配置 SageMaker 框架distribution估计器的参数。支持的框架估计器是和。PyTorchTensorFlow以下代码示例显示了如何在两个 ml.p4d.24xlarge 实例上,使用数据并行性库为分布式训练构造框架估算器。

from sagemaker.framework import Framework distribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator = Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )

要了解如何调整训练脚本、在estimator类中配置分布参数以及启动分布式训练作业,请参阅SageMaker的模型并行度库(另请参阅 Pyth SageMaker on SDK 文档APIs中的分布式训练)。

使用开源分布式训练框架

SageMaker 还支持以下操作mpiruntorchrun后端选项。