亚马逊SageMaker数据并行库常见问题 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

亚马逊SageMaker数据并行库常见问题

使用以下内容查找有关的常见问题的解答SageMaker的数据并行度库。

Q: 使用图书馆时,怎么样allreduce-支持管理的 CPU 实例? 我必须创建异构 CPU-GPU 集群吗?还是SageMaker服务为使用库的作业创建额外的 C5s?

该库使用 GPU 实例可用的 CPU。不会启动额外的 C5 或 CPU 实例;如果SageMaker培训作业是 8 节点ml.p3dn.24xlarge群集,只有 8 个ml.p3dn.24xlarge使用实例。没有配置其他实例。 

Q: 我有一份培训工作需要 5 天的时间ml.p3.24xlarge具有一组超参数 H1(学习速率、批量大小、优化器等)的实例。在使用SageMaker的数据并行度库和大五倍的集群足以实现大约五次的加速? 或者在激活库之后,我必须重新审视它的训练超参数吗?

库改变了整体批量大小。新的总批量大小随使用的训练实例的数量进行线性扩展。因此,必须更改超参数,例如学习率,以确保收敛。

Q: 图书馆支持 Spot 吗?

可以。您可以使用托管的现场训练。您可以在SageMaker训练任务。您可以在训练脚本中保存和恢复检查点,如最后步骤中提到的修改 TensorFlow 训练脚本修改 PyTorch 训练脚本.

Q: 库在单主机、多设备设置中是否相关?

该库可用于单主机多设备培训,但该库仅在多主机培训中提供性能改进。

Q: 图书馆可以用PyTorch闪电?

否。 但是,使用图书馆的 DDPPyTorch,你可以编写自定义 DDP 来实现该功能。

Q: 训练数据集应该存储在哪里?

Amazon S3 存储桶或 Amazon FSx 驱动器中可存储训练数据集。请参阅这个培训作业的各种受支持的输入文件系统的文档.

Q: 使用图书馆时,是否必须在 FSx 中拥有 Lustre 的训练数据? 可以使用亚马逊 EFS 和 Amazon S3 吗?

我们通常建议您使用 Amazon FSx,因为它的延迟更低,吞吐量更高。如果您愿意,可以使用 Amazon EFS 或 Amazon S3。

Q: 库可以与 CPU 节点一起使用吗?

否。 该图书馆支持ml.p3.16xlargeml.p3dn.24xlarge, 和ml.p4d.24xlarge此时的实例。

Q: 发布时库目前支持哪些框架和框架版本?

该库目前支持PyTorch和 v1.6.0 或后续版本TensorFlowv2.3.0 或后续版本。它不支持TensorFlow1.x。有关封装在哪个版本库中的更多信息Amazon深度学习容器,请参阅Deep Learning Containers 的发行说明.

Q: 图书馆支持 AMP 吗?

是,SageMaker的分布式数据并行库支持开箱即用的自动混合精度 (AMP)。除了对训练脚本进行框架级修改之外,无需采取额外操作即可使用 AMP。如果渐变位于 FP16 中,则SageMaker数据并行度库运行AllReduce在 FP16 中操作。有关在训练脚本中实施 AMP API 的更多信息,请参阅以下资源:

Q: 如何确定我的分布式培训作业是否因为 I/O 瓶颈而减慢了速度?

对于较大的集群,训练作业需要更多的 I/O 吞吐量,因此,培训吞吐量可能需要更长的时间(更长的时间)才能提高到最高性能。这表明,随着节点扩展,I/O 正在受到瓶颈,缓存更难构建(吞吐量要求更高,网络拓扑更复杂)。有关监控 Amazon FSx 吞吐量的更多信息,请参阅CloudWatch请参阅监控 FSx for Lustre中的FSx for Lustre 用户指南.

Q: 在运行具有数据并行性的分布式培训作业时,如何解决 I/O 瓶颈?

如果您使用的是 Amazon S3,我们强烈建议您使用 Amazon FSx 作为数据渠道。如果您已经在使用 Amazon FSx 但仍然存在 I/O 瓶颈问题,则可能已将 Amazon FSx 文件系统设置为低 I/O 吞吐量和较小的存储容量。有关如何估算和选择正确的 I/O 吞吐量大小的更多信息,请参阅使用 Amazon FSx 并设置最佳存储和吞吐量容量.

Q: (对于库 v1.4.0 或更高版本)我如何解决Invalid backend初始化进程组时出错。

如果遇到错误消息ValueError: Invalid backend: 'smddp'打电话时init_process_group,这是由于 v1.4.0 及更高版本的库发生了突破性变化。您必须导入PyTorch图书馆的客户smdistributed.dataparallel.torch.torch_smddp,其中注册smddp作为后端PyTorch. 要了解更多信息,请参阅 使用 SageMaker 作为后端的分布式数据并行库torch.distributed

Q: (对于图书馆 v1.4.0 或更高版本)我想称之为torch.分布式/分布界面。哪些原语做smddp后端支持?

在 v1.4.0 中,库支持all_reducebroadcastreduceall_gather, 和barrier.

Q: (对于库 v1.4.0 或更高版本)此新 API 是否可以与其他自定义 DDP 类或类似 Apex DDP 之类的库配合使用?

这些区域有:SageMaker数据并行库通过其他第三方分布式数据并行库和框架实现进行测试,这些库使用torch.distribtued模块。使用SageMaker只要库支持自定义 DDP 类使用的集合,具有自定义 DDP 类的数据并行库就可以正常工作。有关受支持的集体列表,请参阅前面的问题。如果您有这些使用案例并需要进一步的支持,请联系SageMaker通过Amazon支持中心要么Amazon亚马逊开发者论坛SageMaker.

Q: 图书馆是否支持bring-your-own-容器(BYOC)选项? 如果是这样,我该如何通过编写自定义 Dockerfile 来安装库并运行分布式培训作业?

如果要集成SageMaker数据并行库及其在自己的 Docker 容器中的最低依赖关系,BYOC 是正确的方法。您可以使用库的二进制文件构建自己的容器。建议的过程是编写包含库及其依赖项的自定义 Dockerfile、构建 Docker 容器、将其托管在 Amazon ECR 中,然后使用 ECR 映像 URI 启动训练作业SageMaker通用估计器类。有关如何为分布式培训准备自定义 Dockerfile 的更多说明,请参阅SageMaker使用SageMaker数据并行库,请参阅使用创建自己的 Docker 容器 SageMaker 分布式数据并行库.