DeepSeek 开源拆解:DualPipe(12/16)

双向管道并行:让前向传播与反向传播同时进行,把 pipeline bubbles 填满

DeepSeek 实践第 12 篇封面:开源项目拆解:DualPipe

双向管道并行:让前向传播与反向传播同时进行,把 pipeline bubbles 填满

《DeepSeek 原理与实践》第 12 篇:deepseek 极限潜能 – DualPipe。

继DeepGEMM之后,deepseek开源了第四弹DualPipe。今天来简单聊聊DualPipe,包懂。

DualPipe是干嘛的?

DualPipe 开源项目 README:双向流水线并行算法

Dualpipe,一个双向管道并行算法,提高了前向传播/反向传播过程中的计算+通信效率,降低了单向流水线的等待时间(pipeline bubbles)。

前向传播和反向传播是干嘛的?

你输入:how are you?

AI输出:I’m fine. Thank you. And you?

为什么?

AI的输出,是依据事先训练好的模型(一大堆参数),以追求“用户体验最好”的最大概率。说白了,就是一个预测的过程。

模型的一大堆参数,是怎么来的?

前向传播与反向传播示意图:预测与参数更新

前向传播:根据输入,根据模型参数(左图的每一条绿线,一个权重),生成预测结果,通过损失函数,衡量模型的好坏。

反向传播:根据损失函数,明确每个参数对误差的“责任”,指导调整参数(右图的每一条红线,调整权重),对模型进行优化。

如此往复,不断优化,最终训练出模型成品(损失函数最小)。

举个更形象的例子,这好比工厂流水线:

前向传送带:加工零件,生产商品;

反向传送带:质检返修,优化商品;

如此反复,直到生成成品。

可以说,前向传播和反向传播是预测模型的基础。

这和DualPipe有什么关系?

我们要进行多轮参数优化,通常需要:

  1. 前向传播
  2. 反向传播
  1. 前向传播
  2. 反向传播

…

单向流水线交替进行。

如此一来,计算与通信就无法跑满,GPU会有pipeline bubbles。

而Dualpipe:

  1. 前向传播与反向传播同时进行;
  2. 计算与通讯同时进行(例如:前向传播计算时,加载反向传播所需的数据);

DualPipe 调度图:8 卡前向/反向传播交叠时间线

从调度图上能够看出,pipeline bubbles大部分都被填满了。工厂流水线上的单向传送带,升级成了双向循环传送带。

另外,DualPipe的作者:

DualPipe 开源项目开发者列表:梁文锋在列

梁文锋赫然在列!

结尾

对于DualPipe,我的思考是:

其一,软件的优化和硬件的升级,一样重要;

其二,为什么很多大公司AI搞不出来?

  1. 自己懂,必须自己下场;
  2. 自己不懂,就让懂的人上;
  3. 如果又不懂,又占着资源,能搞得出来?

检验一下

检索练习 · DualPipe 解决什么
DualPipe 解决的核心问题是什么?

检索练习 · 前向传播
前向传播是干嘛的?

检索练习 · 反向传播
反向传播是干嘛的?

检索练习 · 双向的含义
DualPipe 如何填满 pipeline bubbles?

本篇一手来源

想深挖一层,直接去官方仓库翻代码:github.com/deepseek-ai/DualPipe,可参考。

本篇的调度图和作者名单就出自仓库里的论文——梁文锋亲自写的那几行,值得去围观一眼。

管道双向跑起来了,可几十上百张 GPU 上的专家忙闲不均怎么办?——第 13 篇,聊聊 EPLB 的动态负载均衡:分级、冗余、就近、动态。

知其然,知其所以然。思路比结论更重要。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

京ICP备2025137728号-3