技術指南

SwiGLU 和門控激活

SwiGLU 是一種門控激活函數,它將輸入的一個線性投影乘以 Swish 激活的第二個投影,充當變壓器前饋層內的可學習、數據相關的門。

閱讀時間約2分鐘最後更新

概述

It consistently improves language-model quality, which is why nearly every modern LLM uses it.

深入探討

標準變壓器前饋塊是兩個線性層,中間有一個 ReLU 或 GELU。門控線性單元,由 Dauphin 等人提出。 2016 年,將第一個投影分成兩半,並使用一半透過元素乘法來門控另一半。 SwiGLU 由 Noam Shazeer 在 2020 年推廣,該閘使用 Swish (SiLU) 函數:輸出 = (Swish(xW) * (xV)) W2,具有三個權重矩陣而不是兩個。門控讓網路選擇性地傳遞或抑制每個維度的訊息。由於添加第三個矩陣會增加參數,因此實現將隱藏維度縮小到大約三分之二,因此總計算量與 GELU MLP 相當。 Shazeer 的實驗顯示了可測量的困惑度增益,LLaMA、PaLM 和 Mistral 都採用了它。

技術洞察

Swish 是 x * sigmoid(beta*x),一個平滑的非單調函數,與 ReLU 不同,它允許小的負值通過。在 SwiGLU 中,「閘」分支 Swish(xW) 產生接近 0 或 1 的值,這些值按元素乘以「值」分支 xV,因此每個隱藏單元的貢獻都由學習的、依賴輸入的訊號進行調製。第三個權重矩陣是成本;三分之二的隱藏大小技巧使 FLOP 預算與普通前饋層相符。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

SwiGLU 和門控啟動的未來

SwiGLU 是開放式法學碩士中預設的 MLP,並且不太可能很快被取代。主動方向包括 GeGLU 和 ReGLU 變體、一次性計算兩個投影的融合 GPU 內核,以及將門控 MLP 與專家混合相結合,這樣每個專家本身就是一個 SwiGLU 區塊。研究人員也正在研究為什麼門控有助於優化,旨在設計更便宜的門。

現實世界的實施

LLaMA、PaLM 和 Mistral 以 SwiGLU 取代 GELU 前饋層,以降低同等運算的困惑度

隱藏維度縮放至大約三分之二 (8/3 d),因此額外的門控矩陣不會增加 FLOP 數

Mixtral 等專家混合模型使用 SwiGLU 模組作為每個專家的前饋網絡

視覺和多模態 Transformer 借用 GeGLU/SwiGLU 門控來改進其 MLP 子層

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the SwiGLU and Gated Activations quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

啟動重新計算權衡

常見問題

What is SwiGLU and Gated Activations?

SwiGLU 是一種門控激活函數,它將輸入的一個線性投影乘以 Swish 激活的第二個投影,充當變壓器前饋層內的可學習、數據相關的門。它不斷提高語言模型的質量,這就是為什麼幾乎每個現代法學碩士都使用它的原因。

什麼核心操作定義了門控線性單元?

GLU 依元素將數值投影乘以閘投影,讓網路控制每個維度的資訊流。

SwiGLU 的閘門分支使用哪個激活函數?

SwiGLU 使用 Swish(也稱為 SiLU)作為閘控分支,定義為 x * sigmoid(beta*x)。

SwiGLU 前饋模組使用多少個權重矩陣?

SwiGLU 需要三個矩陣:閘投影、值投影和輸出投影。

為什麼 SwiGLU 層中的隱藏維度通常會縮放至約三分之二?

否則第三個矩陣會增加計算量,因此將隱藏大小縮小到大約 8/3 d 可以保持預算匹配。

誰在 2020 年推廣了 SwiGLU 作為變壓器前饋層?

Noam Shazeer 的 2020 年筆記“GLU Variants Improve Transformer”介紹了 SwiGLU 並展示了其困惑度增益。