SwiGLU 和门控激活
SwiGLU 是一种门控激活函数,它将输入的一个线性投影乘以 Swish 激活的第二个投影,充当变压器前馈层内的可学习、数据相关的门。
概述
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 子层
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实际负载和数据条件下进行基准测试。
仪器监控错误、漂移和用户影响。
在扩展之前准备回滚和事件响应路径。
不断探索
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 并展示了其困惑度增益。