DeepSeek今日連開3源!針對優化的並行策略,樑文鋒本人蔘與開發
按時整活!
DeepSeek開源周第四天,直接痛快「1日3連發」,且全都圍繞一個主題:
優化並行策略。
這三者中,DualPipe從時間上優化了計算與通信的調度,EPLB從空間上平衡利用計算資源,Profiling Data則提供了前兩者在實際應用中效果的可視化證據。
且DualPipe的開發團隊中包括樑文鋒本人。
發佈後10分鐘不到,3者在GitHub上的星標已經破300了,且其中DualPipe的星標飆升最快。
而DeepSeek一發推,網友的留言也排山倒海一般撲面而來,幾乎都是不吝溢美之詞:
Day 4,直接1日3連發
DualPipe
DualPipe是在DeepSeek-V3中首次出現雙向流水線並行算法,現在代碼完全開源。
它實現了前向與後向計算-通信階段的完全重疊,還減少了流水線氣泡(即某些設備在某些時刻空閒等待)。
DualPipe採用了雙向微批次調度策略,其核心特點是:
傳統流水線並行方法如1F1B(one-forward-one-backward)在處理多GPU場景時會產生大量氣泡。
DualPipe通過重新安排微批次執行順序,和對稱結構緩解這個問題。
EPLB
EPLB適用於V3/R1的專家並行負載均衡器,解決MoE模型在分佈式訓練和推理中的負載不平衡問題。
在MoE架構中,不同的輸入會激活不同的專家,可能導致某些專家過載,進一步造成不同GPU的利用率不平衡。
EPLB採用“redundant experts”(冗餘專家)策略:
識別高負載專家→複製多個副本分配到不同GPU→在推理時動態分配輸入到負載較輕的專家副本。
並帶有兩種普通的策略:
V3/R1中的計算通信重疊分析數據
開源第四彈的part 3,DeepSeek公開分享了來自訓練和推理框架的分析數據,以幫助社區更好地瞭解通信計算重疊策略和低級實現細節。
GitHub上註明,分析數據是使用PyTorch Profiler捕獲的。
下載後,開發者可以通過導航到Chrome瀏覽器中的chrome://tracing(或Edge瀏覽器中的edge://tracing)將它進行可視化。
Attention please——DeepSeek模擬了一個絕對平衡的MoE路由策略進行分析。
首先,訓練階段。
訓練配置文件數據演示了DeepSeek在DualPipe中,對一對單獨的向前和向後數據塊的重疊策略。
每個數據塊包含4個MoE 層。
並行配置與DeepSeek-V3預訓練設置一致EP64、TP1具有4K序列長度。
爲簡單起見,在profilng期間不包括PP通信。
其次,推理階段。
1)預填充。
對於預填充,配置文件使用EP32和TP1(與DeepSeek V3/R1的實際在線部署一致),提示長度設置爲4K,每個GPU的批量大小爲16Ktokens。
在預填充階段,DeepSeek利用兩個微批次來重疊計算和多對多通信,同時確保注意力計算負載在兩個微批次之間平衡
——這意味着相同的提示可以在它們之間分配。
2)解碼。
(注:相關數據尚未準備就緒,將於稍後發佈)
解碼方面,該配置文件採用了EP128、TP1和4K的提示長度(與實際在線部署配置非常匹配),每個GPU的批量大小爲128個請求。
與預填充類似,解碼還利用兩個微批處理進行重疊計算和多對多通信。
但與預填充不同的是,解碼期間的all-to-all通信不會佔用GPU SM:
發出RDMA消息後,所有GPU SM都會被釋放,系統在計算完成後等待all-to-all通信完成。
有關all-to-all實現的更多信息,請參考開源周第二彈DeepEP。
One More Thing
“大放異彩!”
對於第四彈的開源內容,網友是這麼感慨的。
目前看來,DeepSeek開源周的前4天,都挺令追更羣衆們滿意。
尤其是這次開源周全部瞄準大模型的Infra層。
追更看客們表示:
好了,DeepSeek開源周,明天就是最後一天了,不知道會有什麼壓軸登場?
掃碼備註「DeepSeek-職業/姓名」加入羣聊,一起第一時間直擊DeepSeek開源周最後一彈!
參考鏈接:https://x.com/deepseek_ai/status/1894931931554558199
Github:[1]https://github.com/deepseek-ai/DualPipe[2]https://github.com/deepseek-ai/eplb[3]https://github.com/deepseek-ai/profile-data