EPLB – DeepSeek 開源的專家并行負載均衡器
EPLB(Expert Parallelism Load Balancer)是一款由DeepSeek開發的專家并行負載均衡器,旨在解決大規模模型訓練中不同專家模型(Expert)之間負載不均的問題。EPLB采用冗余專家策略,通過復制高負載專家并合理分配至不同的GPU,從而實現負載均衡。此外,EPLB結合了group-limited expert routing技術,將同一組的專家放置在同一節點內,以減少跨節點的通信開銷。
EPLB是什么
EPLB(Expert Parallelism Load Balancer)是DeepSeek推出的一款專家并行負載均衡器,專門用于解決在大規模模型訓練中,各專家模型負載不均的問題。它通過冗余專家策略,復制負載較高的專家并合理分配到不同的GPU上,實現負載均衡。EPLB結合了group-limited expert routing技術,將同組專家安排在同一節點內,從而降低跨節點通信的開銷。EPLB提供了兩種負載均衡策略:分層負載均衡(Hierarchical Load Balancing)和全局負載均衡(Global Load Balancing),適用于不同的使用場景。通過優化專家模型的復制與分配,EPLB顯著提升了GPU資源的利用率和訓練效率。
EPLB的主要功能
- 負載均衡:根據專家的負載估計,動態調整復制和分配策略,確保不同GPU之間的負載差異最小化。
- 專家復制:通過冗余專家策略,復制高負載的專家,從而緩解負載不均的問題。
- 資源優化:最大限度地利用GPU資源,減少因負載不均而產生的性能瓶頸,提高訓練效率。
- 通信優化:通過合理的專家放置策略,降低節點間的通信開銷和延遲。
- 靈活的策略支持:提供層次化負載均衡和全局負載均衡兩種策略,以適應不同的場景和階段。
- 多層MoE模型支持:能夠處理復雜的多層混合專家模型,支持靈活的專家分配和映射。
EPLB的技術原理
- 冗余專家策略:在專家并行中,不同專家的負載因輸入數據和模型結構的差異而異。引入冗余專家(復制高負載專家)以平衡負載,支持高負載專家的多次復制和分散到多個GPU上,避免單一GPU的過載。
- 層次化負載均衡:將專家組均勻分配到不同的節點,確保每個節點的負載大致相等。在每個節點內,進一步復制專家并將其分配到該節點的GPU上,確保節點內部的負載均衡,盡量將同組專家放在同一節點內,以減少跨節點的通信開銷。
- 全局負載均衡:在節點數無法整除專家組數或需要更大規模并行的情況下,采用全局策略,忽略專家組的限制,將專家全局復制并分配到所有可用的GPU上。基于動態調整專家的復制數量和放置位置,確保全局負載均衡。
- 負載估計與動態調整:EPLB使用專家負載的估計值來指導負載均衡策略。負載估計基于歷史統計數據(如移動平均值)。根據負載估計值,動態調整專家的復制和分配策略,以適應不同的訓練階段和數據分布。
- 專家映射與資源分配:基于rebalance_experts函數生成的專家復制和放置計劃,將專家映射到具體的GPU上。輸出的映射關系包括物理到邏輯(phy2log)和邏輯到物理(log2phy)的映射,以及每個專家的復制數量(logcnt)。
EPLB的項目地址
- GitHub倉庫:https://github.com/deepseek-ai/eplb
EPLB的核心模式
- 層次化負載均衡模式(Hierarchical Load Balancing):在節點數能整除專家組數時,基于分層負載均衡策略,優化節點內和節點間的負載分配。
- 全局負載均衡模式(Global Load Balancing):在節點數無法整除專家組數或需要更大規模并行時,基于全局復制和分配專家,實現整體負載均衡。
EPLB的代碼演示示例
- 代碼示例展示了一個兩層MoE模型的實現,每層包含12個專家。每層引入4個冗余專家,總共16個副本分布在2個節點上,每個節點配備4個GPU。
EPLB的應用場景
- 大規模分布式訓練:適用于多節點、多GPU環境,靈活切換層次化或全局負載均衡模式,優化資源利用,減少通信開銷。
- 預填充階段:在模型訓練初期,基于層次負載均衡減少跨節點通信,提高小規模并行的效率。
- 解碼階段:在訓練后期需要大規模并行時,采用全局負載均衡動態調整負載,以應對復雜任務。
- 異構硬件環境:當節點數與專家組數不匹配時,全局負載均衡模式可以靈活適應異構配置,實現高效的負載均衡。
- 動態負載變化:針對訓練過程中負載的動態變化,結合層次化或全局負載均衡策略實時調整,以確保訓練過程的高效與穩定。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
相關文章
暫無評論...