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

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

数据并行库常见问题

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

问:使用 库时allreduce,如何管理支持的 CPU 实例? 我是否必须创建异构 CPU-GPU 集群,或者该SageMaker服务是否为使用该库的作业创建额外的 C5s?

该库使用CPUs可用于 GPU 实例的 。不会启动其他 C5 或 CPU 实例;如果您SageMaker的训练作业为 8 个节点ml.p3dn.24xlarge集群,则仅使用 8 个ml.p3dn.24xlarge实例。不预配置任何其他实例。 

问:我有一个训练作业,它在具有一组超参数 H1 (学习速率、批处理大小、优化程序等) 的单个ml.p3.24xlarge实例上花费 5 天时间。启用 SDP 并使用5x集群是否足以体验约 5x的加速? 或者,在启用 SDP 后,我是否要重新访问其训练超参数?

启用库将更改整个批处理大小。新的整体批处理大小随所用训练实例数线性扩展。因此,必须更改超参数 (如学习速率) 以确保收敛。

问:该库是否支持 Spot?

是。您可以使用托管的 Spot 训练。您可以在SageMaker训练作业中指定检查点文件的路径。您可以在其训练脚本中启用保存/还原检查点,如 的最后一步中所述脚本修改概述

问:库的平衡融合缓冲区与PyTorch分布式数据并行 (DDP)“Gradient Buckets”之间有何区别? 

主要区别在于,DEP 的融合缓冲区用于 AllReduce ,库的平衡融合缓冲区用于参数服务器样式同步。库是在基于服务器的参数梯度同步中对融合缓冲区进行分片的第一个框架。 

PyTorch DEP 文档中:“为了提高通信效率, 将参数梯度Reducer组织到 存储桶中,并一次减少一个存储桶。存储桶大小可以通过在 DEP 构造函数中设置 bucket_cap_mb 参数来配置。根据存储桶大小限制和参数大小,在构造时确定从参数梯度到存储桶的映射。模型参数以 (快速) Model.parameters() 给定模型的反向顺序分配到 存储桶中。使用反向顺序的原因是,DEP 期望梯度在大致按该顺序向后传递期间变为就绪状态。”

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

该库可与单主机多设备设置一起使用。但是,在两个或更多节点中,库的 AllReduce 操作可为您提供显著的性能改进。此外,在单个主机上, NVLink 已有助于提高节点内AllReduce效率。

问:库是否可以与 PyTorch Lightning 一起使用?

不可以。但是,利用库的适用于 的 PyTorchDEDK,您可以编写自定义 DEP 以实现该功能。

问:训练数据集应存储在何处?

训练数据集可存储在 S3 存储桶或 FSx 驱动器中。有关训练作业的各种支持的输入文件系统,请参阅本文档。

问:在使用 库时,在 FSx 中为 Lustre 拥有训练数据是否是必需的? 是否可以使用 EFS 和 S3?

我们建议使用 FSx 缩短启动训练的时间。它不是必需的。

问:库是否可以与 CPU 节点一起使用?

否。该库目前支持 ml.p3.16xlargeml.p3dn.24xlargeml.p4d.24xlarge 实例。

问:启动时库当前支持哪些框架和框架版本?

该库当前支持 PyTorch v1 和 Tensorflow v2。它当前不支持 Tensorflow 1.x。