模型層 開放閱讀

SwiGLU

Swish-Gated Linear Unit

概念 ID
swish-gated-linear-unit
更新時間
2026-05-29
來源數量
待補

SwiGLU(Swish-Gated Linear Unit)

3 秒看懂

SwiGLU 是一種帶門控機制的啟用函式,用於替代 Transformer 前饋網路(FFN)中的 ReLU/GELU。核心思想:用 Swish 啟用作為”門”,對輸入做逐元素乘法篩選資訊,再線性投影輸出。它讓 FFN 的引數量從 2 個矩陣變為 3 個矩陣,但通過縮小隱層維度(通常取 8/3 × d_model)保持總引數量基本不變。當前絕大多數主流開源 LLM(LLaMA 系列、Mistral、Qwen、DeepSeek 等)均已採用 SwiGLU 作為預設 FFN 啟用。

3 分鐘產業解釋

為什麼這件事重要?

Transformer 的前饋網路(FFN)佔模型總引數的 約 2/3,是決定模型”知識容量”的核心模組。FFN 裡選什麼啟用函式,直接決定了:

  • 訓練收斂速度:更好的啟用函式 → 更快收斂 → 節省算力成本
  • 最終效能上限:相同引數量下,啟用函式質量決定 perplexity
  • 工程相容性:是否容易在現有 GPU/TPU 上高效實現

SwiGLU 由 Google 研究員 Noam Shazeer 在 2020 年提出(arXiv:2002.05202),通過系統性對比實驗,發現在相同引數預算下,SwiGLU 在語言建模任務上顯著優於 ReLU 和 GELU。這篇論文雖然技術不復雜,但影響極為深遠——自 2023 年 LLaMA 釋出後,SwiGLU 幾乎成為所有新建大型模型的”標配”。

產業影響鏈條

啟用函式改進 → 同參數量下模型更聰明 → 降低訓練總成本 → 加速大型模型民主化

                                     SwiGLU 成為行業事實標準

                               晶片廠商最佳化 SwiGLU 運算元(融合 kernel)

15 分鐘專家深入

1. SwiGLU 的精確數學定義

給定輸入向量 x ∈ ℝ^{d_model},標準 Transformer FFN 為:

FFN(x) = W₂ · σ(W₁x + b₁) + b₂

其中 σ 是啟用函式(ReLU、GELU 等),W₁ ∈ ℝ^{d_ff × d_model},W₂ ∈ ℝ^{d_model × d_ff}。

GLU 家族(Dauphin et al., 2017)引入門控,將 FFN 改為:

GLU(x) = (σ_gate(xW_gate)) ⊙ (xW_up)
FFN_GLU(x) = ((σ_gate(xW₁)) ⊙ (xW₃)) W₂

其中 ⊙ 為逐元素乘法(Hadamard product),σ_gate 是門控路徑的啟用函式。

SwiGLU 將 σ_gate 指定為 Swish/SiLU

Swish(x) = x · sigmoid(x)      (β=1 的特殊情況)

因此:

FFN_SwiGLU(x) = (Swish(xW₁) ⊙ xW₃) W₂

關鍵變化:FFN 從 2 個權重矩陣變為 3 個(W₁、W₃、W₂)。

2. 隱層維度的調整

標準 FFN(2 矩陣)引數量:

P_std = 2 × d_model × d_ff

SwiGLU FFN(3 矩陣)引數量:

P_swiglu = 3 × d_model × d_ff'

為使 P_swiglu ≈ P_std,令:

3 × d_model × d_ff' = 2 × d_model × d_ff
→ d_ff' = (2/3) × d_ff

當標準 FFN 取 d_ff = 4 × d_model 時:

d_ff' = (2/3) × 4 × d_model = 8/3 × d_model ≈ 2.667 × d_model

實踐中的取整:LLaMA 系列通常將 d_ff 取整到 256 的倍數(或適配 GPU tensor core 的對齊要求),例如 LLaMA-7B 的 d_model=4096,d_ff=11008(≈ 2.687 × 4096,向上取整到 256 倍數)。

3. Swish/SiLU 啟用函式特性

