DeepSeek 開源的 DualPipe,居然是梁文峰寫的,你感性?
繼DeepGEMM之后,deepseek開源了第四彈DualPipe。今天來簡單聊聊DualPipe,包懂。
DualPipe是干嘛的?
Dualpipe,一個雙向管道并行算法,提高了前向傳播/反向傳播過程中的計算+通信效率,降低了單向流水線的等待時間(pipeline bubbles)。
前向傳播和反向傳播是干嘛的?
你輸入:how are you?
AI輸出:I’m fine. Thank you. And you?
為什么?
AI的輸出,是依據(jù)事先訓練好的模型(一大堆參數(shù)),以追求“用戶體驗最好”的最大概率。說白了,就是一個預測的過程。
模型的一大堆參數(shù),是怎么來的?
- 前向傳播:根據(jù)輸入,根據(jù)模型參數(shù)(左圖的每一條綠線,一個權重),生成預測結果,通過損失函數(shù),衡量模型的好壞。
- 反向傳播:根據(jù)損失函數(shù),明確每個參數(shù)對誤差的“責任”,指導調整參數(shù)(右圖的每一條紅線,調整權重),對模型進行優(yōu)化。
如此往復,不斷優(yōu)化,最終訓練出模型成品(損失函數(shù)最?。?。
舉個更形象的例子,這好比工廠流水線:
- 前向傳送帶:加工零件,生產(chǎn)商品;
- 反向傳送帶:質檢返修,優(yōu)化商品;
如此反復,直到生成成品。
可以說,前向傳播和反向傳播是預測模型的基礎。
這和DualPipe有什么關系?
我們要進行多輪參數(shù)優(yōu)化,通常需要:
- 前向傳播
- 反向傳播
- 前向傳播
- 反向傳播
- …
單向流水線交替進行。
如此一來,計算與通信就無法跑滿,GPU會有pipeline bubbles。
而Dualpipe:
- 前向傳播與反向傳播同時進行;
- 計算與通訊同時進行(例如:前向傳播計算時,加載反向傳播所需的數(shù)據(jù));
從調度圖上能夠看出,pipeline bubbles大部分都被填滿了。工廠流水線上的單向傳送帶,升級成了雙向循環(huán)傳送帶。
另外,DualPipe的作者:
梁文峰赫然在列!
結尾
對于DualPipe,我的思考是:
其一,軟件的優(yōu)化和硬件的升級,一樣重要;
其二,為什么很多大公司AI搞不出來?
- 自己懂,必須自己下場;
- 自己不懂,就讓懂的人上;
- 如果又不懂,又占著資源,能搞得出來?
補充閱讀材料:
《DualPipe》:https://github.com/deepseek-ai/DualPipe可參考。