DualPipe 没有 Dual 可能会更好
祁鹏辉*、万欣怡*、黄光星、林敏 海洋人工智能实验室
* 共同贡献 2025 年 2 月 27 日
中文版 Deepseek 在其开源周的第 4 天开源了 DualPipe。它是一种用于提高训练性能的管道并行和专家并行协同设计。
在这篇博客中,我们展示了 DualPipe 中的 **Dual** 部分实际上因其 2 倍参数冗余而不好,它是非必需的,并且几乎可以免费移除,对调度的其他属性影响甚微。诀窍是通过简单的“切半”过程将其转换为 V 形调度。我们进一步表明,当不需要专家并行(EP)时,效率可以进一步提高,从而产生 ZBV 调度。
从 DualPipe 中移除重复参数
值得注意的是,DualPipe 调度可以分成两个镜像的半部分,如下图所示。例如,设备 0 和 7 具有相同的管道阶段并具有完全相同的调度。
切半:
通过只保留前一半设备(并将自下而上微批次的后期阶段嫁接到自上而下微批次的早期阶段),我们可以获得一个没有“dual”的调度,但其气泡率、内存占用等属性完全相同。
图 2. 设备减半和阶段嫁接示意图。
我们将此调度称为切半调度。我们可以看到它没有参数重复,然而,由于设备数量也减少了一半,因此“每设备”参数内存保持不变。遵循相同的理念,我们也可以通过增加管道阶段数量和将每阶段层数减半来设计一个 8 设备切半调度。由于层数减半,每设备参数量减少到原始数量的一半。
我们在这里展示一个详细的比较表,所有调度都假定设备数量相同(表示为 d)。
表 1. 各种管道调度比较
方法 | 气泡 | 参数 | 激活 | PP 通信 |
---|---|---|---|---|
1F1B | (d-1)(F+B) | 1× | d | 1 倍 |
ZB1P | (d-1)(F+B-2W) | 1× | d | 1 倍 |
DualPipe | (d/2-1)(F&B+B-3W) | 2× | d+1 | 1 倍 |
切半* | ((d-1)/2)(F&B+B-3W) | 1× | 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 调度。
解耦 F/B 并压缩,如图所示,将前向和后向传播解耦为独立通道,可实现更灵活的依赖关系,从而使得压缩调度成为可能。现在的调度更像一个 ZB-V 调度。
解耦冷却阶段的 B/W 并重新排序 通过进一步解耦冷却阶段的 B/W 并绕过同步([1] 第 4 节中介绍),我们可以获得 ZB-V 调度并实现零气泡。
引用
如果您觉得这篇博客有帮助,请考虑引用
@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