Transformer 演进全景:从架构发明到系统落地
0. 读这份文档前先对齐目标
这份文档希望回答一个常见问题: 为什么 Transformer 在 2017 年之后没有被“单点替代”,而是不断出现新变体,并且这些变体往往是组合使用的?
为了把这个问题讲清楚,全文采用“机制 -> 解决的问题 -> 代价/边界”的固定框架。你会看到每条演进主线都围绕同一组工程现实展开:
- 模型质量要继续上升:更强推理、更稳泛化、更好指令遵循;
- 训练成本要可承受:算力、数据、训练时长都受预算约束;
- 线上服务要可交付:时延、吞吐、稳定性、单位 token 成本必须达标。
换句话说,Transformer 演进不是“学术新名词堆叠”,而是持续在做系统级多目标优化。
本文刻意不做两类内容:
- 不展开底层 kernel/算子代码实现;
- 不做逐行数学推导与完整证明。
重点放在架构与系统决策:什么机制在起作用、为什么有效、在什么条件下可能失效。
1. 起点:Standard Transformer 给了行业什么“通用接口”
2017 年的 Standard Transformer(Attention Is All You Need)真正奠定的是一个“可插拔骨架”,而不仅仅是 Attention 模块本身。这个骨架由三层分工构成:
- Attention 子层:让每个 token 按内容动态聚合上下文;
- FFN 子层:对每个 token 做更高维的非线性变换;
- Residual + Normalization:让深层网络在训练时保持可优化性。
这个分层设计非常关键,因为后续几乎所有创新都可以映射到其中某一层:
- 改位置编码,本质是在改 Attention 的“相对关系表达”;
- 改 Norm/Residual,本质是在改可训练性与数值稳定;
- 改 FFN/MoE,本质是在改参数容量与每 token 计算;
- 改推理系统,本质是在改 Attention/缓存/调度的执行方式。
1.1 Encoder-Decoder 到 Decoder-only:范式为何迁移
早期 NLP 任务(翻译、摘要)天然是 seq2seq,因此 Encoder-Decoder 占主流。随着大规模预训练兴起,Decoder-only 在通用语言建模上优势明显:
- 训练目标统一(next-token prediction);
- 无需任务特定头即可迁移到多任务;
- 语料组织和数据管线更直接,利于大规模扩展。
这并不意味着 Encoder-Decoder 失效,而是“通用大模型 + 指令微调”路径下,Decoder-only 的工程与生态收益更高。
1.2 为什么起点架构很快遇到瓶颈
当参数规模、上下文长度、在线并发同时增长,标准范式会同时暴露三个瓶颈:
- 计算与显存瓶颈(长上下文):全连接 Attention 的代价随序列长度快速上升;
- 优化与稳定性瓶颈(深网络):层数与宽度上去后,梯度与数值更容易不稳;
- 系统与成本瓶颈(线上服务):KV cache、调度、内存带宽成为实际吞吐上限。
这三类瓶颈之间还会互相牵制:
- 你为长上下文改了 Attention,可能伤到短文本质量;
- 你为稳定训练加了结构约束,可能降低推理效率;
- 你为服务成本做了激进压缩,可能影响模型上限。
因此,后续演进并非线性升级,而是围绕“质量-效率-成本”三角做分治与折中。
1.3 一张“演进地图”如何阅读
为了避免把文档读成“名词清单”,可以用下面的阅读顺序:
- 先看该技术改变了哪一层(位置、Attention、FFN、Norm、Serving);
- 再看它主要缓解哪个瓶颈(长度、稳定、吞吐、成本);
- 最后看代价是什么(实现复杂度、调参敏感性、迁移成本、生态成熟度)。
按这个方式,你会发现:很多看似不同的方案,其实在解决同一类约束,只是选择了不同的工程妥协点。
2. 主线一:位置表示(Positional Representation)如何跨向长上下文
位置表示的核心任务只有一句话: 让模型知道“这个 token 在哪里”,以及“它和别的 token 相隔多远”。
如果没有位置信息,Self-Attention 对输入 token 集合天然是“置换不变”的,
也就是 A B C 与 C B A 在统计上可能被当成同一组元素处理。
因此,位置表示不是可选项,而是语言顺序建模的前置条件。
2.1 第一阶段:Absolute Position(绝对位置)
早期方案主要有两类:
- Positional Encoding (PE):用固定函数(常见是正余弦)生成第
i个位置的向量; - Learned Positional Embedding:把位置当作可训练索引表。
两者共同点是:把“第几个 token”直接加到 token 表示里。
这类方法的优势很明显:
- 实现简单、训练稳定、与早期框架兼容好;
- 对训练长度范围内的任务通常足够有效;
- 便于快速搭建 baseline。
但它们共享一个关键边界: 对“训练外长度”的泛化通常不稳。
原因是模型学到的往往是“绝对索引模式”,而不是“可平移的相对关系”。 当上下文远超训练窗口时,模型可能出现注意力错位、远距依赖衰减、重复生成等问题。
2.2 第二阶段:Relative Position(RoPE 成为主流)
行业转向相对位置建模的核心动机是: 自然语言里很多规律与“相距多少”更相关,而不是“位于第几位”更相关。
Rotary Positional Embedding (RoPE) 的关键思想是: 在 Query/Key 空间按位置做旋转,使内积天然携带相对位置信息。
这带来三个工程收益:
- 相对关系表达更自然:注意力分数直接反映距离变化;
- 增量解码友好:新 token 只需对新位置做旋转,不必重写历史;
- 生态兼容性强:容易融入主流 decoder-only 架构。
RoPE 成为主流并不意味着“永远无痛”: 当你把上下文拉到远超训练长度时,频率尺度与角度分辨率仍会带来外推压力。 这也是后续一批“RoPE 扩展与修正”技术出现的背景。
2.3 第三阶段:长上下文扩展族(外推增强)
当业务需求从 2K/4K 扩到 32K、128K、甚至更长时, “只靠原始位置方案”往往不够,需要引入外推增强策略。
常见路线包括:
- Attention with Linear Biases (ALiBi):在注意力分数中加入随距离变化的线性 bias;
- extrapolatable Rotary Position Embedding (xPos):改进 RoPE 在长程外推时的稳定性;
- Position Interpolation (PI):把长序列位置映射/压缩回训练过的有效区间;
- Yet another RoPE extensioN (YaRN):针对 RoPE 长上下文行为进行再标定;
- No Positional Encoding (NoPE):弱化或移除显式位置编码,依赖结构和数据诱导顺序感。
这些方法路径不同,但目标一致:
- 尽量不完全重训;
- 把窗口拉长到可用;
- 在“短文本能力”和“长文本可用性”间找到折中。
实践里最常见的误区是只看“最大窗口数字”。 真正需要评估的是:
- 超长输入下是否还能稳定检索关键信息;
- 短上下文任务是否被副作用拖累;
- 训练/微调/推理链路是否需要同步改造。
2.4 这条主线的核心权衡
位置表示路线选择,本质是在做四件事的平衡:
- 泛化长度:能否超出训练窗口仍保持可用;
- 短文质量:是否牺牲常见长度任务表现;
- 改造成本:是否需要重训或大规模再微调;
- 系统兼容:与现有 KV cache、推理框架、模型权重的兼容程度。
一个实用经验是:
- 若目标是“稳妥上线 + 中等扩窗”,优先选生态成熟方案;
- 若目标是“极限长上下文 + 研究探索”,再引入更激进外推策略;
- 无论选哪条路线,都要用任务级评测验证“长输入真的变好了”,而不是只看配置窗口。
3. 主线二:Normalization 与 Residual 如何支撑深层训练
如果说位置表示解决的是“能不能看懂顺序”, 那么 Normalization 与 Residual 解决的是“网络能不能稳定地训到足够深”。
在大模型训练中,很多失败不是因为模型不够大,而是因为优化过程不稳定:
- 梯度在深层传播时衰减或爆炸;
- 各层激活尺度漂移,导致训练对学习率极度敏感;
- 注意力分数过尖,训练后期出现数值不鲁棒。
这条主线的核心,就是给深层 Transformer 一条可持续的“数值稳定通道”。
3.1 归一化策略:LayerNorm -> RMSNorm/ScaleNorm
LayerNorm 的经典作用是对每个 token 的通道维做标准化(含中心化与缩放), 抑制层间分布漂移,让优化器看到更平滑的损失地形。
随着模型规模上升,社区逐步采用更轻量的归一化变体:
- Root Mean Square Layer Normalization (RMSNorm):去掉均值中心化,只保留尺度归一;
- ScaleNorm:强调向量范数尺度控制,把“幅值稳定”放在首位。
这些方案背后的共同直觉是: 在很多场景里,“控制尺度”比“严格中心化”更关键, 而且可以减少计算与实现复杂度。
实践意义在于:
- 更稳定的训练曲线;
- 更宽容的超参窗口(尤其学习率、warmup);
- 更易扩展到更深层数。
3.2 结构迁移:Post-Norm -> Pre-Norm -> DeepNorm
Normalization 放在子层前还是后,不是风格问题,而是梯度路径设计问题。
- Post-Norm:子层计算后再做 Norm。早期可用,但层数很深时更容易训练不稳;
- Pre-Norm:先 Norm 再进子层,残差主干路径更“干净”,深层优化更稳。
为什么 Pre-Norm 更受欢迎? 因为它让残差分支更接近一条低阻通道,梯度更容易跨层传递, 在超深网络里显著降低“训不动”风险。
当模型继续变深时,仅靠 Pre-Norm 仍可能不够, 于是出现 DeepNorm 一类方法,通过调节残差缩放系数, 进一步平衡“表示能力”和“数值稳定”之间的关系。
3.3 局部稳定增强:QK-Norm / KV-Norm
即便主干归一化做得好,Attention 内部仍可能成为不稳定源。 典型现象是:
- Query/Key 尺度漂移导致注意力 logits 过大;
- softmax 过度尖锐,梯度利用率下降;
- 长序列下注意力模式异常集中或抖动。
Query-Key Normalization (QK-Norm) 与 Key-Value Normalization (KV-Norm) 的思路是在注意力相关张量上额外做尺度约束, 把“局部失稳”截断在模块内部,不让它放大成全局训练问题。
这类策略常见于长上下文或高温度训练场景, 目标不是提升理论上限,而是提升可训性与鲁棒性。
3.4 Residual 连接本身也在演进
很多讨论只关注 Norm,但 Residual 连接形式也在微调:
- 调整残差分支比例,避免主干被子层输出淹没;
- 在不同子层(Attention/FFN)使用不同缩放策略;
- 在极深网络中配合初始化与学习率策略共同稳定训练。
文档后面的原始列表里提到的 Highway/mHC/Attention Residual 等思路, 可以看成“如何让信息与梯度更顺畅通过层间”的不同工程尝试。
3.5 这条主线的核心权衡
Normalization + Residual 的选型,本质在做以下平衡:
- 稳定性:是否能在目标层数与目标 batch 下稳定收敛;
- 表达上限:稳定化是否引入过强约束,限制模型容量释放;
- 训练效率:是否增加额外计算或降低并行效率;
- 调参复杂度:是否要求更细粒度超参联动(LR、warmup、init、clip)。
经验上,面对大规模训练时优先级通常是:
- 先保证“能稳定训完”;
- 再在稳定前提下追求更高上限;
- 最后优化训练效率与实现复杂度。
因为一个训练不稳的高上限架构,在工程上等于没有上限。
4. 主线三:FFN 与 MoE 如何扩容量而不线性爆算力
如果把 Attention 看作“信息路由器”, 那么 FFN 更像“参数容量池”:模型大量知识与变换能力都沉淀在这里。
因此,LLM 扩容时很快会遇到一个现实: 只靠 Dense FFN 线性加宽加深,参数和每 token 计算几乎一起暴涨。
这条主线的核心问题是: 能不能把“总参数容量”继续做大,但不让“单 token 推理成本”同步爆炸。
4.1 Dense FFN:简单高效,但扩展成本线性上升
标准 Dense FFN 的机制是:每个 token 都经过同一套全参数 MLP 变换。 它的优势非常明确:
- 结构简单、实现成熟、硬件友好;
- 训练与推理路径一致,行为可预期;
- 框架支持完善,工程风险低。
问题也同样明确:
- 增加容量通常意味着增加 FFN 隐层维度或层数;
- 每 token 都要支付全部计算,吞吐与成本压力同步上升;
- 当服务规模变大,单位 token 成本会迅速成为瓶颈。
因此 Dense FFN 适合“稳健起步”,但在超大规模下需要更高参数利用效率。
4.2 GLU Family:在 Dense 路线上提升参数利用率
Gated Linear Unit (GLU) Family(如 GEGLU、SwiGLU) 可以理解为把 FFN 从“单通道变换”升级为“内容 + 门控”双分支:
- 内容分支生成候选特征;
- 门控分支动态决定哪些特征通过、通过多少。
这种设计的价值在于:
- 对信息流做细粒度筛选,降低无效激活;
- 常在相近计算预算下带来更好的质量;
- 保留 Dense 路线的工程可控性,不引入复杂路由系统。
代价通常是:
- 参数组织更复杂,调参空间略增;
- 不同激活函数/门控形式会影响数值稳定与收敛速度。
GLU 路线本质仍是 Dense,只是把“每份计算”用得更值。
4.3 MoE:用稀疏激活扩大总容量
Mixture of Experts (MoE) 的核心思想是“总量大、按需调用”:
- 准备多个专家 FFN;
- 由路由器为每个 token 选择少数专家(Top-k 或 Top-1);
- token 只经过被选中的专家。
这样可以同时实现:
- 总参数大幅增加(容量提升);
- 单 token 计算保持可控(激活稀疏)。
从 GShard MoE 到 Switch Transformer (Switch MoE) 再到 DeepSeek MoE, 演进焦点长期围绕三个工程难题:
- 路由稳定性:避免路由震荡、训练不收敛;
- 负载均衡:避免少数专家过载、其余专家闲置;
- 训练-推理一致性:离线训练行为在线上可复现。
4.4 MoE 的系统现实:模型问题会变成集群问题
Dense 模型的复杂度主要在单机算子层; MoE 则把一部分复杂度转移到分布式系统层:
- 专家并行与通信开销管理;
- token dispatch/gather 带来的带宽压力;
- 服务侧冷热专家、批处理形态与尾延迟控制。
因此 MoE 的成败,往往不只取决于模型结构, 还取决于训练框架、并行策略、推理调度是否同步设计。
4.5 这条主线的核心权衡
FFN/MoE 选型可概括为四个平衡:
- 容量上限:总参数能做多大;
- 单 token 成本:每次前向支付多少计算;
- 工程复杂度:实现、训练、部署是否可控;
- 稳定性风险:路由与负载是否带来额外不确定性。
经验上:
- 若团队追求低风险交付,先做 Dense + GLU 优化;
- 若目标是在有限 token 预算下冲更高容量,再评估 MoE;
- 一旦采用 MoE,要把路由与系统设计当作主任务,而非附属优化。
5. 主线四:Attention 本体如何在“质量/速度/内存”间折中
Attention 是 Transformer 能力的核心来源,也是计算与内存压力的核心来源。 当上下文长度、并发请求、目标时延同时上升时, Attention 设计必须在三角约束中取舍:
- 质量:上下文建模能力是否足够强;
- 速度:单位请求时延是否可控;
- 内存:KV cache 与中间状态是否可承受。
后续演进大体形成三条路线:Dense 变体、Sparse 连接、Linear/State-Space-Like 改写。
5.1 Dense 变体:MHA -> MQA/GQA -> MLA
Dense 路线不改变“全连接看全局”的基本表达方式, 重点优化的是 KV 表示冗余与访存开销。
- Multi-Head Attention (MHA):每个头有独立 Q/K/V,表达强,但 KV cache 成本高;
- Multi-Query Attention (MQA):多 Query 共享 K/V,显著降低 KV 存储与带宽压力;
- Grouped-Query Attention (GQA):在 MHA 与 MQA 间折中,以分组共享降低成本同时保留部分多样性;
- Multi-head Latent Attention (MLA) / DeepSeek MLA:通过潜变量/压缩表示进一步减少冗余,提高有效带宽利用率。
这条路线的优势是生态迁移成本低, 很多现有训练与推理栈都能较平滑接入。
主要代价是:
- 即便优化 KV,序列极长时总压力仍大;
- 压缩过强时可能损失部分注意力表达细节。
5.2 Sparse 路线:减少连接密度
Sparse Attention 的核心是: 不是每个 token 都需要看全部 token。
典型方式包括:
- Sliding Window Attention (SWA):只看局部窗口;
- Dilated Sliding Attention (DSA):在局部窗口基础上加入稀疏扩张采样;
- Longformer / BigBird:组合局部、全局、随机等连接模式。
这类方法可显著降低理论计算与内存负担, 尤其适合长文档、结构化上下文等任务。
但它们通常需要你提前假设“哪些连接最重要”, 而这在开放域生成任务里并不总是成立。 如果稀疏模式设计不当,会造成远距依赖捕获不足。
5.3 Linear / State-Space-Like 路线:改写记忆机制
第三条路线不再坚持显式两两注意力矩阵, 而是尝试把历史依赖压缩进可递推状态。
代表方向包括:
- 核近似与线性化:如 Performer (FAVOR+);
- Delta/门控递推:如 Kimi Delta Attention (KDA)、Gated DeltaNet、Lightning Attention;
- 状态空间/保留机制:如 Mamba (SSM)、RetNet、RWKV。
这类方法的吸引力在于:
- 长序列复杂度更可扩展;
- 记忆更新可做流式递推,系统友好。
挑战在于:
- 训练稳定性与超参敏感度常高于成熟 Dense 路线;
- 工具链与生态成熟度参差不齐;
- 某些任务上表达上限与泛化行为仍需大量验证。
5.4 不同路线该怎么选
一个实用判断方式:
- 若你最看重通用质量与工程稳妥,优先 Dense 变体(GQA/MQA/MLA);
- 若你有明显长序列结构先验,可评估 Sparse 模式;
- 若你追求极限扩展性或流式场景,再投入 Linear/SSM 路线。
不要把三条路线当互斥关系。 真实系统里经常是组合策略: 例如 Dense 主干 + 局部稀疏增强 + serving 端缓存优化。
5.5 这条主线的核心权衡
Attention 演进没有“全局最优”,只有任务最优:
- 表达能力:对复杂依赖关系的建模上限;
- 长度可扩展性:上下文增长时计算与内存如何变化;
- 工程可用性:训练、微调、部署生态是否成熟;
- 迁移风险:从现有模型与栈迁移的代价。
真正有效的方案,通常不是最前沿名词, 而是与你的目标长度、SLA、硬件约束最匹配的那条折中曲线。
6. 主线五:Training & Scaling 如何改变“训练即决策”
大模型时代的训练,不再是“把模型训完”这么简单, 而是一个资源分配问题: 在固定预算下,如何把参数、数据、算力和时间组合成最高性价比。
因此 Training & Scaling 的演进,本质上是在把“经验主义”转成“可计算决策”。
6.1 Scaling Laws:从盲目扩容到配比优化
以 Chinchilla Scaling Laws 为代表的工作给出一个关键结论: 在固定训练计算预算下,参数规模与训练 token 数存在更优配比。
这改变了行业实践:
- 不再默认“参数越大越好”;
- 开始重视“模型大小 vs 数据量”是否匹配;
- 训练计划从单点目标变成联合优化问题。
工程影响非常直接:
- 预算规划更可预测;
- 数据建设的重要性显著上升;
- 过度堆参数但数据不足的低效训练被系统性减少。
6.2 能力迁移:KD 与 LoRA 降低迭代成本
当基础模型训练成本高昂时,能力迁移成为必要手段。
- Knowledge Distillation (KD):student 学 teacher 的软分布,迁移类别间相对关系知识;
- Low-Rank Adaptation (LoRA):冻结主干参数,只训练低秩增量矩阵,降低微调成本。
两者解决的问题不同但互补:
- KD 更像“知识压缩与转移”;
- LoRA 更像“低成本任务适配”。
在产品迭代中,它们共同带来的价值是:
- 缩短实验闭环;
- 降低多任务/多行业定制成本;
- 让能力复用从“重训级”下降到“微调级”。
6.3 QAT:把部署约束前移到训练期
很多团队经历过同一个问题: 全精度模型效果很好,一量化上线就掉点明显。
Quantization-Aware Training (QAT) 的思路是: 在训练阶段就模拟低比特量化噪声,让模型提前适应部署形态。
它的工程意义是:
- 缩小“训练指标”和“上线指标”的鸿沟;
- 降低后期量化补救成本;
- 提升低比特推理的稳定性与可预期性。
代价是训练流程更复杂, 并且需要把量化配置、校准策略、推理后端能力一起纳入训练设计。
6.4 训练策略正在从“单技术点”走向“策略组合”
现实项目中,很少只用一种技术:
- 用 Scaling Law 定训练配比;
- 用 KD/LoRA 做能力迁移与快速迭代;
- 用 QAT 对齐部署硬件约束。
也就是说,Training & Scaling 的主线正在形成完整链路: 从预训练预算决策,到微调迁移,再到部署可用性对齐。
6.5 这条主线的核心权衡
训练侧决策可归纳为四个平衡:
- 效果上限:模型最终能力能到哪里;
- 训练预算:算力、数据、时间是否可承受;
- 迭代效率:实验闭环速度是否足够快;
- 部署一致性:训练产物上线后是否稳定复现。
一个常见误区是把这些目标分开做。 更稳妥的做法是从 Day 1 就把“上线约束”写进训练目标, 让训练不只是追 benchmark,而是直接服务交付。
7. 主线六:Inference & Serving 如何把模型能力变服务能力
训练出来的模型能力,只有在线上可稳定交付时才有业务价值。 因此 Inference & Serving 的核心目标不是“理论最快”, 而是满足真实 SLA:
- 首 token 延迟(TTFT)可接受;
- 持续生成速度(tokens/s)稳定;
- 在并发流量下成本可控且不抖动。
这条主线可看成三个层次:算子效率、内存管理、调度系统。
7.1 FlashAttention 与 PagedAttention:算得快、存得省
- FlashAttention:通过分块计算与访存重排,减少中间结果反复写回 HBM;
- PagedAttention:把 KV cache 做分页管理,提升请求动态进出时的内存利用率。
两者关注点不同但互补:
- FlashAttention 主要优化“算子执行路径”;
- PagedAttention 主要优化“缓存生命周期管理”。
实际服务中,二者通常配合使用: 前者提升单步效率,后者提升多请求并发下的内存弹性。
7.2 Speculative Decoding:减少昂贵模型串行调用
Speculative Decoding 的关键机制是“先草稿,后校验”:
- 小模型先生成候选 token 序列;
- 大模型并行验证并尽量接受前缀;
- 仅在分歧位置回退并继续。
它的收益来自减少大模型逐 token 串行执行次数。 在合适的草稿模型质量下,可显著降低时延。
但效果高度依赖匹配度:
- 草稿模型太弱,接受率低,收益被回退抵消;
- 草稿模型太强,又会增加额外计算成本。
所以它本质是系统协同优化问题,而不是单一解码技巧。
7.3 Continuous Batching:把 GPU 利用率拉满
传统静态批处理往往要等整批结束再调度下一批, 会在长短请求混合流量下造成大量空转。
Continuous Batching 改为按 token 步动态调度:
- 新请求可在合适时机插入;
- 已完成请求立即退出;
- GPU 始终尽量保持高利用率。
这通常会显著提升吞吐并降低平均等待时间, 但调度器复杂度也随之上升,需要更精细的队列与资源控制策略。
7.4 Serving 优化的真实难点:多目标同时成立
线上系统很少只优化一个指标。 你可能同时面临:
- 高峰并发要扛住;
- 长上下文用户不能完全挤占资源;
- 成本预算要求稳定;
- 质量不能被激进优化伤害。
这决定了 Serving 设计必须是闭环: 模型结构、KV 策略、调度策略、硬件拓扑一起联合优化。
7.5 这条主线的核心权衡
Inference & Serving 的最终平衡点通常是:
- 时延:用户体感是否达标;
- 吞吐:单位硬件能服务多少请求;
- 成本:单位 token 的综合价格;
- 复杂度:系统是否可维护、可观测、可演进。
经验上,最稳妥路径是分阶段推进:
- 先做算子和缓存基础优化(FlashAttention/PagedAttention);
- 再引入调度优化(Continuous Batching);
- 最后评估更高阶策略(Speculative Decoding)并做端到端收益验证。
8. 综合视角:演进不是替换,而是组合
到这里可以看到一个清晰结论: Transformer 演进不是“新技术替换旧技术”, 而是围绕不同约束做模块化组合。
同一个模型在不同阶段的最优解通常不同:
- 训练阶段更关注可训练性、容量扩展、预算效率;
- 推理阶段更关注时延、吞吐、内存与成本;
- 产品阶段还要加上可维护性、可观测性与稳定交付。
因此,技术选型应从“目标驱动”出发,而不是“名词驱动”。
8.1 一个可执行的选型顺序
可以按下面的顺序做架构决策:
- 先定业务约束:质量目标、SLA、单位成本、目标上下文长度;
- 再定主干机制:Position/Attention/Norm 的基础组合;
- 评估容量策略:Dense + GLU 还是引入 MoE;
- 确定训练策略:Scaling 配比、迁移方案(KD/LoRA)、是否 QAT;
- 落地 serving 栈:KV 管理、批处理调度、是否投机解码;
- 建立闭环评估:离线指标与线上指标统一验证。
这个顺序的好处是: 每一步都服务上一步的约束,避免局部优化互相打架。
8.2 常见误区
实践里最常见的三类误区:
- 只看单点 benchmark,不看端到端交付指标;
- 只看最大上下文配置,不测真实长输入质量;
- 先堆系统复杂度,再补模型稳定性,导致维护成本失控。
换句话说,真正的风险往往不在“技术不先进”, 而在“技术组合与业务约束不一致”。
8.3 最后一句话
对于大多数团队,最优路线通常不是最激进方案, 而是那条在当前资源条件下可稳定复现、可持续迭代、可按 SLA 交付的组合路径。
9. 原始详细列表(重构为索引版)
这一节保留“术语全量清单”,但用途改为:
- 快速检索某个名词属于哪条主线;
- 作为后续单点深挖章节的目录索引;
- 避免正文主线被术语枚举打断。
阅读建议:
- 第一次阅读先看前 1-8 节主线叙事;
- 需要查某个技术时,再回到本节按主线定位。
9.1 从 Standard Transformer 起步
架构基础模块
- Encoder
- Decoder
- Attention
- Feed-Forward Network (FFN)
起点阶段的基础变体
- Dense FFN
- Sparse Mixture of Experts (Sparse MoE)
9.2 Standard Transformer 之后的演化主线(详细枚举)
Positional Representation
- Positional Encoding (PE)
- Learned Positional Embedding
- Rotary Positional Embedding (RoPE)
- Yet another RoPE extensioN (YaRN)
- Attention with Linear Biases (ALiBi)
- extrapolatable Rotary Position Embedding (xPos)
- Position Interpolation (PI)
- No Positional Encoding (NoPE)
Normalization Strategy
- Layer Normalization (LayerNorm)
- Root Mean Square Layer Normalization (RMSNorm)
- Scale Normalization (ScaleNorm)
- Pre-Normalization (Pre-Norm)
- Post-Normalization (Post-Norm)
- Deep Normalization (DeepNorm)
- Query-Key Normalization (QK-Norm)
- Key-Value Normalization (KV-Norm)
Residual Connection 设计演化
- Residual Connection (RC)
- Highway Connection (HC)
- Multi-Head Highway Connection (mHC)
- Attention Residual
Feed-Forward Network (FFN) 演化
- Dense FFN
- Gated Linear Unit (GLU) Family
- Gaussian Error Linear Unit (GEGLU)
- Swish-Gated Linear Unit (SwiGLU)
- Mixture of Experts (MoE)
- GShard Mixture of Experts (GShard MoE)
- Switch Transformer (Switch MoE)
- DeepSeek Mixture of Experts (DeepSeek MoE)
Attention 演化:Dense Attention 家族
- Multi-Head Attention (MHA)
- Multi-Query Attention (MQA)
- Grouped-Query Attention (GQA)
- Multi-head Latent Attention (MLA)
- Multi-Head Latent Attention with Decoupled RoPE (DeepSeek MLA)
Attention 演化:Sparse Attention 家族
- Dilated Sliding Attention (DSA)
- Sliding Window Attention (SWA)
- Cross-Shaped Attention (CSA)
- Hierarchical Context Attention (HCA)
- Longformer Attention
- BigBird Attention
Attention 演化:Linear / State-Space-Like 家族
- Linear Transformer
- Performer (FAVOR+)
- Kimi Delta Attention (KDA)
- Gated DeltaNet
- Lightning Attention
- Mamba (Selective State Space Model, SSM)
- Retentive Network (RetNet)
- Receptance Weighted Key Value (RWKV)
Training & Scaling
- Chinchilla Scaling Laws
- Knowledge Distillation (KD)
- Quantization-Aware Training (QAT)
- Low-Rank Adaptation (LoRA)
Inference & Serving
- FlashAttention
- PagedAttention
- Speculative Decoding
- Continuous Batching