---
# System prepended metadata

title: '混合專家模型（Mixture of Expert, MOE）'
tags: [架構設計, 深度學習]

---

## 介紹 Mixture of Expert (MOE)
混合專家模型（MoE）是一種機器學習技術，起源於1991年的「Adaptive Mixture of Local Experts」論文，其設計靈感在於將複雜任務分解為多個子問題，並交由專門的「專家」子模型處理，這種方法的核心在於利用一個門控網絡（gating network）來動態分配輸入數據，讓每個專家專注於自己擅長的領域，從而提升整體模型的性能與效率。

![image](https://hackmd.io/_uploads/BJci_E-sye.png)

## 什麼是專家（Expert）以及門控網絡（Gating network）？
在語言模型中，MoE 通常被整合進 Transformer 架構中，取代傳統的前饋網絡層（Feedforward Neural Network, FNN），門控網絡會根據每個輸入標記的特徵，選擇最適合的專家進行處理，這種稀疏激活的設計使得模型能在保持高效計算的同時，擁有數以萬億計的參數。

* 專家：通常由 FFN 組成，且每個專家是一個獨立的子網絡，可能具有不同的結構或參數配置。
* 門控網絡：根據輸入特徵選擇少數專家來參與計算，例如選擇前 k 個得分最高的專家（top-k gating），或使用 softmax 門控選擇少數專家，而未被選中的專家則不執行計算。

MoE 模型透過將任務分配給多個「專家」子模組來提高大型深度學習任務的處理效率，例如在語言模型中，MoE 架構可以更有效地處理輸入並生成輸出。

## 實際案例：Mixtral-8x7B vs. Llama2-70B
### Mixtral-8x7B
Mixtral 採用僅解碼器（decoder-only）的 Transformer 架構，其中每個前饋塊（FeedForward block）並非固定的單一參數組，而是由 8 個不同的專家（Experts）組合而成，這些專家各自擁有獨立的參數集，專門處理特定的輸入特徵。

路由器（Router）會根據當前標記的特徵，從 8 個專家中選擇兩個最適合的專家進行處理，並將這兩個專家的輸出相加，作為該層對該標記的最終輸出。​

由於 SMoE 設計，每次處理一個 token 時僅使用 12.9B（129億）個參數，這使得其推理成本和延遲與 12.9B 參數的模型相當，大幅提高了效率，從而在增加模型總參數的同時，有效控制了計算成本和延遲。

![image](https://hackmd.io/_uploads/Bkp5X9GiJe.png)

:::info
需要注意的是，雖然模型名稱為 "8x7B"，但這並不意味著總參數量為 8 個 70 億參數的簡單相加（即 560 億）。​實際上，只有 Transformer 中的前饋塊被擴展了 8 倍，其他部分保持不變，因此總參數量約為 467 億。
:::

### Llama2-70B
Llama2-70B 是由 Meta AI 開發的一款大型語言模型，基於傳統的 Transformer 架構，採用密集（dense）設計，與 Mixtral-MoE 最大不同之處在於，它的參數在處理每個輸入時都會被全面使用，沒有動態選擇機制的特性。

### Mixtral-8x7B 和 Llama2-70B 性能比較
下方表格比較了 Mixtral-8x7B 和 LLaMA 2 系列模型在多項基準測試（benchmarks）中的表現，並特別強調了它們在不同規模的「活躍參數數量（Active Params）」下的性能差異，這些測試涵蓋了常識推理、數學計算、程式碼生成和語言理解等不同類型的任務。

![image](https://hackmd.io/_uploads/BJLAD9Goyl.png)

## MOE 主要優勢與挑戰
### 優勢
1. 計算效率提升：每次僅啟動部分專家，降低整體計算成本。
1. 參數規模擴展性：可輕鬆擴展至數兆級參數，而不顯著增加計算需求。
1. 推理加速與可伸縮性：可根據資源條件動態調整專家選擇，提高推理效率。
1. 模型能力提升：不同專家可專門學習特定類型的輸入，提高模型的泛化能力。

### 挑戰
* 負載不均衡：部分專家可能被過度使用，而其他專家則幾乎不被選擇。
* 訓練不穩定性：門控網路的離散選擇使梯度更新不平穩，影響模型收斂。
* 通信與記憶體開銷：專家網路通常需要跨設備通信，可能導致延遲和額外開銷。
* 實現與調試難度高：門控策略與專家分配方式影響性能，需要精細調參。

---
:::info 
以上就是這篇文章「Mixture of Expert (MOE)」的所有內容，第一次看的人會花比較多時間消化吸收，這是很正常的事情，若有任何問題，歡迎在下方與我聯繫、討論，接下來也會繼續分享相關文章，敬請期待。