继DeepGEMM之后,deepseek开源了第四弹DualPipe。今天来简单聊聊DualPipe,包懂。
DualPipe是干嘛的?
Dualpipe,一个双向管道并行算法,提高了前向传播/反向传播过程中的计算+通信效率,降低了单向流水线的等待时间(pipeline bubbles)。
前向传播和反向传播是干嘛的?
你输入:how are you?
AI输出:I’m fine. Thank you. And you?
为什么?
AI的输出,是依据事先训练好的模型(一大堆参数),以追求“用户体验最好”的最大概率。说白了,就是一个预测的过程。
模型的一大堆参数,是怎么来的?
- 前向传播:根据输入,根据模型参数(左图的每一条绿线,一个权重),生成预测结果,通过损失函数,衡量模型的好坏。
- 反向传播:根据损失函数,明确每个参数对误差的“责任”,指导调整参数(右图的每一条红线,调整权重),对模型进行优化。
如此往复,不断优化,最终训练出模型成品(损失函数最小)。
举个更形象的例子,这好比工厂流水线:
- 前向传送带:加工零件,生产商品;
- 反向传送带:质检返修,优化商品;
如此反复,直到生成成品。
可以说,前向传播和反向传播是预测模型的基础。
这和DualPipe有什么关系?
我们要进行多轮参数优化,通常需要:
- 前向传播
- 反向传播
- 前向传播
- 反向传播
- …
单向流水线交替进行。
如此一来,计算与通信就无法跑满,GPU会有pipeline bubbles。
而Dualpipe:
- 前向传播与反向传播同时进行;
- 计算与通讯同时进行(例如:前向传播计算时,加载反向传播所需的数据);
从调度图上能够看出,pipeline bubbles大部分都被填满了。工厂流水线上的单向传送带,升级成了双向循环传送带。
另外,DualPipe的作者:
梁文峰赫然在列!
结尾
对于DualPipe,我的思考是:
其一,软件的优化和硬件的升级,一样重要;
其二,为什么很多大公司AI搞不出来?
- 自己懂,必须自己下场;
- 自己不懂,就让懂的人上;
- 如果又不懂,又占着资源,能搞得出来?
补充阅读材料:
《DualPipe》:https://github.com/deepseek-ai/DualPipe可参考。