本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始在 Amazon 中使用分布式培训 SageMaker
以下页面提供了有关开始在 Amazon 中进行分布式培训所需的步骤的信息 SageMaker。如果您已熟悉如何进行分布式训练,请在以下选项中,选择与您偏好的策略或框架相符的选项以开始使用。如果您想全面了解分布式训练,请参阅分布式训练概念。
SageMaker 分布式训练库针对 SageMaker 训练环境进行了优化,有助于调整分布式训练作业 SageMaker,并提高训练速度和吞吐量。该库提供了数据并行和模型并行训练策略。它们结合了软件和硬件技术来改善节点间和节点间的通信,GPU并将 SageMaker extend 的训练功能与内置选项相结合,只需对训练脚本进行最少的代码更改。
入门准备
SageMaker 训练支持在单个实例和多个实例上进行分布式训练,因此您可以大规模运行任何规模的训练。我们建议您在 Pyth SageMaker on TensorFlowCreateTrainingJob
API在后端运行,找到当前会话正在运行的区域,然后提取一个预先构建的 Amazon 深度学习容器,其中预先打包了许多库,包括深度学习框架、分布式训练框架和驱动程序。EFA如果要将FSx文件系统挂载到训练实例,则需要将VPC子网和安全组 ID 传递给估算器。在中运行分布式训练作业之前 SageMaker,请阅读以下有关基本基础设施设置的一般指南。
可用区和网络背板
使用多个实例(也称为节点)时,重要的是要了解连接实例的网络、它们如何读取训练数据以及它们如何在彼此之间共享信息。例如,当您运行分布式数据并行训练作业时,许多因素,例如用于运行AllReduce
操作的计算集群节点之间的通信,以及节点之间的数据传输和 Amazon Simple Storage Service 或 Amazon for Lustre 中的数据存储,在实现计算资源的最佳利用和更快的训练速度方面起着至关重要的作用。FSx为了减少通信开销,请确保在同一可用区中配置实例、VPC子网 Amazon Web Services 区域 和数据存储。
GPU具有更快网络和高吞吐量存储的实例
从技术上讲,您可以使用任何实例进行分布式训练。如果您需要运行多节点分布式训练作业来训练大型模型,例如大型语言模型 (LLMs) 和扩散模型,需要更快的节点间交换,我们建议使用EFA支持的启用GPU
使用 SageMaker 分布式数据并行度 () 库 SMDDP
该SMDDP库通过针对 Amazon 网络基础设施AllReduce
和 Amazon SageMaker ML 实例拓扑进行了优化的AllGather
集合通信操作来改善节点之间的通信。您可以使用该SMDDP库作为 PyTorch基于分布式训练包的后端:PyTorch 分布式数据 parallel (DDP)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
估计器的参数。支持的框架估计器是和。PyTorchTensorFlowml.p4d.24xlarge
实例上,使用数据并行性库为分布式训练构造框架估算器。
from sagemaker.
framework
importFramework
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 还支持以下操作mpirun
和torchrun
后端选项。
-
要在
mpirun
后端中 SageMaker 使用 PyTorch DistributedDataParallel (DDP),请 distribution={"pytorchddp": {"enabled": True}}
添加到您的 PyTorch估算器中。有关更多信息,另请参阅 Pyth SageMaker on SDK 文档中的PyTorch 分布式训练和SageMaker PyTorch 估算器的 distribution
参数。注意
此选项适用于 PyTorch 1.12.0 及更高版本。
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=
2
, instance_type="ml.p4d.24xlarge
", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend ) -
SageMaker 支持PyTorch
torchrun
启动器,用于在GPU基于 Amazon 的EC2实例(例如 P3 和 P4)上进行分布式训练,也支持由 Trainium 设备提供支持的 Trn1。Amazon 要在
torchrun
后端中 SageMaker 使用 PyTorch DistributedDataParallel (DDP),请 distribution={"torch_distributed": {"enabled": True}}
添加到 PyTorch 估算器中。注意
此选项适用于 PyTorch 1.13.0 及更高版本。
以下代码片段显示了构造 SageMaker PyTorch 估计器以使用分布选项在两个
ml.p4d.24xlarge
实例上运行分布式训练的torch_distributed
示例。from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=
2
, instance_type="ml.p4d.24xlarge
", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )有关更多信息,请参阅 Pyth SageMaker on SDK 文档中的分布式 PyTorch 训练
和SageMaker PyTorch 估算器的 distribution
参数。在 Trn1 上进行分布式训练的注意事项
一个 Trn1 实例由最多 16 个 Trainium 设备组成,每个 Trainium 设备由两台设备组成。NeuronCores
有关 Amazon Trainium 设备的规格,请参阅 Neuron 文档中的 Trainium 架构 。Amazon 要在 Trainium 支持的实例上进行训练,您只需要在估算器类的
instance_type
参数中以字符串形式指定 Trn1 实例代码。ml.trn1.*
SageMaker PyTorch 要查找可用的 Trn1 实例类型,请参阅《Amazon Neuron 文档》中的 Amazon Trn1 架构。 注意
SageMaker Amazon EC2 Trn1 实例上的训练目前仅适用于从 v1.11.0 开始的 Dee Amazon p Learning Containers for Ne PyTorch uron 中的 PyTorch框架。要查找支持的 Ne PyTorch uron 版本的完整列表,请参阅 Dee Amazon p Learning Conta iners 存储库中的 Neuron 容
器 GitHub 。 当你使用 Pyth SageMaker on 在 Trn1 实例上启动训练作业时SDK, SageMaker会自动从 Deep Learning Containers 提供的Amazon 神经元容器中提取并运行正确的容器
。Neuron Containers 预先打包了训练环境设置和依赖项,便于您的训练作业适应 SageMaker 训练平台和 Amazon EC2 Trn1 实例。 注意
要使用在 Trn1 实例上运行 PyTorch 训练作业 SageMaker,您应修改训练脚本以使用
xla
后端初始化进程组并使用PyTorch/。XLA为了支持XLA采用过程,Ne Amazon uron SDK 提供了用于将 PyTorch 操作转换XLA为 Trainium 指令的 PyTorch 神经元。要了解如何修改训练脚本,请参阅 Neuron 文档中的 PyTorch Neuron 训练开发者指南 ( torch-neuronx
)。Amazon 有关更多信息,请参阅 Python 文档中的 Trn1 实例 PyTorch 上使用神经元进行分布式训练
和 E SageMaker PyTorch stimator distribution
的论点。SageMaker SDK -
要MPI在中使用 SageMaker,请
distribution={"mpi": {"enabled": True}}
添加到您的估算器中。MPI分发选项适用于以下框架:MXNet PyTorch、和 TensorFlow。 -
要在中使用参数服务器 SageMaker,请
distribution={"parameter_server": {"enabled": True}}
添加到您的估算器中。参数服务器选项适用于以下框架:MXNet PyTorch、和 TensorFlow。提示
有关在每个框架中使用MPI和参数服务器选项的更多信息,请使用以下 SageMaker Python SDK 文档链接。
-
MXNet分布式训练
和SageMaker MXNet估算器的论点 distribution
-
PyTorch 分布式训练
和SageMaker PyTorch 估算器的论点 distribution
-
TensorFlow 分布式训练
和SageMaker TensorFlow 估算器的论点 。 distribution
-