正文
刚刚,DeepSeek 带来了开源周的第四弹。这次,他们一口气发布了三种在 V3/R1 模型训练中使用的优化并行策略。
首先是在 DeepSeek-V3 技术报告中介绍过的一种创新的双向管道并行算法 DualPipe ,用于 V3/R1 训练中的计算通信重叠,要求是 PyTorch 2.0 及更高版本。它实现了前向和后向计算通信阶段的完全重叠,也减少了管道气泡。据介绍,DualPipe 由包括 DeepSeek 创始人梁文锋在内的三位工程师创建和开发。
项目地址:https://github.com/deepseek-ai/DualPipe
接着是 EPLB,一种适用于 V3/R1 的专家并行负载均衡器。正如 DeepSeek-V3 论文中所描述的,其在使用专家并行(EP)时采用冗余专家策略,将重载专家重复分配,然后启发式地将重复的专家打包到 GPU 上,以确保不同 GPU 之间的负载平衡。此外,得益于 V3 中使用的组限制专家路由,他们还尝试将同组的专家放置到同一节点,以尽可能减少节点间的数据流量。为便于复制和部署,他们在.NET 平台上开源了已部署的 EP 负载均衡算法。
项目地址:https://github.com/deepseek-ai/eplb
最后,其公开分享了来自训练和推理框架的分析数据,以帮助社区更好地了解通信计算重叠策略和底层实现细节。在训练配置文件数据中,他们演示了在 DualPipe 中对一对单独的前向和后向块的重叠策略。每个块包含 4 个 MoE 层。并行配置与 V3 预训练设置一致:EP64、TP1 具有 4K 序列长度。
推理方面,对于预填充,配置文件采用了 EP32 和 TP1(与 V3/R1 的实际在线部署一致)。在预填充阶段,他们利用两个微批次来重叠计算和多对多通信,同时确保注意力计算负载在两个微批次之间平衡。
解码上,该配置文件采用了 EP128、TP1 。与预填充类似,解码也利用两个微批处理进行重叠计算和多对通信。但是,与预填充不同的是,解码过程中的 all-to-all 通信不会占用 GPU SM。
项目地址:https://github.com/deepseek-ai/profile-data
有外国网友不禁感叹,“DeepSeek 是彻底地开源吗?”“感谢你们在实现我们自己的理想方面比我们做得更好。”