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