想做大模型開發前,先來了解一下MoE

华为云开发者联盟發表於2024-03-04

為了實現大模型的高效訓練和推理,混合專家模型MoE便橫空出世。

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

MoE結構的發展

Vanilla MoE

想做大模型開發前,先來了解一下MoE

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

Sparse MoE

想做大模型開發前,先來了解一下MoE

Experts的輸出是稀疏的,只有部分的 experts 的權重> 0,其餘=0 的 expert 直接不參與計算

Expert Balancing問題

不同 experts 在競爭的過程中,會出現“贏者通吃”的現象:前期變現好的 expert 會更容易被 gating network 選擇,導致最終只有少數的幾個 experts 真正起作用

Transformer MoE

GShard

想做大模型開發前,先來了解一下MoE
  • Transformer的encoder和decoder中,每隔一個(every other)FFN層,替換成position-wise MoE層
  • Top-2 gating network

Switch Transformer

想做大模型開發前,先來了解一下MoE

簡化了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

想做大模型開發前,先來了解一下MoE
  • RoPE
  • RMSNorm
  • Transformer decoder
  • Grouped Multi-Query Attention
  • Sliding window attention: 最佳化隨著序列長度增加而增長的視訊記憶體佔用和計算消耗
想做大模型開發前,先來了解一下MoE

Mixtral

想做大模型開發前,先來了解一下MoE
  • 8個expert(類GPT-4)
  • Top2 gating

MoE Layer的MindSpore實現

想做大模型開發前,先來了解一下MoE

Mindformers的Mixtral支援

想做大模型開發前,先來了解一下MoE
  • 基於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
想做大模型開發前,先來了解一下MoE

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
想做大模型開發前,先來了解一下MoE
  • 擴充套件expert和gating network的維度
  • 凍結舊的expert和gating network維度
  • 使用正則克服遺忘災難

Pangu-sigma

想做大模型開發前,先來了解一下MoE

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/

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章