第六章 从 SwiGLU 到 MoE ------ FFN 才是大模型真正的算力核心
目录
零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园
本章导读
这篇我们还是继续讲FFN.因为,这个模块一直在更新和升级
本章建议与上一章联合食用,效果更佳.
上一章地址:
零基础认识大语言模型(LLM)工作原理(5.Transformer的FFN模块到底是什么?)
在前面章节我们已经建立了一个基础认知:
-
Attention:负责"找关系"
-
FFN:负责"做计算 / 做语义加工"
但在现代大模型(LLaMA / Qwen / DeepSeek / GPT 系列)中,有一很重要的现实情况:
Transformer 绝大部分参数和算力,都消耗在 FFN 上,而不是 Attention。
这一章我们会回答三个关键问题:
本章核心问题
-
为什么 FFN(尤其是SwiGLU)是算力大头?
-
SwiGLU 到底解决了什么"工程问题"?
-
MoE(Mixture of Experts)为什么是 FFN 的终极形态?
6.1 Attention 不是算力核心
很多新手(包括我自己)会直觉认为:
Attention = 核心 (因为名字确实有点唬人,注意力~)
但真实情况是,在最近几年的 Transformer 中:
| 模块 | 参数占比 | 计算占比 |
|---|---|---|
| Attention | 20%~40% | 中等 |
| FFN / SwiGLU | 60%~80% | 最大 |
为什么会这样?
上一章我们也简略讲过.
因为Attention 主要做"信息路由"
FFN 才做"高维非线性计算"
用我们熟知的系统可以简单总结一下:
Attention 是"通信系统",FFN 是"计算系统"。
6.2 从 FFN 到 SwiGLU:为什么要改结构?
我们回顾经典 FFN:
text
x → Linear(升维) → GELU(激活函数) → Linear(降维) → y
会有些什么问题?
问题1:信息是"无筛选加工"
所有输入:
-
一视同仁
-
同一个非线性函数处理
-
没有"选择机制"
问题2:表达效率不够
模型想表达复杂函数,则需要:
-
更大维度
-
更多层数
问题3:冗余计算严重
很多信息其实是:
不重要 / 噪声 / 局部相关
但依然要被完整计算。
6.3 SwiGLU:第一次"结构性升级"
SwiGLU 的本质变化是:
从"单路径变换" → "双路径门控系统"
SwiGLU 结构:
text
x
├── W1 → 内容分支
└── W2 → 门控分支 → SiLU
↓
逐元素相乘
↓
W3 输出
看起来是不是有点复杂了?
我们只要记住,关键思想只有一句:
不是模型中所有信息都值得被激活
我们用个例子跟初级的FFN对比一下
旧 FFN:
一个老师对所有学生统一讲课
SwiGLU:
一个老师 + 一个助教:
-
老师负责讲内容
-
助教负责"哪些内容该重点讲"
所以产生了一个核心结果:
模型开始具备:
信息筛选能力(Feature Selection)
6.4 SwiGLU 带来的三个关键变化
① 表达能力提升
同样参数量情况下:
能表示更复杂函数
② 训练更稳定
原因:
-
梯度更平滑
-
信息流更可控
③ 更符合语言稀疏性
我们现实的语言
本身也不是所有 token 都重要
而且是信息分布极不均匀的
所以SwiGLU 正好匹配了这种结构
6.5 升级对FFN的理解
到这里我们就要升级一下对FFN的理解了:
FFN 不再只是"变换层",而是"特征选择 + 特征重组系统"
6.6 MoE(混合专家模型):FFN 的终极形态
我们理解了上面的内容.
现在进入真正的工业级结构:
MoE(Mixture of Experts)混合专家模型
MoE 是什么?
我们还是先用一句话简单概括一下:
把 FFN 拆成多个"专家网络",只激活部分专家计算
大致结构长这样:
text
输入
↓
Router(路由器)
/ | \
Expert1 Expert2 Expert3 ...
\ | /
输出融合
6.7 MoE 的核心思想
我们还是做个简单的类比,来对比一下和传统FFN的区别
传统 FFN:
一个"万能专家"
什么都要学:
-
语法
-
代码
-
数学
-
知识
MoE:
一群"专科医生"
例如:
-
Expert A:语言
-
Expert B:代码
-
Expert C:数学
-
Expert D:推理
Router(路由) 做什么?
Router 会判断:
当前输入应该交给哪个专家处理
例如:
输入:
"写一个 Java Redis 缓存代码"
Router 会选择:
-
Java Expert
-
Redis Expert
6.8 MoE 为什么这么重要?
因为它解决了一个核心问题:
模型规模增长 vs 计算成本爆炸
传统 Transformer:
参数越多,则每次推理都要全量计算
MoE:
参数可以非常大,但是每次只激活部分参数
举例:
| 模型 | 总参数 | 实际激活 |
|---|---|---|
| Dense LLM | 70B | 70B |
| MoE LLM | 400B | 40B~80B |
所以实际上,MoE = "用参数换能力,用路由省算力"
6.9 SwiGLU vs MoE:关系是什么?
很多兄弟其实可能会混淆.
我们直接简单定义一下.
SwiGLU:
单个 FFN 内部的"门控结构优化"
MoE:
把 FFN 整体拆成多个"专家"
本质关系:
MoE = SwiGLU 的"系统级扩展"
6.10 记住非常重要的工业结论
现代大模型结构基本是:
text
Attention
↓
SwiGLU FFN 或 MoE FFN
↓
Attention
↓
SwiGLU FFN 或 MoE FFN
并且:
-
FFN 占参数 60%~80%
-
Attention 占 20%~40%
所以工业界结论是:
Transformer 的本质是"FFN 驱动的系统",Attention 是辅助结构。
6.11 为什么 FFN 才是"知识载体"?
这也是比较关键的一点
Attention:
-
不存知识
-
只做"信息关联"
FFN / MoE:
-
存语义模式
-
存统计知识
-
存任务映射
举个例:
问:
Redis 是什么?
真正起作用的是:
FFN 中已经学习到的"参数化知识结构"
所以我们结合上面一系列的讲解,应该就能明白 模型的"知识",主要压缩在 FFN 权重里
6.12 总结本章
如果只记一句话:
SwiGLU 让 FFN 具备"选择能力",MoE 让 FFN 具备"分工能力",而现代大模型的真正智能核心,其实是 FFN 系统。
本章总结
我们完成了三个认知关键升级:
① FFN 从"变换层"升级为"选择系统"
SwiGLU 引入门控机制
② FFN 从"单体结构"升级为"专家系统"
MoE 引入路由机制
③ Transformer 的真实结构认知
Attention 负责连接
FFN 负责计算与知识表达
MoE 负责规模扩展
下一章预告
下一章我们将引入一个神奇的问题:
为什么"预测下一个 Token"可以产生智能?
我们会把前面所有内容统一归纳起来解释:
-
为什么简单目标能涌现复杂能力
-
为什么模型会"突然变聪明"
-
为什么代码 / 数学 / 逻辑都能统一建模
-
为什么 LLM 本质是"通用函数逼近器"