Swish(x) = x · sigmoid(x) = x / (1 + e^{-x})
Swish'(x) = sigmoid(x) + x · sigmoid(x) · (1 - sigmoid(x))
          = sigmoid(x) · (1 + x · (1 - sigmoid(x)))

關鍵性質:

性質ReLUGELUSwish/SiLU
非單調是(左側有微小下降)是(x ≈ -1.28 處有極小值)
下界0無嚴格下界≈ -0.278(在 x ≈ -1.28)
上界
x→-∞ 極限000
x→+∞ 行為線性線性線性
在 0 處的導數不可微(導數為 0)≈ 0.50.5
是否可微否(0 點)
是否平滑

Swish 的”非單調”特性被認為是其有效性的關鍵——允許門控路徑輸出負值,從而主動”關閉”某些特徵通道,而非簡單地”通過或截斷”。


技術原理(最深)

門控 FFN 的資訊流機制

                    輸入 x ∈ ℝ^{d_model}
                    /                  \
                   /                    \
            xW₁ (Gate Proj)         xW₃ (Up Proj)
            ∈ ℝ^{d_ff}              ∈ ℝ^{d_ff}
                |                        |
         Swish(·)                         |
         (非線性變換)                      |
                |                        |
                +--- ⊙ (Hadamard) ------+
                |                        |
                ↓                        ↓
              z ∈ ℝ^{d_ff}    (門控後的隱表示)
                    |
               zW₂ (Down Proj)
               ∈ ℝ^{d_model}
                    |
                輸出 y

直覺理解

  • W₁ 路徑(Gate):學習”哪些維度/特徵在當前上下文中有用”,Swish 平滑地控制開/關/中間狀態
  • W₃ 路徑(Up):學習”將輸入變換到隱層空間的表示”
  • ⊙ 操作:門控乘法實現軟特徵選擇——不是 0/1 硬門,而是連續值軟門
  • W₂ 路徑(Down):將篩選後的隱表示投影回 d_model 空間

與 ReLU FFN 對比:ReLU 的硬截斷(負值置零)相當於一個不可微的硬門,梯度在負半軸完全消失。SwiGLU 的門控允許資訊的精細調控

為什麼門控 FFN 有效?(理論直覺)

  1. 資訊瓶頸視角:兩個獨立路徑(Up 和 Gate)各自學習互補的表示,Hadamard 乘法強制它們”協商”——這比單路徑 FFN 的表達能力更強。

  2. MoE 的連續近似:GLU 門控可以看作一種連續的、共享的專家路由——每個維度相當於一個”微專家”,門控值決定其”參與度”。

  3. 梯度流改善:Swish 的光滑性(無不可微點)+ 門控乘法的梯度分流,理論上有利於深層網路的訓練穩定性。

引數版面配置(以 LLaMA-7B 為例的實際值)

d_model   = 4096
d_ff      = 11008  (≈ 8/3 × 4096,取整到 256 的倍數)
n_layers  = 32

W₁ (gate_proj): 4096 × 11008  → 每層約 45.1M 引數
W₃ (up_proj)  : 4096 × 11008  → 每層約 45.1M 引數
W₂ (down_proj): 11008 × 4096  → 每層約 45.1M 引數
FFN 總計/層   : ≈ 135.3M 引數
FFN 總計(全模型): ≈ 4.33B 引數(佔 6.7B 總參的 ~65%)

注:以上為 LLaMA 架構的典型值。具體數字來自 Meta 釋出的 LLaMA 模型卡與社群逆向。

融合計算的工程實現

在實際 GPU kernel 中,SwiGLU 的三矩陣操作通常被融合為一個或兩個 CUDA kernel

高效實現:
  1. 融合 GEMM: 同時計算 xW₁ 和 xW₃(可拼接為一個 [d_model → 2×d_ff] 的大矩陣乘法)
  2. 融合逐元素操作: Swish(gate) ⊙ up(一個 kernel 完成 Swish + Hadamard)
  3. 下投影 GEMM: zW₂

vs. Naive 實現需要 3 次獨立 GEMM + 2 次逐元素操作

