前馈网络(FFN / MLP)
Transformer 中的 MLP(也常叫 FFN)负责“逐 token 的非线性变换”,与 Attention 的“跨 token 信息混合”互补。
经典的两层 FFN:
[ \mathrm{FFN}(x)=W_2 , \sigma(W_1 x + b_1) + b_2 ]
对序列 (X \in \mathbb{R}^{T\times d}) 是逐行独立地应用。
现代 LLM 常用的变体:SwiGLU / GeGLU
很多 LLM 使用门控 MLP(GLU family)提升效果与稳定性,例如 SwiGLU:
[ \mathrm{SwiGLU}(x) = (W_a x)\odot \mathrm{SiLU}(W_b x) ] [ \mathrm{MLP}(x)=W_o ,\mathrm{SwiGLU}(x) ]
其中 (\odot) 是逐元素乘。
工程直觉:
门控结构给了模型一个“可学习的通道选择”,表达更灵活
在相近参数量下常带来更好的效果
工程优化点
算子融合:FFN 主要是 GEMM + activation + GEMM,适合 fuse
混合精度:GEMM 用 BF16/FP16,累加用 FP32(依实现而定)
张量并行:FFN 的两次线性层非常适合做 TP(按列/按行切分)