MoE 混合專家:為什麼大模型可以又大又快

artificial%20intelligence%20concept%2C%20digital%2...
發表時間:2026 年 10 月 21 日 | 更新日期:2026 年 10 月 21 日 | 編輯:雅寶社區編輯團隊
MoE 混合專家:為什麼大模型可以又大又快 - 雅寶社區 · 頂客論壇

1991 年,Jacobs、Jordan、Hinton 等人提出了「自適應局部專家混合」(Adaptive Mixtures of Local Experts)的概念。當時的想法很樸素:把一個複雜任務拆給多個子網路(專家),再由一個「閘控網路」(Gating Network)決定每個輸入該交給哪些專家處理。這在當時的機器學習規模下並沒有引起太大波瀾,因為那時的模型本來就不大,「分工」帶來的效益有限。

直到 2017 年,Google 的 Shazeer 等人發表了稀疏閘控 MoE 層(Sparsely-Gated Mixture-of-Experts Layer),把這個概念接上了深度學習與大規模分散式訓練,MoE 才真正開始發光。2021 年的 Switch Transformer 把參數推到 1.6 兆,更是讓業界意識到:原來模型可以這樣「虛胖」。

專家網路與路由器的分工

一個標準的 MoE 層,主要由兩個部分組成:

  • 專家網路(Experts): 一組彼此獨立的前饋網路(FFN),每個專家有自己的參數。它們就像是公司裡不同專長的部門,有人擅長數學、有人擅長語言、有人擅長程式碼。
  • 路由器(Router / Gating Network): 一個小型的線性層,負責接收 token 的向量表示,算出每個專家的「匹配分數」,再決定要把這個 token 送到哪幾個專家。
  • 關鍵在於:路由器通常只挑選前 k 個專家(Top-k),而 k 遠小於專家總數。比如說有 64 個專家,每次只選 2 個。這就形成了「稀疏激活」——參數很多,但每個 token 只走其中一條窄路。

    一個 Token 的旅程

    我們可以用一個具體流程來理解 MoE 層內部發生的事:

    一個 token 經過前面的注意力層後,得到一個向量表示。

    路由器計算這個向量與各專家的匹配分數,例如透過一次線性變換得到 logits。

    對分數做 Softmax,取出分數最高的 k 個專家,並把其他專家的權重設為 0。

    將 token 分別送進這 k 個專家計算,得到 k 個輸出。

    把這 k 個輸出依照路由器的權重加權相加,作為這一層的最終輸出。

    把輸出送回殘差連接,繼續往下一層前進。

    整個過程裡,絕大多數專家的參數從頭到尾都沒有被讀取、沒有被計算。這就是 MoE 效率的來源。

    三、稀疏激活:又大又快的關鍵機制

    如果說 MoE 只有一句話值得記住,那就是:它把「參數總量」與「計算量」解耦了。

    參數量與計算量的解耦

    在稠密模型裡,這兩者幾乎是等號關係;在 MoE 裡,它們被拆成了兩個獨立可調的旋鈕:

  • 總參數量:由專家的數量與每個專家的規模決定,代表模型的「知識容量」上限。
  • 激活參數量:由每次選幾個專家(Top-k)決定,代表單次前向傳播的「計算成本」。
  • 你可以設計一個擁有 6000 億總參數、但每次只激活 300 億參數的模型。它的知識容量接近兆級模型,運算成本卻接近百億級模型。這就是「又大又快」的數學基礎。

    用比較學術的說法:MoE 讓模型在「參數維度」上持續擴張,卻讓 FLOPs(浮點運算次數)維持在可控範圍。對於記憶體頻寬與算力日益珍貴的推理場景,這是一個非常划算的交易。

    用數字說話:Mixtral 與 DeepSeek 的例子

    來看幾個具體案例,會更清楚這個機制的威力:

  • Mixtral 8x7B: 總參數約 467 億,但每個 token 只激活約 129 億參數。它的表現普遍被拿來與規模更大的稠密模型比較,而推理速度卻接近 130 億級模型。
  • DeepSeek-V2: 總參數 2360 億,每個 token 激活約 210 億。官方資料顯示,相較於同等表現的稠密模型,它在推理成本上有顯著優勢。
  • DeepSeek-V3: 總參數 6710 億,每個 token 僅激活 370 億。這個「總參數是激活參數 18 倍」的比例,正是 MoE 稀疏性的極致體現。
  • 這些數字說明了一件事:MoE 不是「把模型變大所以變強」,而是「用更少的計算去換取更大的知識容量」。這是一個效率上的勝利,而不是單純的規模競賽。

    四、MoE 的工程細節:魔鬼藏在路由裡

    看到這裡,你可能會覺得 MoE 聽起來太美好了。但實際上,訓練一個 MoE 模型比訓練稠密模型困難得多。原因在於「路由」這個動作引入了大量不確定性,而分散式系統最怕的就是不確定性。

    負載平衡與輔助損失

    第一個大問題是「專家坍縮」。因為路由器是可學習的,它很容易學到「某幾個專家特別好用」的捷徑,於是把大量 token 都往那幾個專家塞。結果就是:少數專家被操到爆,多數專家閒著沒訓練到。這不但浪費參數,還會讓訓練極不穩定。

    解決方案是在損失函數中加入「負載平衡損失」(Load Balancing Loss)。常見做法是計算每個專家被分配到的 token 比例,以及路由器給每個專家的平均機率,然後強制這兩個分布接近均勻。這樣做會稍微犧牲一點任務表現,但能換來訓練的穩定性與參數的有效利用。

    實務上還有一種做法叫「專家容量限制」(Expert Capacity),也就是給每個專家設定一個能處理的 token 上限,超過的就丟棄或繞過。這讓記憶體使用量可預測,也強迫路由器分散流量。

    容量因子與 Token 丟棄

    容量因子(Capacity Factor)是一個很容易被忽略、但影響很大的超參數。它決定了每個專家最多能接收多少 token。設定太低,會有很多 token 被丟棄(直接跳過該層),影響模型品質;設定太高,又會浪費記憶體與算力。

    近年來的研究傾向於設計更智慧的路由機制,例如「無丟棄」(dropless)方案、或是讓路由器考慮全域資訊再分配。這些改進讓 MoE 在保持稀疏性的同時,減少了 token 浪費。

    專家平行與 All-to-All 通訊

    第二個大問題是通訊。當專家分散在不同 GPU 上時,每個 token 都需要被「送到」對應的 GPU 去計算,再「送回」原本的位置。這個過程涉及大量的 All-to-All 通訊,對頻寬要求極高。

    因此,MoE 的訓練與部署非常依賴良好的網路拓撲與通訊排程。這也是為什麼 MoE 模型通常只能在具備高速互連的叢集上高效運行。換句話說,MoE 省下的是「計算」,但可能增加了「通訊」的成本,兩者必須一起評估。

    五、MoE 的優勢與代價

    任何技術都有它的適用邊界,MoE 也不例外。以下把它的優勢與代價攤開來看。

    優勢:算力效率、擴展性與專業化潛力

  • 算力效率高: 同等計算預算下,MoE 通常能達到比稠密模型更好的表現。這在 Scaling Law 研究中已被多次驗證。
  • 擴展性強: 想讓模型更強,可以增加專家數量而不必同比例增加計算量,這讓「繼續往上擴」變得經濟可行。
  • 潛在的專業化: 理論上,不同專家可以學到處理不同類型的輸入(例如不同語言、不同領域),形成某種「分工」。雖然這種專業化未必如人類直覺般涇渭分明,但確實提供了模型容量上的冗餘與彈性。
  • 推理延遲可控: 因為每次只激活少數專家,單 token 的計算量被壓低,對於需要低延遲的應用很有吸引力。
  • 代價:記憶體、通訊與訓練不穩定性

  • 記憶體需求大: 雖然計算量小,但推理時所有專家的參數仍然必須載入記憶體(或至少可快速存取)。總參數 6000 億的模型,就是需要 6000 億參數的儲存空間,這一點不會因為稀疏激活而消失。
  • 通訊開銷高: 如前述,All-to-All 通訊在分散式環境下是主要瓶頸之一。
  • 訓練穩定性較差: 路由的離散選擇、負載不平衡、專家坍縮等問題,都讓訓練曲線比稠密模型更難預測。
  • 微調與部署較複雜: 要對 MoE 模型做參數高效微調(PEFT),需要額外考慮專家層的處理方式;部署時也需要針對專家分佈做特殊的記憶體管理。
  • 總結一句:MoE 用「記憶體」與「工程複雜度」換「計算效率」。 它是否划算,取決於你的硬體條件與應用場景。

    六、MoE 的發展脈絡與代表模型

    回顧 MoE 的發展,可以看出它是一條「從理論到工程、從稀疏到更稀疏」的演進路線。

  • 2017 年: Shazeer 等人提出稀疏閘控 MoE,首次在大規模語言模型上驗證可行性。
  • 2020 年: GShard 將 MoE 應用於多語言翻譯,展示了專家平行訓練的工程方法。
  • 2021 年: Switch Transformer 將專家數與參數量推到極致(1.6 兆參數),並簡化為每個 token 只選一個專家(Top-1),大幅降低路由複雜度。同年 GLaM 也展示了 MoE 在能效上的優勢。
  • 2023 年: Mixtral 8x7B 以開源形式釋出,讓社群第一次能大規模實測 MoE 的威力。
  • 2024 年後: DeepSeek-V2/V3、Qwen 系列、以及多家廠商的旗艦模型陸續採用 MoE 架構,並在路由策略、專家粒度、通訊優化上持續改進。
  • 值得注意的是,業界對於「旗艦模型是否採用 MoE」的討論一直很熱烈。雖然部分廠商並未公開架構細節,但從推理成本與模型規模的公開資訊來看,MoE 已成為大模型擴展的主流路線之一。

    七、實務應用:什麼時候該選 MoE?

    如果你正在評估要採用 MoE 架構,或是要選擇一個 MoE 模型來部署,以下幾個面向值得優先考慮。

    推理部署的考量

    MoE 模型最大的部署優勢是「計算量小」,最大的挑戰是「記憶體佔用大」。因此:

    如果你的瓶頸是 GPU 算力與延遲,MoE 通常很划算。

  • 如果你的瓶頸是 顯示記憶體容量,MoE 可能反而讓你頭疼,因為你必須把所有專家都放進記憶體或做有效的卸載排程。
  • 如果你的場景是 高吞吐、低延遲的 API 服務,MoE 的稀疏計算特性通常能帶來更好的單位成本效益。
  • 微調與客製化

    對 MoE 模型做領域微調時,有幾個實務建議:

  • 優先考慮 LoRA 等參數高效方法,並確認框架支援 MoE 層的路由器與專家參數。
  • 注意 專家使用分佈,如果微調資料過於單一,可能導致某些專家被過度使用,反而破壞原本的平衡。
  • 評估是否需要 凍結路由器,以避免微調過程中路由行為劇烈改變。

    另外,選擇 MoE 模型時,不要只看「總參數量」,更要看「激活參數量」與「專家數量」。總參數決定知識容量上限,激活參數決定運算成本,兩者要一起看才有意義。

    八、常見誤解與快問快答

    Q1:MoE 模型是不是每個 token 只用到很少參數,所以比同總參數的稠密模型笨?

    不能這樣比。MoE 的比較基準應該是「同等計算量」的稠密模型,而不是「同等總參數量」的稠密模型。在相同 FLOPs 下,MoE 通常表現更好;但若與總參數量相同的稠密模型硬碰硬,由於每次只激活一小部分,MoE 未必佔優。

    Q2:MoE 的專家真的會「各司其職」嗎?

    部分研究顯示,專家確實會對某些語法或語意特徵產生偏好,但這種專業化通常不像人類想像中那麼乾淨俐落。多數情況下,專家的分工是統計意義上的,而非明確的領域劃分。

    Q3:MoE 是不是只有大公司玩得起?

    訓練大型 MoE 確實需要可觀的資源與工程能力,但隨著開源模型與訓練框架的成熟,中小團隊也能透過微調或部署現有 MoE 模型來受益。重點是理解它的成本結構,而不是盲目追求參數量。

    Q4:MoE 會取代稠密模型嗎?

    短期內不會。稠密模型在訓練穩定性、部署簡單性與記憶體效率上仍有優勢。MoE 更像是提供了另一種取捨曲線,讓開發者可以依照場景選擇。未來兩者很可能長期並存,甚至在混合架構中互補。

    九、結語:MoE 的真正意義

    MoE 之所以重要,不只是因為它讓模型「又大又快」,更因為它改變了我們對「模型規模」的思考方式。過去我們習慣用參數量來衡量一個模型有多強,但 MoE 提醒我們:真正決定能力與成本的,不是參數總量,而是「有多少參數在什麼時候被用到」。

    這種「按需調度」的思路,其實與電腦科學中快取、分散式運算、資源池化等概念一脈相承。它把模型從一個靜態的巨型函數,變成一個具有內部路由機制的動態系統。而隨著路由演算法、通訊優化與硬體支援的持續進步,MoE 的效率邊界還會繼續往外推。

    對開發者與企業而言,理解 MoE 的關鍵不在於記住哪個模型有多少參數,而在於掌握它的取捨邏輯:用記憶體換算力、用工程複雜度換擴展彈性。 只要把這條邏輯想清楚,你就能在眾多模型與架構之間,做出真正適合自己場景的選擇。

    下一次當你看到某個模型宣稱「擁有數千億參數」時,不妨多問一句:它每次推理激活了多少?這一句追問,往往就是看懂大模型成本結構的起點。

    ```

    🏠 返回首頁