融合後,SwiGLU 相比 ReLU FFN 的額外開銷主要在:多一個 W₃ 矩陣的視訊記憶體和計算。但由於 d_ff 縮小到 8/3 倍,總計算量差異可控。


技術演進史

時間事件關鍵人物/機構
2017GLU(Gated Linear Unit)提出,用於 CNN 語言模型Dauphin et al., Facebook AI Research
2017Swish 啟用函式通過 NAS 搜尋發現,命名為 SwishRamachandran et al., Google Brain
2017GELU 啟用函式提出Hendrycks & Gimpel
2020.02”GLU Variants Improve Transformer” 釋出,系統對比 ReGLU、GEGLU、SwiGLU 等變體Noam Shazeer(Google),arXiv:2002.05202
2020~2022GLU 變體陸續被納入模型,但主流 Transformer(GPT-3、BERT 等)仍用 ReLU/GELU
2023.02LLaMA 釋出,全線採用 SwiGLU,引發行業跟進Meta AI
2023~2024Mistral、Qwen、DeepSeek、Gemma、Yi 等幾乎所有新建開源 LLM 均採用 SwiGLU各廠商
2024~2025SwiGLU 成為 LLM FFN 的事實標準;部分研究探索其變體(如 Squared ReLU 替代方案)

關鍵轉折點

Shazeer 2020 論文的實驗結論(定性總結):

  • 在相同引數量下,SwiGLU 在多個 NLP 基準上一致性優於 ReLU 和 GELU
  • GEGLU(GELU 作為門控)也有不錯表現,但 SwiGLU 整體更優
  • ReGLU(ReLU 作為門控)優於標準 ReLU FFN,但弱於 SwiGLU

該論文的影響力曲線呈”延遲爆發”——發表時關注有限,直到 2023 年 LLaMA 將其作為預設選擇後才被廣泛採納。


技術路線對比

FFN 啟用函式對比(量化)

啟用方案矩陣數d_ff 取值(等引數時)引數量/層 (d=4096)是否門控是否平滑訓練 perplexity(相對)
ReLU FFN24d = 16384~134.2M基線
GELU FFN24d = 16384~134.2M略優於 ReLU
ReGLU38/3·d ≈ 10923~134.2M明顯優於 ReLU/GELU
GEGLU38/3·d ≈ 10923~134.2M更優
SwiGLU38/3·d ≈ 10923~134.2M最優 [Shazeer 2020]

注:訓練 perplexity 為定性排序,具體數值取決於資料集和模型規模。Shazeer 2020 論文的實驗基於 T5 架構。

計算開銷對比

維度ReLU FFNSwiGLU FFN差異
FLOPs/層 (前向)2 × 2 × d × d_ff2 × 3 × d × d_ff’SwiGLU ≈ 2/3 的 d_ff → FLOPs 接近
視訊記憶體(權重)2 × d × d_ff3 × d × d_ff’引數量設計為接近相等
Kernel 啟動2 GEMM + 1 elementwise3 GEMM + 1~2 elementwise融合後差異縮小
量化友好度無本質差異

上下游

上游(SwiGLU 依賴什麼)

[PyTorch/JAX 基礎架構]

[矩陣乘法 kernel(cuBLAS/CUTLASS)]

[Swish/SiLU 逐元素運算元]

[Hadamard 逐元素乘法運算元]

[FlashAttention 等 Transformer 基礎元件]  ← 與 SwiGLU 正交但共存

下游(SwiGLU 被誰使用)

SwiGLU FFN
    ├── LLaMA 1/2/3 系列(Meta)
    ├── Mistral / Mixtral(Mistral AI)
    ├── Qwen 系列(阿里)
    ├── DeepSeek 系列
    ├── Gemma(Google)
    ├── Yi 系列(零一萬物)
    ├── InternLM(上海AI Lab)
    ├── Phi 系列(Microsoft)
    ├── [幾乎所有 2023 年後新建開源 LLM]
    └── ...

關鍵指標

