DeepSeek开源三箭齐发,梁文峰亲自上阵!双向并行LLM训练飙升

开源周第 4 天,DeepSeek 放出的是------优化并行策略,一共三个项目。

  • DualPipe:一种用于 V3/R1 模型训练中实现计算与通信重叠的双向流水线并行算法

  • EPLB:一个针对 V3/R1 的专家并行负载均衡工具

  • 深入分析 V3/R1 模型中的计算与通信重叠机制

值得一提的是,DualPipe 是由三个人------Jiashi Li、Chengqi Deng 和梁文峰共同研发。

有网友对此表示,这是一个颠覆性的突破。

「DualPipe 和 EPLB 让大模型的训练更快、更便宜、更可持续,同时保持顶尖性能」。

开源仅剩最后一天,评论区网友纷纷许愿:明天一定要来个大的。

DualPipe

DualPipe 是 DeepSeek-V3 技术报告中提出的一种创新双向流水线并行算法。

它能够实现前向与后向计算和通信阶段的完全重叠,同时有效减少流水线气泡(空闲时间)。

调度方案

上图展示了在 8 个流水线并行阶段和 20 个 micro-batches 情况下,DualPipe 在两个方向上的调度示例。

由于反向方向的微批次与前向方向对称,为了简化图示,这里省略了反向方向的 batch ID。图中由同一个黑色边框包围的两个单元格表示同时进行的计算和通信操作,它们实现了相互重叠。

流水线气泡与内存使用比较

图中,𝐹代表前向块(forward chunk)的执行时间,𝐵代表完整后向块(full backward chunk)的执行时间,𝑊代表「权重后向」(backward for weights)块的执行时间,而𝐹&𝐵则表示同时执行且相互重叠的前向和后向块的执行时间。

快速入门

使用示例如下:

复制代码
python example.py

注意:在实际生产环境中,需要根据模块特点来实现一个定制化的 overlapped_forward_backward 方法。

专家并行负载均衡器(EPLB)

在使用专家并行(EP)时,不同的专家模块会被分配到不同的 GPU 上。由于各个专家的计算负载会随当前任务而变化,因此保持各 GPU 间负载均衡至关重要。

如 DeepSeek-V3 论文所述,研究人员采用了冗余专家(redundant experts)策略,对高负载专家进行复制。

随后,通过启发式算法将这些复制的专家合理分配到各 GPU 上,确保计算资源的平衡利用。

此外,由于 DeepSeek-V3 采用了组内限制专家路由(group-limited expert routing)机制,研究团队尽可能将同一组的专家放置在同一节点上,以减少节点间的数据传输开销。

为了便于复现和部署,DeepSeek 在 eplb.py 文件中开源了 EP 负载均衡算法。该算法能够根据估计的专家负载,计算出均衡的专家复制和放置方案。

需要说明的是,专家负载的具体预测方法不在此代码库的讨论范围内,一种常用的方法是采用历史统计数据的滑动平均值。

算法原理

负载均衡算法提供了两种策略,适用于不同场景:

· 层次负载均衡(Hierarchical Load Balancing)

当服务器节点数量能够整除专家组数量时,研究人员采用层次负载均衡策略,来充分利用组内限制专家路由机制。

首先,他们将专家组均匀分配到各节点,确保节点间负载平衡;然后,在每个节点内部复制专家模型;最后,将复制后的专家打包分配到各个 GPU 上,实现 GPU 间的负载均衡。

这种层次化策略特别适用于预填充阶段(prefilling stage),此时专家并行规模较小。

· 全局负载均衡(Global Load Balancing)

在其他情况下,研究人员采用全局负载均衡策略,不考虑专家组的限制,直接在全局范围内复制专家并分配到各个 GPU 上。这种策略更适合解码阶段使用,此时专家并行规模较大。

接口示例

负载均衡器的核心函数是 eplb.rebalance_experts。

下面的代码展示了一个双层混合专家模型(MoE)的示例,每层包含 12 个专家。

DeepSeek 为每层引入了 4 个冗余专家,总计 16 个专家副本被分配到 2 个计算节点上,每个节点配有 4 个 GPU。

该层次负载均衡策略产生的结果,展示了如下专家复制与分配方案。

DeepSeek 基础设施中的性能剖析数据

在这里,DeepSeek 公开分享来自训练和推理框架的性能剖析数据,旨在帮助社区更深入地理解通信与计算重叠策略以及相关底层实现细节。

这些剖析数据是通过 PyTorch Profiler 工具获取的。

你可以下载后在 Chrome 浏览器中访问 chrome://tracing(或在 Edge 浏览器中访问 edge://tracing)直接进行可视化查看。

需要说明的是,为了便于剖析,研究人员模拟了一个完全均衡的 MoE 路由策略。

训练过程

训练剖析数据展示了,研究人员在 DualPipe 中如何实现单对前向和后向计算块的重叠策略。每个计算块包含 4 个 MoE 层。

并行配置与 DeepSeek-V3 预训练设置保持一致:采用 EP64、TP1,序列长度为 4K。

为简化剖析过程,未包含流水线并行(PP)通信部分。

推理过程

· 预填充

在预填充阶段,剖析配置采用 EP32 和 TP1 的配置(与 DeepSeek V3/R1 实际在线部署一致),提示长度设为 4K,每 GPU 批处理量为 16K 个 token。

研究人员在预填充阶段使用两个 micro-batches 来实现计算与 all-to-all 通信的重叠,同时确保注意力机制的计算负载在两个 micro-batches 间保持平衡------这意味着同一条提示信息可能会被分割到不同 micro-batches 中处理。

· 解码

解码阶段的剖析配置采用 EP128、TP1,提示长度 4K(与实际在线部署配置非常接近),每 GPU 批处理量为 128 个请求。

与预填充类似,解码阶段也利用两个 micro-batches 来重叠计算和 all-to-all 通信。

然而不同的是,解码过程中的全联通通信不占用 GPU 流处理器(SM):RDMA 消息发出后,所有 GPU 流处理器立即被释放,系统在完成计算后等待全联通通信完成。

关于 all-to-all 通信实现的更多技术细节,请参考 DeepEP 文档。

相关推荐
SeaTunnel1 分钟前
Apache SeaTunnel & Amazon Bedrock 助力生成式AI 应用规模化生产实践
人工智能·apache
菜小包1 分钟前
什么是AI Agent ?在并行科技MAAS平台上怎么搭建自己的Agent?
人工智能·机器学习
橙色小博4 分钟前
GPT:Transformer的专精产品
人工智能·python·gpt·深度学习·神经网络·transformer
pythonSuperman20 分钟前
Correlation Matrix of Model Logits
人工智能·深度学习·机器学习
小华同学ai23 分钟前
7.9K star!免费解锁Cursor Pro功能,这个开源神器太强了!
人工智能·开源·github
AndrewHZ23 分钟前
【图像处理基石】什么是影调?并用python实现一个哈苏色彩影调
图像处理·人工智能·python·计算机视觉·影调·摄影语言
InTheMirror26 分钟前
Google 最新发布!A2A 与 MCP:引领智能体互联的协议之争?
人工智能
AI服务老曹36 分钟前
包含网络、平台、数据及安全四大体系的智慧快消开源了
运维·人工智能·安全·开源·音视频
神经星星36 分钟前
在线教程丨字节开源 InfiniteYou 图像生成框架,实现高保真面部特征迁移
人工智能·深度学习·机器学习
ayiya_Oese38 分钟前
[环境配置] 2. 依赖库安装
人工智能·python·深度学习·神经网络·目标检测·机器学习·计算机视觉