DualPipe 没有 Dual 可能会更好

社区文章 发布于 2025 年 2 月 28 日

祁鹏辉*、万欣怡*、黄光星、林敏                                                                  海洋人工智能实验室

* 共同贡献                                                                                                                       2025 年 2 月 27 日


中文版 Deepseek 在其开源周的第 4 天开源了 DualPipe。它是一种用于提高训练性能的管道并行和专家并行协同设计。

在这篇博客中,我们展示了 DualPipe 中的 **Dual** 部分实际上因其 2 倍参数冗余而不好,它是非必需的,并且几乎可以免费移除,对调度的其他属性影响甚微。诀窍是通过简单的“切半”过程将其转换为 V 形调度。我们进一步表明,当不需要专家并行(EP)时,效率可以进一步提高,从而产生 ZBV 调度。

从 DualPipe 中移除重复参数

值得注意的是,DualPipe 调度可以分成两个镜像的半部分,如下图所示。例如,设备 0 和 7 具有相同的管道阶段并具有完全相同的调度。

image 图 1. DualPipe 可分为两个镜像半部分。

切半:

通过只保留前一半设备(并将自下而上微批次的后期阶段嫁接到自上而下微批次的早期阶段),我们可以获得一个没有“dual”的调度,但其气泡率、内存占用等属性完全相同。

image

图 2. 设备减半和阶段嫁接示意图。

image 图 3. 切半调度。

我们将此调度称为切半调度。我们可以看到它没有参数重复,然而,由于设备数量也减少了一半,因此“每设备”参数内存保持不变。遵循相同的理念,我们也可以通过增加管道阶段数量和将每阶段层数减半来设计一个 8 设备切半调度。由于层数减半,每设备参数量减少到原始数量的一半。

我们在这里展示一个详细的比较表,所有调度都假定设备数量相同(表示为 d)。

表 1. 各种管道调度比较

方法 气泡 参数 激活 PP 通信
1F1B (d-1)(F+B) d 1 倍
ZB1P (d-1)(F+B-2W) d 1 倍
DualPipe (d/2-1)(F&B+B-3W) d+1 1 倍
切半* ((d-1)/2)(F&B+B-3W) d+1/2 2x

* 注:d 为设备数量。对于切半,d 为切分后的设备数量。

与其他方法相比,切半调度使 PP 通信量翻倍。然而,参数内存减半的好处抵消了这一点,因为 PP 通信量相对于 EP 通信量来说相对较小。

切半是一种 EP 专用 ZB-V 调度

切半调度让人联想到 V 形调度,我们强调它与先前工作的联系。V 形(波浪形)调度首次在 [3] 中提出,并在 ZB-V 调度 [1] 中改进以实现零气泡,并在 [2] 中进一步修改以减少内存占用。

DualPipe/切半中的管道气泡部分是由于专家并行 (EP) 的特殊化造成的。在前向和后向传播的稳定阶段会重叠以减轻专家并行 (EP) 中的通信开销。在不考虑 EP 的情况下,这些气泡可以进一步减少,从而有效地将切半转换为 ZB-V 调度。

  1. 解耦 F/B 并压缩,如图所示,将前向和后向传播解耦为独立通道,可实现更灵活的依赖关系,从而使得压缩调度成为可能。现在的调度更像一个 ZB-V 调度。image

  2. 解耦冷却阶段的 B/W 并重新排序 通过进一步解耦冷却阶段的 B/W 并绕过同步([1] 第 4 节中介绍),我们可以获得 ZB-V 调度并实现零气泡。image

引用

如果您觉得这篇博客有帮助,请考虑引用

@misc{qi2025dual,
  title={DualPipe could be better without the Dual},
  author={Penghui Qi and Xinyi Wan and Guangxing Huang and Min Lin},
  year={2025},
  howpublished={\url{https://hackmd.io/@ufotalent/r1lVXsa9Jg}},
  note={Blog},
}

[1] https://arxiv.org/pdf/2401.10241

[2] https://arxiv.org/abs/2405.15362

[3] https://dl.acm.org/doi/pdf/10.1145/3581784.3607073

社区

注册登录以评论