指標說明典型值/範圍
門控啟用函式Swish(x) = x · sigmoid(x)β=1(SiLU 為標準選擇)
FFN 矩陣數Up + Gate + Down3
等引數隱層比例d_ff / d_model≈ 8/3(實踐中取整)
額外引數開銷相比標準 FFN(同 d_ff)+50%(但通常縮小 d_ff 補償)
收斂速度提升相比 ReLU FFN定性:顯著(Shazeer 2020)
推論延遲增量相比 ReLU FFN(等引數時)定性:相近(GEMM 為主,逐元素操作佔比小)
行業採用率2024 年新建 LLM 中使用比例估算 > 90%

供需與市場資料

算力影響

SwiGLU 本身不是獨立產品,而是模型架構選擇,但其影響體現在:

  1. 訓練算力效率:等引數量下更好的 perplexity → 相同目標效能所需訓練 FLOPs 更少(估算節省 5~15%,取決於對比基線)
  2. 推論成本:SwiGLU FFN 的 FLOPs 與標準 FFN 接近,但三矩陣需要更多視訊記憶體頻寬(權重載入),對 memory-bandwidth-bound 場景有微小影響
  3. Kernel 最佳化市場:vLLM、TensorRT-LLM、SGLang 等推論架構均針對 SwiGLU 做了融合運算元最佳化

量化參考

  • SwiGLU FFN 在 INT8/INT4 量化下表現穩定,無特殊敏感性(Swish 的平滑性有助於量化精度)
  • 這對邊緣部署和推論晶片最佳化是正面訊號

代表公司與資本對映

公司/機構角色SwiGLU 關聯
Google原始發明者(Shazeer 論文);Gemma 採用學術貢獻者 + 使用者
MetaLLaMA 將 SwiGLU 推向行業標準最大推動者
NVIDIATensorRT-LLM 中最佳化 SwiGLU 融合 kernel運算元最佳化
vLLM / SGLang推論引擎中的 SwiGLU 運算元最佳化開源推論棧
Mistral AIMistral/Mixtral 均採用 SwiGLU使用者
阿里巴巴(Qwen)Qwen 系列採用 SwiGLU使用者
DeepSeekDeepSeek 系列採用 SwiGLU使用者

注:SwiGLU 是架構層面的選擇,不構成獨立的商業壁壘。所有公司的模型均可使用。


投資邏輯

核心判斷

SwiGLU 本身不是可投資標的,但作為 LLM 架構的”基礎設施級”選擇,其影響體現在:

  1. 模型效率趨勢的縮影:SwiGLU 的廣泛採用表明行業正朝著”相同算力做更多事”的方向演進。架構改進(含啟用函式、注意力機制、MoE 等)與硬體升級共同推動 Scaling Law 效率提升。

  2. 對算力需求的影響

    • 短期:架構改進(含 SwiGLU)讓相同效能目標需要的總訓練 FLOPs 趨降 → 可能緩和對算力的增量需求
    • 中期:效率提升反而降低單次實驗成本 → 鼓勵更多實驗 → 總算力需求可能上升(Jevons 悖論)
  3. 推論最佳化的競爭焦點:SwiGLU 的三矩陣結構對視訊記憶體頻寬有一定壓力,這利好 HBM 容量/頻寬更高的晶片(如 NVIDIA H100/H200/B200),也利好專注於 kernel 融合最佳化的推論架構公司。

  4. 可替代性訊號:如果未來出現明顯優於 SwiGLU 的啟用函式,將反映架構探索仍在快速迭代,對”算力是唯一壁壘”的敘事構成修正。


常見誤讀糾偏

誤讀 1:“SwiGLU 是一種全新的啟用函式”

糾偏:SwiGLU 不是單一啟用函式,而是啟用函式(Swish)+ 門控機制(GLU)+ FFN 架構重設計的組合方案。單獨的 Swish 啟用(SiLU)早已存在,GLU 門控也早已有之。Shazeer 的貢獻在於:① 系統性地將各類啟用函式代入門控 FFN 架構進行對比;② 發現 Swish 作為門控時效果最優;③ 給出了等引數量下的隱層維度調整方案(8/3 倍)。

