DeepSeek 開源 EPLB,世界上從來沒有什么騰空出世!
deepseek開源DualPipe的同一天,還開源了EPLB。今天來簡單聊聊EPLB,包懂。
1. EPLB是干嘛的?
EPLB,Expert Parallelism Load Balancer,是一個動態(tài)負載均衡算法。
在使用專家并行EP時,不同專家會被分配到不同的GPU,而這些GPU的負載可能不均衡,此時就需要EPLB啦。
(1) 什么是專家并行EP?
專家并行EP,Expert Parallelism,是一種針對混合專家MOE設計的分布式并行技術。
(2) 什么是混合專家MOE?
混合專家MOE,Mixture of Experts,是deepseek大模型的核心創(chuàng)新應用,該模型思路不再追求大而全,轉而追求多而專精。
關于混合專家MOE,詳見:《通俗講解deepseek - MOE(3)》
混合專家MOE與專家并行EP,deepseek之前開源了其核心通訊庫,詳見:《通俗講解deepseek開源 - DeepEP(10)》
2. EPLB是怎么做到負載均衡的?
EPLB像一個智能調度員,根據(jù)不同的場景調度專家進行計算,其負載均衡算法包含兩類核心策略。
第一類:分級負載均衡。
使用場景:預填充階段(prefilling stage),規(guī)模較小,服務器節(jié)點數(shù)(server nodes)能被專家組數(shù)(expert groups)整除的情況。
策略步驟:
- 專家組分配(pack to)到節(jié)點,保證節(jié)點負載均衡;
- 節(jié)點內復制專家;
- 專家分配到GPUs,保證GPUs負載均衡;
第二類:全局負載均衡。
使用場景:解碼階段(decoding stage),規(guī)模較大的情況。
策略步驟:
- 全局復制專家,不管專家在哪個組;
- 專家分配到GPUs,保證GPUs負載均衡;
總而言之,保證負載均衡,充分發(fā)揮GPUs的潛力,提升訓練效率,縮短訓練時間。
3. 舉個實際的例子?
DeepSeek-V3訓練部署:
- 2048個NVIDIA H800;
- 256個服務器節(jié)點(每節(jié)點8GPU);
- 專家組數(shù)為64(EP-64);
接下來進行訓練:
- 預填充階段,一個專家組,例如Java+ FE+ QA+OP分配4個服務器節(jié)點,保證節(jié)點資源分配均衡;
- 專家冗余策略,當發(fā)現(xiàn)某個GPU負載超過閾值時,復制專家副本,分配到新的GPU。也就是說,Java成為項目瓶頸時,我們就組內復制多個Java;
- 原則上專家組之間避免全局通訊,而在有限節(jié)點內通訊,降低全局通訊壓力;
畫外音:全局通訊復雜度會指數(shù)級上升,只需要少量跨組協(xié)同。
- 解碼階段,需要大量QA工程師,這個時候切換為全局策略,忽略專家組物理拓撲限制,跨節(jié)點全局復制QA工程師,加速項目進度;
總的來說,幾個核心設計思路:
- 分級調度策略:先節(jié)點均衡,再GPU均衡;
- 冗余專家策略:誰是瓶頸復制誰,保證均衡;
- 就近通訊策略:減少全局通訊;
- 動態(tài)切換策略:高峰期打破限制;
分級,冗余,就近,動態(tài)... 工程架構領域,哪有什么新鮮事,可偏偏在deepseek手里大放異彩。
. 一些啟示
通過deepseek的一系列開源:
哪一個是驚世駭俗?
- MLA:對顯卡計算加速;
- DeepEP:對通訊加速;
- GEMM:對矩陣乘法加速;
- DualPipe:對前向/反向傳播加速;
- EPLB:負載均衡充分利用資源;
- 3FS:文件系統(tǒng)加速(明天講解);
- ...
世界上哪有什么騰空出世,deepseek的成功,完全出自一天天的腳踏實地,一天天的日積月累之中。積跬步,至千里。人的成功,也一樣。諸君共勉!