Deepseek开源周第三弹:DeepSeek-V3和R1 模型背后的并行计算优化技术。
DualPipe:双向流水线并行算法
项目地址:https://github.com/deepseek-ai/DualPipe
DualPipe 是 DeepSeek-V3 技术报告中介绍的一种创新的双向管道平行算法。它实现了前向和后向计算通信阶段的完全重叠,还减少了管道气泡。
管道气泡和内存使用情况比较
其中,F 表示正向数据块的执行时间,B 表示完整向后数据块的执行时间,W 表示“向后权重”数据块的执行时间,F&B 表示两个相互重叠的正向和向后数据块的执行时间。
方法 | 气泡(Bubble) | 参数内存 | 激活内存 |
---|---|---|---|
1F1B | (PP-1)(𝐹+𝐵) | 1× | PP |
ZB1P | (PP-1)(𝐹+𝐵-2𝑊) | 1× | PP |
DualPipe | (PP/2-1)(𝐹&𝐵+𝐵-3𝑊) | 2× | PP+1 |
EPLB:专家并行负载均衡,让 GPU 雨露均沾
项目地址:https://github.com/deepseek-ai/eplb
采用冗余专家策略,复制重负荷专家。然后,我们将重复的专家试探式打包到 GPU 中,以确保不同 GPU 之间的负载平衡。
EPLB 提供了两种负载均衡策略:
profile-data:性能分析数据,揭秘 V3/R1 并行策略!
项目地址:https://github.com/deepseek-ai/profile-data
Training (训练):
展示了 DualPipe 在一对 forward 和 backward chunks 中的重叠策略。 使用了 4 层 MoE,EP64, TP1, 4K 序列长度等 DeepSeek-V3 预训练设置。 注意,为了简化分析,PP 通信被排除在外
Prefilling (预填充):
采用了 EP32, TP1,4K 提示长度,16K tokens/GPU 的 batch size。 展示了如何使用两个 micro-batches 来重叠计算和 all-to-all 通信,并确保 attention 计算负载在两个 micro-batches 间平衡
Decoding (解码):
解码方面,该配置文件采用了 EP128 、 TP1 和 4K 的提示长度(与实际在线部署配置非常匹配),每个 GPU 的批量大小为 128 个请求。与预填充类似,解码还利用两个微批处理进行重叠计算和多对多通信。
但是,与预填充不同的是,解码期间的 all-to-all 通信不会占用 GPU SM:发出 RDMA 消息后,所有 GPU SM 都会被释放,系统在计算完成后等待 all-to-all 通信完成。
DeepSeek开源的这三个项目,诚意满满,把大模型训练和推理的效率优化秘籍都拿出来了!利好AI研究人员
总结一下,这三个项目:
如果觉得不错,欢迎点赞、在看、转发,您的转发和支持是我不懈创作的动力~