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