本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SageMaker AI 分布式数据并行库常见问题解答
请使用以下内容查找有关 SMDDP 库常见问题的答案。
问:使用库时,如何管理 allreduce
支持的 CPU 实例? 我是否必须创建异构 CPU-GPU 集群,还是 SageMaker 人工智能服务为使用 SMDDP 库的任务创建额外的 C5?
SMDDP 库仅支持 GPU 实例,更具体地说,支持 NVIDIA A100 和 EFA 的 P4d 和 P4de 实例。 GPUs 不会启动其他 C5 或 CPU 实例;如果您的 SageMaker AI 训练作业在 8 节点 P4d 集群上,则仅使用 8 个ml.p4d.24xlarge
实例。无需预置其他实例。
问:我有一项训练作业,使用一组超参数 H1(学习速率、批次大小、优化器等),在单个 ml.p3.24xlarge
实例上需要 5 天完成。使用 SageMaker 人工智能的数据并行度库和五倍大的集群是否足以实现大约五倍的加速? 还是在激活 SMDDP 库之后,必须重新查看它的训练超参数?
库会更改整体批次大小。新的总批次大小会根据使用的训练实例数量线性扩展。因此,您必须更改学习率等超参数,以确保收敛。
问:SMDDP 库支持竞价型实例吗?
是。您可以使用托管式竞价型实例训练。您可以在 SageMaker 训练作业中指定检查点文件的路径。您可以在其训练脚本中启用保存和恢复检查点,如在 TensorFlow 训练脚本中使用 SMDDP 库(已弃用)和在训练脚本中使用 SMDDP 库 PyTorch 中的最后一步所述。
问:SMDDP 库是否也可用于单主机、多设备设置?
该库可用于单主机多设备训练,但只有在多主机训练中,该库才能实现性能改进。
问:训练数据集应该存储在哪里?
训练数据集可以存储在 Amazon S3 存储桶中,也可以存储在亚马逊 FSx 云端硬盘上。请参阅这份有关训练作业支持的各种输入文件系统的文档
问:使用 SMDDP 库时,是否必须为 Lustre FSx 提供训练数据? 是否可以使用 Amazon EFS 和 Amazon S3?
我们通常建议您使用 Amazon, FSx 因为它的延迟更低,吞吐量更高。如果愿意,您也可以使用 Amazon EFS 或 Amazon S3。
问:该库能否用于 CPU 节点?
否。要查找 SMDDP 库支持的实例类型,请参阅 支持的实例类型。
问:SMDDP 库在发布时支持哪些框架和框架版本?
SMDDP 库目前支持 PyTorch 1.6.0 或更高版本以及 v2.3.0 或更高版本。 TensorFlow 它不支持 TensorFlow 1.x。有关 Amazon 深度学习容器中打包了哪个版本的 SMDDP 库的更多信息,请参阅 Deep Learning Containers 的发行说明。
问:该库是否支持 AMP?
是,SMDDP 库支持开箱即用的自动混合精度 (AMP)。除了对训练脚本的框架级修改之外,无需执行额外操作即可使用 AMP。如果有梯度 FP16,则 SageMaker AI 数据并行度库将在中运行其操作。AllReduce
FP16有关在训练脚本中实现 AMP APIs 的更多信息,请参阅以下资源:
-
框架- PyTorch
在 NVIDIA 深度学习性能文档中 -
框架- TensorFlow
在 NVIDIA 深度学习性能文档中 -
NVIDIA 开发人员文档中的适用于深度学习的自动混合精度
-
在PyTorch 博客中@@ 引入原生 PyTorch 自动混合精度,以便 GPUs在 NVIDIA 上更快地进行训练
-
TensorFlow TensorFlow 文档 APIs中的@@ 精度好坏参半
问:如何确定分布式训练作业是否因为 I/O 瓶颈而减慢了速度?
在较大的集群中,训练作业需要更多的 I/O 吞吐量,因此,训练吞吐量可能需要更长的时间(更多纪元)才能逐步提升到最高性能。这表明,随着节点扩展,I/O 正在出现瓶颈,缓存更难逐步建立(吞吐量要求更高,网络拓扑更复杂)。有关监控 Amazon FSx 吞吐量的更多信息 CloudWatch,请参阅 for Lustre 用户指南中的FSx 监控 FSx Lustre。
问:运行具有数据并行性的分布式训练作业时,如何解决 I/O 瓶颈?
如果您使用的是 Amazon S3,我们强烈建议您使用亚马逊 FSx 作为数据渠道。如果您已经在使用 Amazon, FSx 但仍遇到 I/O 瓶颈问题,则可能已将 Amazon FSx 文件系统设置为低的 I/O 吞吐量和较小的存储容量。有关如何估算和选择合适 I/O 吞吐能力的更多信息,请参阅使用 Amazon FSx 并设置最佳存储和吞吐容量。
问:(对于库 v1.4.0 或更高版本)如何解决初始化进程组时的 Invalid backend
错误。
如果您在调用 init_process_group
时遇到错误消息 ValueError: Invalid backend: 'smddp'
,这是由于 SMDDP 库 v1.4.0 及更高版本中的重大更改所致。您必须导入库的 PyTorch 客户端smdistributed.dataparallel.torch.torch_smddp
,该客户端注册smddp
为的后端 PyTorch。要了解更多信息,请参阅 在训练脚本中使用 SMDDP 库 PyTorch 。
问:(对于库 v1.4.0 或更高版本)我想调用 torch.distributed
smddp
后端支持哪些基元?
在 v1.4.0 中,SMDDP 库支持 torch.distributed
接口的 all_reduce
、broadcast
、reduce
、all_gather
和 barrier
。
问:(对于 SMDDP 库 v1.4.0 或更高版本)这个新 API 能否与其他自定义 DDP 类或库(如 Apex DDP)一起使用?
SMDDP 库与使用 torch.distribtued
模块的其他第三方分布式数据并行库和框架实现进行了测试。只要 SMDDP 库支持自定义 DDP 类使用的集体操作,那么 SMDDP 库就能与自定义 DDP 类一起使用。有关支持的集合的列表,请参阅前面的问题。如果您有这些用例并需要进一步的支持,请通过 A mazon SageMaker AI 的Amazon 支持中心
问:SMDDP 库是否支持 bring-your-own-container (BYOC) 选项? 如果支持,我该如何安装库并通过编写自定义 Dockerfile 来运行分布式训练作业?
如果您想将 SMDDP 库及其最小依赖关系集成到自己的 Docker 容器中,BYOC 就是合适的方法。您可以使用库的二进制文件构建自己的容器。推荐的过程是编写包含库及其依赖项的自定义 Dockerfile,构建 Docker 容器,将其托管在 Amazon ECR 中,然后使用 ECR 镜像 URI 使用 AI 通用估算器类启动训练作业。 SageMaker 有关如何使用 SMDDP 库为 SageMaker 人工智能分布式训练准备自定义 Dockerfile 的更多说明,请参阅。使用 SageMaker AI 分布式数据并行库创建自己的 Docker 容器