為了實現大模型的高效訓練和推理,混合專家模型MoE便橫空出世。
大模型發展即將進入下一階段但目前仍面臨眾多難題。為滿足與日俱增的實際需求,大模型引數會越來越大,資料集型別越來越多,從而導致訓練難度大增,同時也提高了推理成本。為了實現大模型的高效訓練和推理,混合專家模型MoE便橫空出世。
MoE結構的發展
Vanilla MoE

Export Network,用於學習不同資料,一個Gating Network用於分配每個Expert的輸出權重。
Sparse MoE

Experts的輸出是稀疏的,只有部分的 experts 的權重> 0,其餘=0 的 expert 直接不參與計算
Expert Balancing問題
不同 experts 在競爭的過程中,會出現“贏者通吃”的現象:前期變現好的 expert 會更容易被 gating network 選擇,導致最終只有少數的幾個 experts 真正起作用
Transformer MoE
GShard

- Transformer的encoder和decoder中,每隔一個(every other)FFN層,替換成position-wise MoE層
- Top-2 gating network
Switch Transformer

簡化了MoE的routing演算法,gating network 每次只 route 到 1 個 expert
GLaM
- Gshard結構
- Scale引數量
- 降低訓練推理成本
MoE的分散式通訊和MindSpore最佳化
MoE結構和普通的Dense模型的差異在於,其需要額外的AllToAll通訊,來實現資料的路由(Gating)和結果的回收。而AllToAll通訊會跨Node(伺服器)、跨pod(路由),進而造成大量的通訊阻塞問題
MindSpore的MoE最佳化
大模型訓練主要瓶頸在於片上記憶體與卡間通訊。常用的記憶體最佳化手段:
1)MoE並行:將不同的專家切分到不同的卡上,由於MoE的路由機制,需要使用AllToAll通訊,將token傳送到正確的卡上。對AllToAll的最佳化:分級AllToAll、Group-wise AllToAll等。
2)最佳化器異構:大模型訓練常使用的adam系列最佳化器,其佔用的記憶體往往是模型引數本身的2倍或以上,可以將最佳化器狀態儲存在Host記憶體上。
3)多副本並行:將序列的通訊、計算拆分成多組,元件流水,掩蓋通訊時間。
MindSpore已使能上述最佳化,大幅提升了萬億引數稀疏模型的訓練吞吐
Mixtral 8x7b MoE大模型
Mixtral的基礎模型Mistral

- RoPE
- RMSNorm
- Transformer decoder
- Grouped Multi-Query Attention
- Sliding window attention: 最佳化隨著序列長度增加而增長的視訊記憶體佔用和計算消耗

Mixtral

- 8個expert(類GPT-4)
- Top2 gating
MoE Layer的MindSpore實現

Mindformers的Mixtral支援

- 基於MindFormers實現Mixtral-8x7B MoE模型。關鍵結構: GQA, RoPE, RMSNorm, SiluMoE配置: 8 Experts, TopK=2, capacity c=1.1載入開源的Mixtral權重和tokenizer,推理結果對齊HF.
- 4機32卡EP,PP等多維混合並行,基於自有資料集試驗性訓練收斂符合預期。200 epoch loss 100.02

EP=8,MP=1時效能最佳,約1147 tokens/s/p。
MoE和lifelong learning
終身學習/持續學習的性質
性質 |
定義 |
知識記憶(knowledge retention) |
模型不易產生遺忘災難 |
前向遷移(forward transfer) |
利用舊知識學習新任務 |
後向遷移(backward transfer) |
新任務學習後提升舊任務 |
線上學習(online learning) |
連續資料流學習 |
無任務邊界(No task boudaries) |
不需要明確的任務或資料定義 |
固定模型容量(Fixed model capacity) |
模型大小不隨任務和資料變化 |
MoE模型+終身學習
性質 |
|
知識記憶(knowledge retention) |
√ |
前向遷移(forward transfer) |
√ |
後向遷移(backward transfer) |
- |
線上學習(online learning) |
× |
無任務邊界(No task boudaries) |
√ |
固定模型容量(Fixed model capacity) |
√ |
MoE的特點:
- 多個Expert分別處理不同分佈(domain/topic)的資料
- 推理僅需要部分Expert
LLM的終身學習:
- 世界知識底座持續學習。
- Expert可插拔
- Gating Network可增刪。
MoE+終身學習的典型工作
- Lifelong-MoE

- 擴充套件expert和gating network的維度
- 凍結舊的expert和gating network維度
- 使用正則克服遺忘災難
Pangu-sigma

Random Routed Experts:
- 第一層,根據任務分配給不同的專家組(多個expert構成一個專家組,供一個task/domain使用)
- 第二層,使用組內隨機Gating,讓專家組的expert可以負載均衡。
這樣可以保證某個領域對應的expert可以直接被抽取出來作為單個模型使用。
Mixtral 8x7b Demo
Mistral-MindSpore: https://github.com/lvyufeng/mistral-mindspore
Mindformer(MoE預訓練):https://gitee.com/mindspore/mindformers/
點選關注,第一時間瞭解華為雲新鮮技術~