起点:Transformer 解决了什么
2017 年的 Transformer 之所以能取代 RNN(循环神经网络,逐 token 递归处理序列的老架构),靠两件事。一是并行训练:RNN 的时序依赖使训练必须一步步串行,Transformer 的自注意力让整个序列的所有位置同时参与计算,GPU 能吃满,训练规模得以指数级展开。二是长程依赖:RNN 的信息要逐站传递,隔得远就衰减;自注意力让任意两个位置直连,信息路径长度是一步。
但自注意力是笔昂贵的交易:每对 token 都要算相关性,计算量与显存都随长度平方增长。此后的十年,架构研究基本围绕这笔交易展开,可以归成三条主线。
主线一:让注意力更便宜
最直接的思路是别让每个 token 看所有人。稀疏注意力只保留局部窗口、分块或按规则挑选的连接,把平方压到接近线性;线性注意力用核函数近似改写注意力的计算顺序,复杂度降为线性,代价是表达上更「模糊」。
另一条思路不动数学、只动工程。FlashAttention 意识到注意力的瓶颈不在计算而在显存读写:标准实现要把巨大的注意力矩阵写进显存再读回来,它通过分块计算让中间结果尽量留在高速缓存里,速度与显存同时受益。这类做法被称为 IO 感知(IO-aware,按硬件存储层级设计算法),不改变注意力的定义,却成了事实标准。
第三个思路砍缓存:MQA 让所有查询头共享一组 KV 头,GQA 折中成分组共享。它们不降低计算复杂度,但把推理显存的大头成倍缩小,是长上下文推理普及的隐形功臣。
主线二:换掉注意力
如果注意力天生平方级,能不能换成天生线性的状态机?SSM(状态空间模型)正是这个思路:用一组随时间更新的隐状态压缩历史,处理到第 t 个 token 时只维护一个固定大小的状态,计算和显存都随长度线性。Mamba 把状态更新改成依赖输入的选择性机制,让 SSM 在语言任务上真正追平了同规模的注意力模型,一度被视为替代者。
但注意力有一项 SSM 难以匹敌的能力:精确回忆。注意力是一张可直接索引的查找表,问「文档第三段说了什么」,它能一步取回;SSM 把历史压缩进固定状态,细节会被稀释,需要精确定位上下文片段的任务上吃亏。状态大小的另一个名字叫「记忆预算」:状态越小越省,忘得也越多,这是所有线性模型共有的根本权衡。这解释了为什么纯粹的 SSM 没有成为主流,而混合架构——注意力层与 SSM 层交替堆叠,让 SSM 管廉价的长程「氛围」、注意力管精确回忆——成了更稳健的选择,Jamba 等公开模型已经把它做成了产品。
主线三:让 FFN 稀疏
前两条主线都在优化注意力,但 Transformer 的参数大头在 FFN。MoE(混合专家)把每层的 FFN 换成多个专家加一个小路由器,每个 token 只激活少数专家:总参数可以做得很大,单 token 的计算量却由激活参数决定。它解决的不是「算得快」而是「装得多」——用近乎不变的单 token 成本换取更大的知识容量。这条主线与前两条正交,可以叠加使用。
位置编码与一张地图
支撑这一切还有一条暗线:位置编码。RoPE(旋转位置编码)及其外推、插值变体,加上 ALiBi 这类线性偏置方案,让模型在训练长度之外还能扩展上下文——长上下文能力有一半是位置编码的功劳。
十年的演进可以压缩成一张图:
graph LR
T[Transformer 2017] --> S[稀疏与线性注意力]
T --> F[FlashAttention]
T --> G[GQA 与 MQA]
T --> P[位置编码演进]
S --> C[更便宜的注意力]
F --> C
G --> C
M[SSM 与 Mamba] --> H[混合架构]
C --> H
T --> E[MoE 稀疏 FFN]
H --> L[长上下文时代的架构版图]
E --> L
P --> L
读新架构论文的三问
最后给一个可复用的检验框架。看到任何新架构论文,问三个问题:第一,显存占用随序列长度怎么变,是线性还是常数,推理时状态多大;第二,计算复杂度宣称线性时,常数项多大,训练和推理是否都受益;第三,用「精确回忆」类任务考它——大海捞针、长文档问答——它拿什么和注意力比。多数架构在前两问上都能拿出漂亮数字,真正分出高下的是第三问。另外留心口径:有的论文报训练 FLOPs,有的报推理时延,单位不同不能直接比,看表格前先统一口径。
架构没有银弹,十年演进的每个分支都是一次权衡。把权衡的坐标轴记住,比记住任何一篇论文的结论都重要。
读者留言
COMMENTS 暂无还没有留言,来说第一句?