模型與訓練

MoE 專家混合架構是什麼?參數很大卻跑得很快的原因

MoE(Mixture of Experts,專家混合架構)是一種稀疏啟動的模型架構。它把模型拆成多個「專家」模組,前面放一個門控網路(Router)負責看輸入問題屬於哪一類,只叫醒最相關的少數幾位專家去算,其餘的保持休息,最後把被選中的專家結果加權合併成答案。因為每次只用到一小部分參數,模型總參數量可以做得非常大,實際運算成本與延遲卻遠低於同樣大小的傳統密集模型。
MoE 專家混合架構是什麼?參數很大卻跑得很快的原因:文章重點卡

MoE 專家混合架構是什麼?參數很大卻跑得很快的原因

你會看到某些模型號稱幾千億參數,回應卻很快、收費也不誇張。這通常不是誰在灌水,而是它用了 MoE 架構。

看懂這個詞,你就知道為什麼「參數大」跟「跑得慢」現在不必然畫等號。

你將學到什麼

定義

把模型拆成多位專家,由門控網路挑出最相關的少數幾位啟動。

白話比喻

像醫院的分診台,先判斷你該掛哪一科,只叫那幾位醫師來看。

為什麼重要

總參數可以很大,每次實際動用的只有一小部分,成本與延遲都降下來。

代價

工程複雜度高,容易出現某幾位專家過勞、其他人閒置的負載不均。

定義

MoE 是一種稀疏啟動的模型架構。它把模型拆成多個專家模組,並在前面放一個門控網路負責分配工作。

門控網路會替每位專家算一個相關性分數,挑出分數最高的前幾位啟動,其餘休息。最後把被選中的專家輸出加權合併,產生最終答案。

白話比喻

像你走進醫院掛號。分診台先聽你的症狀,判斷該看神經內科還是感染科。

醫院裡有幾十科醫師,但不會每一科都出來會診。只叫相關的那兩位,一樣看得好,成本卻低很多。門控網路做的就是分診台的事。

跟傳統密集模型差在哪?

比較項傳統密集模型MoE 稀疏模型
每次啟動所有參數都要算只啟動被選中的少數專家
運算量隨參數規模等比上升遠低於總參數所對應的量
速度與成本參數越大越慢越貴參數可以很大,單次仍相對便宜
記憶體載入等於實際使用仍需載入全部參數才能隨時調用

重點是這句話:參數量可以很大,但每次只用一小部分。這是 MoE 全部好處的來源,也是它工程難度的來源。

實際用例

你直接的體感是「同樣聰明但更快更便宜」。這也是近年愈來愈多頂尖大模型改採這個架構的原因。

設計上有幾個關鍵旋鈕:專家總數、每次啟動幾位(Top-K)、每位專家的容量上限,還有一個負載平衡的損失項,專門避免某幾位專家被操到爆而其他人整天閒著。

常見誤解

最常見的誤解是以為 MoE 可以省記憶體。省的是運算,不是容量:所有專家的參數都得在記憶體裡待命,隨時可能被叫到。自架模型時這一點很傷。

另一個誤解是把 MoE 當成取代 Transformer 的新架構。它其實是在 Transformer 裡替換掉某些層的做法,兩者是搭配關係,不是二選一。

本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

專家是指懂數學或懂法律的模組嗎?
只能算比喻。專家是訓練過程中自己分化出來的參數群組,不是有人手動指派「你負責法律」。分化出來的分工往往人看不太懂,用數學專家、程式專家來稱呼只是方便理解。
MoE 模型比較笨嗎?
不必然。它的設計目標是在保住大模型能力的前提下降低運算量。同樣的推論成本下,MoE 通常能塞進更多知識;但它對訓練技巧的要求高,做不好會有專家利用率低、訓練不穩的問題。
我用得到的模型有 MoE 嗎?
多數人不需要知道自己用的是哪一種架構,因為介面完全一樣。它會間接影響你感受到的速度與價格。真正需要分辨的時候通常是自架模型,這時要注意記憶體要吃下全部參數,即使每次只算一部分。