本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 PyTorch 训练脚本中使用 SMDDP 库
从 SageMaker AI 分布式数据并行(SMDDP)库 v1.4.0 开始,您可以将该库用作 PyTorch 分布式软件包AllReduce 和 AllGather 集合操作,只需在训练脚本的开头导入 SMDDP 库,并在进程组初始化时将 SMDDP 设置为 PyTorch 分布式模块的后端即可。只需一行后端规范,就能保持所有 PyTorch 原生分布式模块和整个训练脚本不变。以下代码片段展示了如何使用 SMDDP 库作为基于 PyTorch 的分布式训练包的后端:PyTorch 分布式数据并行(DDP)
用于 PyTorch DDP 或 FSDP
进程组初始化如下。
import torch.distributed as dist import smdistributed.dataparallel.torch.torch_smddp dist.init_process_group(backend="smddp")
注意
(仅适用于 PyTorch DDP 作业)smddp 后端目前不支持使用 torch.distributed.new_group() API 创建子进程组。您也不能同时使用 smddp 后端和其他进程组后端,如 NCCL 和 Gloo。
适用于 DeepSpeed 或 Megatron-DeepSpeed
进程组初始化如下。
import deepspeed import smdistributed.dataparallel.torch.torch_smddp deepspeed.init_distributed(dist_backend="smddp")
注意
要将 SMDDP AllGather 与 使用 SageMaker Python SDK 通过 SMDDP 启动分布式训练作业 中基于 mpirun 的启动器(smdistributed 和 pytorchddp)配合使用,还需要在训练脚本中设置以下环境变量。
export SMDATAPARALLEL_OPTIMIZE_SDP=true
有关编写 PyTorch FSDP 训练脚本的一般指导,请参阅 PyTorch 文档中的全分片数据并行(FSDP)高级模型训练
有关编写 PyTorch DDP 训练脚本的一般指导,请参阅 PyTorch 文档中的分布式数据并行入门
调整完训练脚本后,继续到 使用 SageMaker Python SDK 通过 SMDDP 启动分布式训练作业。