将管道并行性与张量并行性结合使用时的秩评定机制 - Amazon SageMaker

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

将管道并行性与张量并行性结合使用时的秩评定机制

此部分解释了模型并行性的秩评定机制如何与张量并行性结合使用。这是从 SageMaker 模型并行度库的核心功能秩评定基础知识中扩展而来的。在张量并行度中,该库引入了三种类型的排名和处理组APIs:用于smp.tp_rank()张量并行等级,用于smp.pp_rank()流水线并行等级,以及用于smp.rdp_rank()简化数据的并行等级。对应的通信进程组是张量并行组 (TP_GROUP)、管道并行组 (PP_GROUP) 和缩减数据并行组 (RDP_GROUP)。这些组的定义如下:

  • 张量并行组 (TP_GROUP) 是数据并行组中一个可均匀分割的子集,在其中完成模块的张量并行分布。当管道并行度为 1 时,TP_GROUP模型并行组 (MP_GROUP) 相同。

  • 管道并行组 (PP_GROUP) 是完成管道并行性的进程组。当张量并行度为 1 时,PP_GROUPMP_GROUP 相同。

  • 缩减数据并行组 (RDP_GROUP) 是一组进程,同时容纳相同的管道并行性分区和相同的张量并行分区,并在它们自身中执行数据并行性。之所以将其称为缩减数据并行组,是因为它是整个数据并行性组 DP_GROUP 的子集。对于分布在 TP_GROUP 中的模型参数,梯度 allreduce 运算仅对缩减数据并行组执行,而对于未分布的参数,梯度 allreduce 在整个 DP_GROUP 上进行。

  • 模型并行组 (MP_GROUP) 是指一组共同存储整个模型的进程。它由当前进程的 TP_GROUP 中,所有秩的 PP_GROUP 并集组成。当张量并行度为 1 时,MP_GROUP 等于 PP_GROUP。它也与先前 smdistributed 版本中的 MP_GROUP 现有定义一致。请注意,当前 TP_GROUP 是当前 DP_GROUP 和当前 MP_GROUP 的子集。

要了解有关 SageMaker 模型并行度库APIs中通信过程的更多信息,请参阅 Python SageMaker 文档中的通用APIPyTorch特定APIs的。SDK

张量并行性的排名机制、参数分布和关联 AllReduce 运算。

例如,考虑一个具有 8 的单个节点的处理组GPUs,其中张量并行度为 2,流水线并行度为 2,数据并行度为 4。上图的顶部居中部分显示了一个包含 4 层的模型的示例。图的左下角和右下部分说明了GPUs使用流水线并行性和张量并行度分布在 4 层的 4 层模型,其中中间的两层使用张量并行性。下方的两个图是简单的副本,用于说明不同的组边界线。在 GPUs 0-3 和 4-7 之间复制分区模型以实现数据并行性。左下图显示了MP_GROUPPP_GROUPTP_GROUP 的定义。右下角的图显示WORLDRDP_GROUPDP_GROUP、和在同一组上GPUs。为了实现数据并行性,具有相同颜色的层和层切片的梯度通过 allreduce 分在一起。例如,第一层(浅蓝色)获取 DP_GROUP 上的 allreduce 运算,而第二层中的深橙色切片只能获取其进程的 RDP_GROUP 中的 allreduce 运算。加粗深红色箭头表示张量及其完整 TP_GROUP 的批次。

GPU0: pp_rank 0, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 0 GPU1: pp_rank 1, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 1 GPU2: pp_rank 0, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 2 GPU3: pp_rank 1, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 3 GPU4: pp_rank 0, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 0 GPU5: pp_rank 1, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 1 GPU6: pp_rank 0, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 2 GPU7: pp_rank 1, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 3

在此示例中,管道并行性发生在 (0,1)、(2,3)、(4,5) 和 (6,7) GPU 对之间。此外,数据并行度 (allreduce) 在 GPUs 0、2、4、6 之间进行,并在 GPUs 1、3、5、7 上独立进行。张量并行性发生在 DP_GROUP s 的子集上,跨GPU对 (0,2);(1,3);(4,6) 和 (5,7)。