誤讀 2:“SwiGLU 讓模型引數增加了 50%”

糾偏:如果固定 d_ff 不變,三矩陣確實比兩矩陣多 50% 引數。但實際使用中 d_ff 會相應縮小(從 4d 降到 ≈ 8/3·d),使總引數量基本持平。這是 SwiGLU 設計的核心要點之一——“等引數量下的效能提升”,而非”更多引數換來更好效果”。

誤讀 3:“SwiGLU 對所有任務都有提升”

糾偏:Shazeer 2020 的實驗主要基於語言建模(T5 架構)。SwiGLU 在語言任務上的優勢已被廣泛驗證,但在其他模態(視覺、語音)或非 Transformer 架構中的優勢,目前缺乏同等深度的系統性驗證。部分視覺模型(如 ViT 變體)仍使用 GELU。

誤讀 4:“Swish = SiLU,二者完全相同”

糾偏:嚴格說,Swish 的一般形式是 x · sigmoid(βx),其中 β 是可學習或固定的超引數。當 β=1 時,Swish 等價於 SiLU(Sigmoid Linear Unit)。在 SwiGLU 中,使用的是 β=1 的 Swish,即 SiLU。但 SiLU 作為一個獨立的運算元名稱,在 PyTorch 中以 torch.nn.SiLU 實現,功能等價。實際語境中二者常互換使用,但技術上 Swish 是更一般的概念。


學習路徑

入門(30 分鐘)

  1. 理解標準 Transformer FFN 的結構:FFN(x) = W₂ · ReLU(W₁x) + b
  2. 瞭解 ReLU、GELU、Swish 的函式形狀和性質差異
  3. 閱讀 Shazeer 2020 論文的 Section 3(GLU Variants)Table 1(實驗結果)

進階(2 小時)

  1. 手推 SwiGLU FFN 的前向和反向傳播公式
  2. 理解等引數量約束下 d_ff = 8/3 · d_model 的推導
  3. 閱讀 LLaMA 論文(Touvron et al., 2023),關注其 Section 2.1 對 SwiGLU 的描述
  4. 在 HuggingFace Transformers 中檢視 LLaMA 的 LlamaMLP 實現(modeling_llama.py

深入(1 天)

  1. 實現自定義 SwiGLU FFN 並與 ReLU FFN 在小模型上做對比實驗
  2. 研究推論架構(vLLM / TensorRT-LLM)中 SwiGLU 的融合 kernel 實現
  3. 閱讀 Su (2024) 等後續工作對 GLU 變體的進一步探索
  4. 思考 SwiGLU 與 MoE 的關係——門控路由 vs. 門控 FFN 的概念對照

一句話總結

SwiGLU 用 Swish 平滑門控替代 ReLU 硬截斷,以三矩陣結構 + 8/3 倍隱層設計,在不增加引數量的前提下顯著提升 Transformer FFN 的表達能力,已成為 2023 年後新建大語言模型的事實標準。


延伸閱讀與來源

來源說明標註
Shazeer, “GLU Variants Improve Transformer”, arXiv:2002.05202 (2020)SwiGLU 的原始論文核心文獻
Dauphin et al., “Language Modeling with Gated Convolutional Networks” (2017)GLU 的原始提出上游文獻
Ramachandran et al., “Searching for Activation Functions” (2017)Swish 啟用函式的發現上游文獻
Touvron et al., “LLaMA: Open and Efficient Foundation Language Models” (2023)LLaMA 採用 SwiGLU 的里程碑行業採用標誌
HuggingFace Transformers 原始碼 modeling_llama.pyLlamaMLPSwiGLU 的開源實現參考程式碼參考
各模型官方技術報告(Mistral, Qwen, DeepSeek, Gemma 等)驗證行業採用情況[行業文獻]

⚠️ 準確性宣告:本頁所有數學公式和架構描述基於 Shazeer 2020 原論文及廣泛驗證的公開資訊。LLaMA-7B 的具體引數值來自社群對 Meta 公開模型的分析。由於檢索受限(HTTP 403),部分行業採用資料為定性判斷,已在文中標註。

source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型