知识全景图/ 软件工程与系统/ 人工智能全景图/ Transformer 底层图谱

Transformer 架构、注意力、位置编码与关键子层底层图谱

把大模型从“会说话的黑箱”拆成可理解的计算链路:文本如何变成向量,向量如何互相看见,子层如何归一化与加工,位置如何编码,最后如何逐 token 生成答案;QKV、位置编码、Norm 与 FFN 的机制细节已并入本页

阅读定位: 这一页只处理大语言模型最核心的结构底座:Token、Embedding、位置、Attention、Transformer Block 和生成循环。 它不展开 tokenizer 训练、词表兼容、权重文件、训练集、分布式训练、推理服务、RAG 或 Agent;文字如何先变成 token id,继续看 Tokenizer / 词表 / 文本表示;Q/K/V 投影、多头注意力、mask、GQA/MQA 和注意力头排查,继续看 QKV / Multi-Head Attention;位置编码、RoPE 和长上下文外推的细节,继续看 位置编码 / RoPE;LayerNorm、RMSNorm、PreNorm 和 residual stream 的稳定性细节,继续看 Norm / Residual;FFN、SwiGLU、gate/up/down projection 和 MoE 专家细节,继续看 MLP / FFN / SwiGLU;结构如何落成参数、checkpoint 和模型格式,继续看 参数 / 权重 / Checkpoint

已并入:QKV 与多头注意力机制细节(第六节)、位置编码与 RoPE(第七节)、Normalization 与 Residual(第八节)、FFN 与 MoE(第九节)。

一、最小计算链路
文本
用户输入
Token
切成片段
Embedding
查表成向量
Attention
互相关注
Transformer
多层变换
Logits
预测下个 token
环节它解决什么问题你应该抓住的直觉常见误解
Tokenization把连续文本变成模型可处理的离散编号模型不是直接读字词,而是读 token 序列;细节见 Tokenizer / 词表把 token 等同于汉字、英文单词或语义单位
Embedding把 token id 映射成高维向量向量是模型内部的工作语言以为 embedding 本身已经“理解”完整语义
Position让模型知道 token 的顺序同样的词在不同位置,作用可能不同;细节见 位置编码 / RoPE以为 Transformer 天生知道顺序
Self-Attention让每个位置读取其他位置的信息每个 token 都在问:我现在该看谁以为 attention 就等于人类注意力
Feed Forward对每个位置做非线性特征变换Attention 负责混合信息,FFN 负责加工信息;细节见 MLP / FFN / SwiGLU只记住 Attention,忽略 FFN 的容量作用
Logits / Sampling给所有候选 token 打分并采样生成不是一次写完,而是一步一步选下一个以为模型内部先有完整答案再输出
1.1 从 token 到 logits:同一条链路的三种读法
读法链路顺序关键问题继续下钻
训练视角文本样本 → chat template / packing → token id → causal mask → forward → logits → next-token loss → 反向传播模型为什么能从大量文本里学到条件概率、格式、模式和部分世界知识?语言建模目标 / Batch / Mask / Packing / 优化器 / Loss
推理视角用户消息 → message serialization → token id → prefill → KV cache → decode loop → logits → softmax / sampling → 新 token为什么输入越长首 token 越慢,输出越长总耗时越高?Chat Template / 推理计算 / KV Cache / 解码 / 采样
工程视角请求上下文 → token 预算 → 截断 / 压缩 → 模型路由 → 参数配置 → 流式返回 → Trace / Eval为什么同一个模型在不同上下文、参数、路由和后处理下表现差别很大?上下文组装 / 模型路由 / 一次请求的一生

抓住一个顺序

底层理解不要把概念散着背。最稳的顺序是:消息先变成 token 序列,token 查表变成向量,位置机制注入顺序,Transformer block 反复混合和加工信息,最后输出 logits;训练时 logits 接 loss,推理时 logits 接采样。大多数 AI 工程问题,最后都能回到这条链路上的某个位置。

二、Token:模型看见世界的颗粒度
Token 不是词
  • 英文长词可能被拆成多个子词
  • 中文可能按字、词片段或混合方式切分
  • 标点、空格、换行、代码缩进也可能成为 token
  • 同一句话在不同 tokenizer 下长度可能不同
Tokenizer 的工程影响
  • 上下文窗口按 token 计,不按字符计
  • API 计费通常也按 token 计
  • 代码、表格和混合语言文本可能更耗 token
  • RAG 分块时必须用 token 预算约束长度
词表是能力边界之一
  • 常见片段切得短,罕见片段切得碎
  • 领域术语如果总被切碎,学习和生成会更吃力
  • 多语言模型需要在词表容量和语言覆盖之间取舍
  • 扩词表不是免费午餐,会影响训练与兼容性

最小直觉

Token 是模型的输入颗粒度。你在 Prompt 里写的是人类文本,模型实际处理的是一串 token id。上下文窗口、成本、分块、缓存和生成速度,最终都会回到 token 数量。

三、Embedding:把离散符号放进连续空间
概念作用可以怎么理解边界
Input Embedding把 token id 查表成向量每个 token 有一组可训练坐标单个 token 向量不等于完整语义
Position Encoding给 token 注入顺序信息让模型区分“猫追狗”和“狗追猫”RoPE / position ids / 长上下文外推
Hidden State每层 Transformer 后的位置表示同一个 token 随上下文逐层改变含义不能把它当成固定词典解释
Output Projection把最终向量投回词表分数问所有 token:谁最可能是下一个高分不代表事实正确,只代表模型条件概率高

Embedding 和 RAG 里的 Embedding 不是一个层级

模型内部的 token embedding 是训练模型的一部分;RAG 常说的 embedding 通常是把句子、段落或文档编码成检索向量。二者都叫 embedding,但一个服务于模型计算,一个服务于语义检索。

四、Attention:信息路由机制

Q、K、V 的直觉

Q 像“我现在想找什么信息”,K 像“我这里有什么特征可被匹配”,V 像“如果你看我,我能提供什么内容”。Attention 先用 Q 和 K 计算相关性,再按权重混合 V;更细的多头、mask、GQA/MQA 和 KV Cache 关系见 QKV / 注意力头机制

核心公式

Attention(Q,K,V) = softmax(QK^T / sqrt(d_k)) * V

Causal Mask

Decoder-only 大模型生成时,只允许当前位置看见过去 token,不能偷看未来 token。这就是为什么它可以被训练成“预测下一个 token”的机器。

Self-Attention
同一段序列内部互相读取信息。句子理解、代码上下文、长文档引用关系,都依赖它把远处 token 的信息搬到当前位置。
Multi-Head Attention
多个头并行看不同关系:语法、指代、局部搭配、长距离依赖等。不要把某个头神秘化,它们是分工学习出来的信息通道。
注意力不是事实库
Attention 决定“从上下文里读什么”,不保证读到的信息是真的,也不保证模型不会凭训练记忆补全不存在的东西。
五、Transformer Block:重复堆叠的计算单元
模块职责为什么需要
LayerNorm / RMSNorm稳定每层输入分布深层网络训练更稳定,梯度更可控;细节见 Norm / Residual
Attention跨位置混合上下文信息让每个 token 的表示受其他 token 影响
Residual Connection把原输入绕过子层加回来避免深层网络丢失原信息,帮助梯度传播;细节见 残差流
Feed Forward Network对每个位置做非线性变换提供模型容量,完成特征加工和组合;细节见 MLP / FFN / SwiGLU
Stacking多层重复同类结构低层偏局部模式,高层逐步形成更抽象表示

三类常见架构

Encoder-only: 适合理解和分类,例如 BERT 路线。

Decoder-only: 适合自回归生成,是多数通用 LLM 的主流路线。

Encoder-Decoder: 适合输入到输出的转换任务,例如早期机器翻译和部分序列到序列模型。

六、QKV 与多头注意力机制细节

这一节从 Attention 子层视角补 Q、K、V 的机制细节、多头注意力、注意力边界与可解释性,与第四节(信息路由直觉)互补。

6.1 Attention 子层的最小链路
Hidden States
每个位置的向量
Q / K / V
三组线性投影
QK Score
匹配强度
Mask + Softmax
可见性 / 权重
Weighted V
读取内容
Output Projection
写回残差流
步骤做什么抓住的直觉常见失败
输入 hidden state每个 token 位置都有一个当前层表示Attention 处理的是上下文化向量,不是原始文字把注意力图误读成词典关系
Q / K / V 投影用三组权重把同一 hidden state 投成 Query、Key、ValueQ 负责找,K 负责被匹配,V 负责被读取把 Q/K/V 当成三份不同文本
QK 打分用点积计算当前位置和历史位置的匹配强度分数越高,越可能从那个位置读取信息忽略缩放、位置编码和 mask 的影响
Mask + Softmax屏蔽不可见位置,再把分数转成权重模型只能看允许看的 tokenmask 错导致偷看未来、看见 padding 或漏看上下文
混合 V按权重加权求和 Value 向量Attention 的输出是从可见位置搬来的信息混合以为 attention 只是在“标重点”
输出投影把多头结果拼接并投影回模型维度多个信息通道汇总后写回残差流忽略 output projection 和后续层的再加工
一句话:

Q/K 决定“看哪里”,V 决定“拿什么”,mask 决定“能不能看”,softmax 决定“看多少”。

6.2 Q、K、V 到底是什么
对象来自哪里它负责什么可以怎么想
Query当前位置 hidden state 乘以 Wq表达当前位置正在寻找什么信息问题、检索意图、当前槽位需求
Key各位置 hidden state 乘以 Wk表达每个历史位置有什么可被匹配的特征索引、标签、可匹配线索
Value各位置 hidden state 乘以 Wv表达命中该位置后可以读取的内容实际搬运的信息包
QK^TQuery 与所有 Key 做点积生成 attention score当前位置对每个可见位置的匹配强度
softmax(score)归一化后的权重决定各位置 Value 混合比例一个可学习的信息路由分布

为什么要除以 sqrt(d_k)

Q/K 维度越大,点积分数的尺度越容易变大。除以 sqrt(d_k) 是为了让 softmax 不至于过早变得极端,帮助训练稳定。

为什么 Q/K 会和 RoPE 强相关

RoPE 通常作用在 Q/K 上,让两个位置的 attention score 自然携带相对距离信息。位置机制不只是输入前贴标签,而是进入了“谁看谁”的匹配过程。

6.3 Mask:注意力里的边界和权限
Mask 类型限制什么典型场景错误症状
Causal mask当前位置不能看未来 tokendecoder-only LLM 训练和生成训练泄漏、评测虚高、生成行为异常
Padding mask不让模型看 padding 位置batch 推理、不同长度样本混合batch 后输出和单条输出不一致
Attention mask控制哪些 token 可见prefix、特殊模板、分段输入模型漏看系统指令或看见不该看的片段
Sliding window mask只允许看局部窗口长上下文降成本远距离依赖丢失、跨段推理变弱
Block / sparse mask按块或稀疏规则可见长序列、结构化文档、特殊架构局部正常,长距离证据不稳定
排查直觉:

很多看起来像“模型玄学变笨”的问题,其实是 mask、padding side、position ids 或 KV Cache offset 错了。先排输入可见性,再谈模型能力。

6.4 Multi-Head Attention:不是一个头看所有关系
为什么要多头
不同 head 在不同投影子空间里计算 attention。一个 head 可能偏局部搭配,一个偏括号匹配,一个偏指代,一个偏格式边界。它们并行提供多种信息通道。
头不是固定功能模块
head 的功能是训练中形成的,不是人工预先指定。某些头可能有可解释模式,但不能把一个头粗暴命名为“事实头”或“语法头”。
拼接后还要投影
所有 head 的输出会 concat,再经过 output projection 写回模型维度。后续层、MLP、残差流会继续加工,单个 head 不是最终答案。
机制直觉收益边界
Multi-Head Attention多个独立 head 并行读上下文能同时捕捉不同关系显存和计算更重
Multi-Query Attention多个 Q head 共享一组 K/V显著降低 KV Cache 占用可能牺牲部分表达灵活性,需要任务评测
Grouped-Query Attention多个 Q head 分组共享 K/V在质量和推理成本之间折中不同模型实现细节不同
Head pruning裁掉低贡献 head压缩模型或解释结构贡献依赖任务和层,不能只看注意力强弱
6.5 Attention Head 和可解释性
观察对象能告诉你什么不能直接证明什么继续深入
Attention pattern某个 head 在某层偏向看哪些位置不能直接证明输出因果由它决定可解释性 / 模型内部表征
Induction-like pattern模型可能在复制、续写、模板匹配中利用历史模式不能说明模型真的“理解规则”Prompt / 上下文工程
Attention ablation去掉或替换某些头后输出是否变化单次样本不能代表全局功能模型评测
Activation patching某个中间状态是否参与特定行为不能替代真实生产评测和安全审计模型内部机制
实用边界:

Attention 可视化适合找线索,不适合直接当审计证据。要证明某个 head 真有作用,需要干预实验、消融、跨样本稳定性和外部行为评测。

6.6 和 KV Cache、长上下文、推理性能的关系
主题Attention 层发生什么工程后果回读页面
Prefill一次性为整个输入序列计算 Q/K/V 和 attention输入越长,首 token 等待越明显推理计算 / KV Cache
Decode每个新 token 只新增当前 Q,并读取历史 K/V输出越长,总耗时越长解码 / 采样
KV Cache缓存每层每个历史 token 的 K/V省重复计算,但消耗显存推理计算 / KV Cache
RoPE / position idsQ/K 携带位置旋转或位置关系位置错位会导致长上下文质量异常位置编码 / RoPE
GQA / MQA减少 K/V head 数量降低 KV Cache 和带宽压力模型服务 / 网关
FlashAttention优化 attention 中间结果和显存读写提升长上下文 prefill 效率AI Infra / GPU
6.7 常见排查清单
症状优先怀疑检查动作
单条输入正常,batch 后异常padding mask、position ids、left/right padding对比 batch 与 single 的 token、mask、position ids
长上下文越长越漏证据attention 稀释、位置偏差、Top-K 片段过多做位置扰动、needle retrieval、chunk 排序对照
续写重复或突然跑偏KV Cache offset、cache position、stop sequence检查 past length、cache reuse 边界和 position continuity
量化后代码或长文本能力掉Q/K/V 或 attention 输出精度敏感按任务切片比较 logits、attention 稳定性和最终评测
可解释图看起来合理但答案仍错Attention pattern 只是线索,后续层和 MLP 改写了表示做消融、activation patching 和外部行为评测
6.8 Attention 状态证据包:谁在看谁,以及边界是否正确
证据节点必须记录的字段用来排查什么
输入边界token_ids_hash、attention_mask_hash、position_ids_hash、padding_sidebatch 后异常、padding 错位、位置错位和不可见 token 泄漏
Q / K / V 投影layer_id、head_id、qkv_dtype、quantization_config、shape_summary量化、张量并行或模型转换是否破坏了注意力计算
注意力模式attention_pattern_summary、top_attended_positions、mask_violations、entropy长上下文漏证据、格式 token 过强、注意力过度集中或过度稀释
KV Cache 连续性cache_position、past_length、kv_block_id、reuse_boundary、eviction_count续写重复、跨请求污染、cache offset 错误和长任务恢复失败
行为连接trace_id、needle_test_id、ablation_result、downstream_metric观察到的 attention 变化是否真的解释了输出行为,而不是漂亮图像
6.9 常见误区
误区:QKV 是三份输入文本
Q、K、V 都是同一层 hidden state 经过不同权重投影得到的向量角色,不是三份不同材料。
误区:Attention 权重就是解释
注意力权重能显示信息路由倾向,但输出还受多头拼接、输出投影、残差流、MLP 和后续层影响。
误区:多头越多越强
head 数量会影响表达和成本,但能力还取决于深度、宽度、数据、训练目标和整体架构。更多 head 也意味着更多调度和缓存压力。
误区:KV Cache 不影响模型行为
正确的 KV Cache 只是复用历史状态;一旦 cache position、mask 或 prefix 复用边界错了,就会直接改变生成行为。
七、位置编码、RoPE 与长上下文外推

这一节回答 Transformer 为什么需要位置、RoPE 的最小直觉、长上下文外推的边界,以及 position_ids 为什么是部署雷区。

7.1 Transformer 为什么需要位置
Token IDs
离散词表
Embedding
内容向量
Position Signal
顺序 / 距离
Attention Score
谁看谁
KV Cache
历史状态
Long Context
外推 / 稳定性
问题没有位置会怎样位置机制解决什么工程上会影响什么
顺序“猫追狗”和“狗追猫”的 token 集合接近,但含义完全不同让模型知道 token 在序列中的先后关系语法、代码、表格、步骤、引用顺序
距离模型难以区分相邻依赖和远距离依赖让 attention 感知两个位置相隔多远长文档指代、跨段引用、代码作用域
因果生成Decode 时新 token 不知道自己是第几个位置position ids 和 causal mask 共同约束生成路径KV Cache 复用、流式生成、continue generation
外推训练只见过 4K,推理硬拉到 32K 会失真通过缩放、插值、微调或窗口策略缓解位置分布漂移长上下文质量、成本、延迟和开源模型兼容
一句话:

Transformer 的 attention 本身更像“内容匹配”,位置编码给它补上“顺序和距离”。没有位置,模型很难知道同样一组 token 应该按什么时间线和结构理解。

7.2 Absolute、Relative、RoPE、ALiBi
机制核心直觉优点边界
Learned absolute position每个位置有一个可训练向量,和 token embedding 相加简单直接,早期模型常见训练窗口之外的位置没有学过,外推能力弱
Sinusoidal position用不同频率的正弦余弦函数表示位置不需要学习位置表,有一定外推直觉长距离表现仍取决于训练分布和模型使用方式
Relative position biasattention 里加入相对距离偏置直接表达两个 token 相隔多远实现和缓存策略更复杂,窗口外仍需设计
RoPE在 Q/K 向量上按位置做旋转,让内积天然携带相对位置信息适合 decoder-only LLM,和 KV Cache 配合广泛长上下文外推需要缩放、插值或训练配合
ALiBi给 attention score 加随距离增长的线性惩罚偏向近邻,外推实现较简洁表达能力和不同任务适配需要实测

为什么 RoPE 很常见

RoPE 不只是给 token embedding 加一个位置向量,而是在 attention 的 Q/K 空间里注入位置旋转。这样两个位置之间的相对距离会影响 attention score,很适合自回归生成和 KV Cache 场景。

7.3 RoPE 的最小直觉
不是给词贴标签
RoPE 不是简单告诉模型“这是第 17 个 token”,而是让 Q/K 向量根据位置发生旋转,进而让不同位置之间的内积带上相对距离信息。
位置越远,相位差越大
可以把它想成不同频率的旋钮。短距离和长距离会在多个频率维度上留下不同相位差,模型用这些差异判断依赖关系。
频率决定外推脾气
训练窗口之外的位置会遇到模型没怎么见过的相位组合。长上下文缩放本质上是在重新安排这些相位和距离映射。
对象RoPE 里发生什么常见排查
Q / K按 position id 旋转,attention score 因位置关系而变化检查 RoPE 实现、base、scaling、position ids
V通常不直接旋转,作为被加权混合的内容值不要把 Q/K/V 的角色混在一起
position ids决定当前位置使用哪一组旋转角度续写、padding、batch、KV Cache 时最容易错
attention mask决定哪些位置可见,和 position ids 共同塑造生成行为padding side、causal mask、prefix cache 要对齐
7.4 长上下文外推:不是把 max length 改大
做法直觉能解决什么风险
直接改配置把允许长度从 4K 改到 32K通常只能让程序跑起来模型没有学过这些位置,质量可能明显退化
Position interpolation把长序列位置压缩映射回训练过的范围减少外推到陌生相位的程度短距离分辨率可能下降,细节依赖缩放策略
NTK / dynamic scaling调整 RoPE 频率或 base,让长距离映射更平滑让 RoPE 在更长窗口下更可用不同模型和任务收益差异大,需要回归评测
Long-context fine-tuning用长序列数据继续训练或微调让模型真正见过长距离模式数据、算力、评测和灾难性遗忘都要治理
Sliding / chunked attention只看局部窗口或分块聚合控制计算和 KV Cache 压力远距离依赖可能丢失,需要摘要或检索配合
最大坑:

“支持 128K 上下文”不等于“128K 内任何位置的信息都同样可用”。长上下文质量要看 needle retrieval、跨段推理、引用忠实、位置偏差、成本和尾延迟,而不是只看最大窗口数字。

7.5 Position IDs、Padding 与 KV Cache
场景位置相关风险典型症状检查项
Batch 推理不同长度样本 padding 后 position ids 错位同一输入单条跑正常,batch 后输出异常padding side、attention mask、position ids 生成逻辑
继续生成新 token 的位置必须接在历史 KV 后面续写重复、跑偏、格式突然坏掉past length、cache position、position offset
Prefix cache共享前缀缓存时,后续请求位置偏移要一致缓存命中后质量反而变差prefix token 数、cache reuse 边界、position continuity
RAG 长文档关键证据放在很靠后位置,可能受位置偏差影响模型漏看中间段或偏向开头 / 结尾chunk 排序、引用位置、重排和摘要压缩
开源模型部署RoPE base、scaling、max position 与权重训练不匹配短文本正常,长文本质量崩config、model card、推理框架默认 scaling

为什么 position ids 是部署雷区

Tokenizer 错了,模型读错 token;position ids 错了,模型读错顺序和距离。尤其在 padding、KV Cache、prefix cache、分块推理和长上下文扩展里,位置错位会表现成很玄学的质量退化。

7.6 长上下文质量怎么评测
Needle retrieval
把关键事实埋在长文档不同位置,测试模型能否找回。要按开头、中间、结尾、不同长度分桶看。
跨段综合
要求模型合并多个远距离片段,而不是只复述一个命中的段落。适合测长距离依赖和信息整合。
位置偏差
同一证据换不同位置,看答案是否稳定。很多模型会偏向开头、结尾或最近上下文。
成本延迟
长上下文评测必须同时记录输入 token、TTFT、P95、KV Cache 占用和单位请求成本。
实用判断:

如果长上下文只在“找一句话”评测里表现好,不代表它能稳定完成长文档推理、代码仓库理解、法律合同审阅或多文档对比。越接近真实任务,越要测跨段组合和位置扰动。

长上下文位置证据包

长上下文质量问题经常看起来像“模型没理解”,实际可能是 RoPE scaling、position ids、cache position 或证据放置位置不一致。

证据节点必须记录字段用来排查什么
rope_configrope_base、rope_scaling_type、scaling_factor、max_position_embeddings、trained_context_length部署配置是否偏离权重训练和模型卡声明
position_runtimeposition_ids_strategy、cache_position、padding_side、prefix_cache_boundarybatch、续写、prefix cache 下的位置是否连续
evidence_positioncontext_length_bucket、evidence_offset_bucket、chunk_order、needle_eval_id证据放在开头、中间、结尾时质量是否稳定
long_context_gateeval_artifact_id、p95_latency、kv_cache_mode、release_gate_id拉长窗口后的质量、成本和延迟是否都过关
7.7 和 RAG、记忆、推理成本的关系
相邻主题关系本页补上的视角继续深入
Transformer位置机制是 Transformer 能理解顺序和距离的底层部件解释 position encoding 如何进入 attentionToken / Attention / TransformerQKV / 注意力头
推理计算 / KV Cache长上下文和 KV Cache 都依赖正确的位置连续性解释 position ids、cache position 和长上下文为什么会影响推理稳定性推理计算 / KV Cache
长上下文 / 记忆模型能看多长,不等于系统该记什么区分模型内部位置外推和应用层状态治理长上下文 / 记忆工程
RAG检索片段放在 prompt 的不同位置,会影响模型读取和引用解释 chunk 排序、证据位置和长文档偏差RAG / 知识检索
开源部署模型配置里的 RoPE scaling 和 max position 必须和权重、推理框架一致解释为什么“能加载”不等于“长上下文能用”开源部署
7.9 常见误区
误区:Transformer 天生知道顺序
Self-attention 本身更像集合上的内容匹配。顺序和距离要靠位置机制、mask 和训练分布共同塑造。
误区:RoPE scaling 是万能长上下文开关
缩放可以缓解位置外推,但不能替代长序列训练、任务评测、上下文组织和推理成本治理。
误区:最大窗口越大越强
最大窗口只是容量上限。真实能力要看不同位置的信息召回、跨段推理、噪声鲁棒性和成本延迟。
误区:位置问题只影响模型训练
部署时的 padding、position ids、KV Cache、prefix cache、推理框架配置都可能制造位置错位。
八、Normalization、Residual 与训练稳定性

这一节回答深层模型为什么需要残差和归一化、LayerNorm / RMSNorm 归一化了什么、PreNorm / PostNorm 的取舍,以及训练稳定性和部署里的 Norm 风险。

8.1 为什么深层模型需要残差和归一化
Input
隐藏状态
Norm
尺度校准
SubLayer
Attention / MLP
Residual Add
加回主路
Next Block
继续堆叠
Stable Depth
可训练深度
问题没有它会怎样Residual / Norm 做了什么工程上看哪里
信息被层层改写深层子层可能把早期信息冲掉Residual 让原隐藏状态沿主路直接传下去残差尺度、layer 输出范数、表示漂移
梯度难以回传深层网络容易梯度消失、爆炸或更新不均残差路径给梯度提供更短的回传通道gradient norm、per-layer update ratio
激活尺度漂移每层输入分布不断变化,训练不稳定LayerNorm / RMSNorm 把输入尺度拉回可控范围activation norm、NaN、溢出、loss spike
深度扩展困难层数越多越难训,学习率窗口变窄PreNorm、残差缩放和初始化共同扩大稳定区间训练初期 loss 曲线、warmup、学习率上限
一句话:

Residual 保留“原信号和梯度主路”,Normalization 控制“每次进入子层前的尺度”。二者合在一起,才让 Transformer block 能被重复堆到很深。

8.2 Residual Stream:模型内部的主干河道
残差不是旁路装饰
在现代 Transformer 里,隐藏状态沿 residual stream 不断流动,Attention 和 MLP 更像把增量写回这条主路。
每层学的是增量
子层不必重新生成完整表示,只要学会“在当前表示上加什么”。这让优化更容易,也让深层表示逐步变形。
可解释性会追踪残差流
很多 mechanistic interpretability 分析会看 attention head、MLP 和 residual stream 如何共同把特征写入、搬运和读出。

最小计算式

x_next = x + SubLayer(Norm(x)) 是 PreNorm Transformer 的常见直觉。关键不是记公式,而是抓住:主路保留 x,子层写入一个经过尺度控制的增量。

8.3 LayerNorm 与 RMSNorm 到底归一化了什么
机制归一化对象核心直觉常见位置
BatchNorm跨 batch 维度统计均值 / 方差适合 CNN 等场景,但对变长序列和小 batch 不友好LLM 主干里较少用
LayerNorm对单个 token 的 hidden dimension 做均值 / 方差归一化每个位置独立校准自己的特征尺度Transformer 常见基础配置
RMSNorm对 hidden dimension 的均方根尺度做归一化,通常不减均值保留方向,控制长度,计算更省许多现代 decoder-only LLM 常用
Scale 参数归一化后再乘可学习缩放不是把所有特征永远压平,而是给模型可学习的尺度自由度LayerNorm / RMSNorm 权重
抓住边界:

Norm 不是让模型“更懂语义”,而是让每层输入的数值尺度更可控。语义能力来自参数、数据、目标函数和层间计算;Norm 负责让这套计算别太容易失控。

8.4 PreNorm、PostNorm 与 Sandwich Norm
结构形式直觉优点代价 / 风险
PostNormx_next = Norm(x + SubLayer(x))早期 Transformer 经典结构,输出每层后被校准深层训练更容易不稳定,对 warmup 和初始化更敏感
PreNormx_next = x + SubLayer(Norm(x))梯度路径更直接,深层 LLM 训练更稳残差流尺度会逐层积累,需要配合初始化和缩放
Sandwich Norm子层前后都放 norm 或额外校准进一步控制激活范围计算和实现更复杂,收益要靠实测
Final Norm输出头前再做一次 norm让最终 hidden state 进入 LM head 前更稳定必须和权重格式、推理实现保持一致

为什么现代 LLM 常见 PreNorm / RMSNorm

大模型层数深、序列长、混合精度训练多,稳定性窗口很重要。PreNorm 让梯度能更直接沿残差路径回传,RMSNorm 用更简单的尺度控制降低计算和数值负担。

8.5 训练稳定性:Norm 只是一块拼图
相邻机制和 Norm / Residual 的关系常见问题继续深入
学习率 / WarmupNorm 扩大稳定区间,但不能抵消过猛的更新loss spike、NaN、训练初期崩坏优化器 / Loss / 训练稳定性
初始化 / 残差缩放层数越深,残差增量越需要控制初始规模深层激活范数逐层膨胀或过弱神经网络 / 训练循环
混合精度Norm 的统计和除法对数值范围敏感FP16 溢出、下溢、loss scale 抖动AI Infra / GPU
Attention / MLPNorm 通常放在子层前,控制进入 attention 和 MLP 的尺度某一类子层输出范数异常大TransformerMLP / FFN
Logits / LM Head最终 norm 会影响输出分数尺度logits 过尖、过平、校准变差Logits / Softmax
8.6 推理和部署里的 Norm 风险
场景风险症状检查项
权重转换LayerNorm / RMSNorm 权重名、epsilon 或顺序被转错能加载但输出质量离谱config、state dict key、eps、final norm
量化norm 附近的尺度变化影响量化误差短文本还行,长文本或复杂任务退化per-layer error、校准集、是否跳过敏感层
推理框架融合 kernel 的 norm 实现和原模型不一致不同后端输出不一致RMSNorm kernel、dtype、epsilon、近似误差
LoRA / Adapter适配器写入残差流,尺度不当会干扰主模型微调后格式、风格或能力失衡adapter scale、rank、目标层、回归评测
长上下文残差流随长序列和多层堆叠积累噪声越长越跑偏、引用不稳position 机制、KV Cache、激活范数和真实任务评测
最大坑:

Norm 出错常常不是程序崩溃,而是“能跑但模型变笨”。权重转换、推理框架、量化和 adapter 合并时,Norm / residual 相关差异要用固定输入做输出回归。

8.7 怎么诊断 Norm / Residual 问题
看激活范数
按层记录 hidden state、attention 输出、MLP 输出和 residual 后范数,观察是否逐层爆炸、塌缩或某层突变。
看梯度范数
训练时按参数组看 gradient norm 和 update ratio,区分是学习率过猛、数据异常,还是某类层不稳定。
做后端回归
同一 prompt 固定 seed,比对原框架、转换后权重、量化后权重和推理引擎输出的 logits 差异。
分层消融
微调或 adapter 出问题时,逐层打开/关闭或调小 scale,看问题是否集中在特定残差写入路径。

Norm / Residual 稳定性证据包

这一层的问题经常表现为“能跑但变差”。证据包要把残差流、归一化配置、精度路径和回归样本绑在一起看。

证据节点必须记录字段用来排查什么
norm_confignorm_type、eps、pre_or_post_norm、final_norm、residual_scale权重转换、推理框架和原模型结构是否一致
activation_profilelayer_id、hidden_norm、attention_out_norm、mlp_out_norm、residual_after_norm哪一层开始爆炸、塌缩或写入异常
precision_pathdtype、norm_kernel_version、quantization_skip_layers、nan_inf_event_id混合精度、融合 kernel、量化是否破坏尺度
regression_samplefixed_prompt_id、logits_diff、adapter_scale、eval_slice、rollback_target微调、adapter 合并或后端切换后质量是否漂移
8.9 常见误区
误区:归一化只是数学细节
Norm 决定深层模型的数值尺度和稳定性窗口,训练、量化、推理后端和权重转换都会受它影响。
误区:Residual 只是防止梯度消失
它同时也是模型内部信息主路。Attention、MLP、Adapter 都是在这条主路上写入增量。
误区:LayerNorm 和 RMSNorm 可以随便替换
它们的统计方式、参数、epsilon 和训练分布不同。替换通常意味着重新训练或至少严肃微调和评测。
误区:训练稳定就代表推理一定安全
转换、量化、融合 kernel、adapter 合并和长上下文都会重新暴露尺度问题。
九、FFN、激活函数与 MoE

这一节回答 FFN / MLP 在 Transformer Block 里的位置、SwiGLU 等激活形态、为什么 FFN 占很多参数和计算,以及它和 MoE 的关系。

9.1 Transformer Block 里 FFN 在哪
Hidden State
当前位置表示
Norm
尺度校准
Attention
跨位置混合
Residual
写回主路
Norm
再次校准
FFN / MLP
非线性加工
Residual
再次写回
模块回答的问题直觉容易忽略什么
Attention当前位置应该读取哪些上下文信息跨 token 信息路由它不是 Transformer 的全部
FFN / MLP读到信息后,当前位置内部怎样加工逐位置非线性变换和特征组合大量参数和计算常常在这里
Activation为什么多层线性变换不退化成一层线性给模型加入弯曲、门槛和选择性激活函数会影响稳定性、稀疏性和吞吐
Gate哪些中间特征应该被放大或抑制用一个分支调制另一个分支SwiGLU / GEGLU 改变权重形状和转换逻辑
一句话:

Attention 像“从上下文里取料”,FFN 像“在当前位置做加工”。只懂 Attention,会漏掉现代 LLM 很大一部分参数、计算和能力形成位置。

9.2 最小 FFN:上投影、激活、下投影
步骤形状直觉做什么工程含义
Up Projectionhidden_size → intermediate_size把每个 token 的表示扩到更宽的中间空间中间维度越大,参数和 GEMM 计算越多
Activation逐元素非线性让网络能表达复杂函数,而不是多层线性叠加GELU、SiLU、ReLU 等会影响速度和数值特性
Down Projectionintermediate_size → hidden_size把加工后的中间特征压回 residual stream 的宽度必须和残差主路形状对齐
Residual Addx + FFN(x)把 FFN 的增量写回隐藏状态尺度过大或量化误差会污染后续层

最小计算式

FFN(x) = W_down * activation(W_up * x) 是非门控 FFN 的简化直觉。现代 LLM 常用门控变体,所以权重名会变成 gate_projup_projdown_proj

9.3 GELU、SiLU、GLU 与 SwiGLU
机制核心直觉常见位置注意点
ReLU负值截断,正值保留早期神经网络常见简单快,但表达和梯度特性不是现代 LLM 主流选择
GELU按概率平滑地放过输入BERT、GPT 早期路线常见比 ReLU 平滑,计算略复杂
SiLU / Swishx * sigmoid(x),小值平滑抑制,大值保留门控 FFN 的基础激活之一常出现在 SwiGLU 里
GLU一个分支生成内容,一个分支生成门控门控前馈网络权重形状和普通 FFN 不同
SwiGLUSiLU(gate) * up 后再下投影许多现代 decoder-only LLM 常用能力和效率都好,但转换、量化和 LoRA 目标层要识别 gate/up/down
抓住直觉:

门控 FFN 不是简单多一个激活函数,而是让模型学会“哪些中间特征现在该开、哪些该关”。这会影响容量、稀疏性、权重命名和微调目标层选择。

9.4 为什么 FFN 常常占很多参数和计算
中间维度通常更宽
FFN 会把 hidden state 扩到几倍宽度,再压回原维度。这个扩张空间带来容量,也带来大量矩阵乘法。
逐 token 独立加工
FFN 不直接跨位置通信,但会对序列里每个 token 都做一次。序列越长,FFN 计算也线性增长。
权重多、带宽也吃紧
推理时 FFN 大矩阵既吃算力,也吃权重读取带宽。量化、kernel fusion 和 batch 编排都会影响吞吐。
成本来源受什么影响优化方向风险
GEMM 计算hidden size、intermediate size、batch、sequence length融合 kernel、张量并行、批处理小 batch 可能吃不满 GPU
激活内存训练时需要保存中间激活反传gradient checkpointing、重计算吞吐下降,训练时间变长
权重带宽参数量、量化格式、设备内存带宽INT8 / 4bit 量化、权重预取质量退化和后端兼容风险
门控分支gate / up / down 多组投影算子融合、正确识别权重名转换和 LoRA 配置容易漏层
9.5 FFN 和 MoE 的关系
模型类型FFN 怎么变好处工程代价
Dense Transformer每层每个 token 都经过同一组 FFN 权重实现简单、吞吐稳定、部署成熟总参数和激活参数一致,扩容成本高
MoE Transformer部分 FFN 被替换成多个专家,token 只路由到少数专家总容量变大,单次激活参数可控路由、负载均衡、跨卡通信和尾延迟复杂
Shared Expert共享 FFN + 路由专家混合保留通用能力,同时增加专家容量实现和权重格式更复杂
Fine-tuned Expert只调部分专家或 adapter可降低微调成本容易造成路由偏移和任务不均衡

为什么 MoE 常从 FFN 下手

FFN 本来就是逐 token 的非线性加工层,把它拆成多个专家比较自然。Attention 负责全局信息路由,FFN / Expert 负责局部特征加工,两者分工不同。

9.6 权重、微调和量化里的 FFN
场景要看什么常见坑继续深入
权重转换gate_projup_projdown_proj、激活函数配置把 SwiGLU 当普通 FFN 转,能加载但质量坏参数 / 权重 / Checkpoint
LoRA / Adaptertarget modules 是否包含 gate / up / down只调 attention,忽略 FFN 可能限制任务适配微调 / 对齐
量化FFN 大矩阵的量化误差和校准集覆盖看似困惑度变化小,复杂任务退化明显压缩 / 量化
推理引擎激活函数、门控乘法、down projection 是否融合后端不支持某种激活或 kernel 慢推理计算
可解释性MLP 神经元、特征方向和残差写入把单个神经元过度解释成单一概念模型内部表征
9.7 怎么排查 FFN / 激活问题
看权重形状
核对 hidden size、intermediate size、gate/up/down projection 形状,以及 config 里的 activation function。
看层输出范数
记录 attention 输出、FFN 输出和 residual 后范数,定位是否某层 FFN 输出异常放大或塌缩。
看后端一致性
同一 prompt 比对原框架、转换后权重、量化权重和推理引擎 logits,确认激活和门控实现一致。
看任务退化切片
FFN 相关量化或微调问题可能先在数学、代码、格式遵循和长上下文综合里暴露。

FFN / 激活证据包

FFN 问题常在权重转换、量化、kernel 融合和 adapter 目标层里暴露。证据包要证明 gate / up / down、激活函数和残差写入都对齐。

证据节点必须记录字段用来排查什么
ffn_confighidden_size、intermediate_size、activation_fn、gate_proj_shape、up_down_shape架构配置和权重张量是否一一匹配
adapter_targettarget_modules、rank、adapter_scale、merge_script_hash、eval_sliceLoRA / Adapter 是否正确写入 FFN 路径
kernel_pathactivation_kernel、fused_mlp_version、dtype、backend_name、logits_diff推理后端和原框架的激活、门控实现是否一致
quant_errorquantization_recipe、calibration_set_id、per_layer_error、rollback_targetFFN 大矩阵量化后是否伤害复杂任务和长尾能力
9.9 常见误区
误区:Transformer 等于 Attention
Attention 负责跨位置信息混合,FFN 负责逐位置非线性加工。现代 LLM 的容量和计算不能只看 attention。
误区:激活函数只是小公式
激活函数会影响训练稳定性、计算图、kernel 支持、量化误差和权重转换。
误区:MoE 专家等于人类专家
专家是被路由器选择的参数子网络,不一定对应清晰学科、语言或任务模块。
误区:只微调 Attention 就够了
很多任务适配会受 FFN / MLP 影响。LoRA 目标层选择要结合任务、模型家族和评测。
十、生成循环:答案是一粒一粒长出来的
已有上下文
前向计算
词表分数
采样策略
新 token
追加上下文
参数 / 机制影响适合场景风险
Temperature控制分布尖锐程度低温用于事实、抽取、格式化;高温用于创意温度高更发散,温度低也不保证正确
Top-p / Top-k限制候选 token 范围控制随机性,避免极低概率候选限制过强会让输出僵硬
KV Cache缓存历史 Key / Value长输出和多轮生成加速长上下文显存占用会快速增长
Stop Sequence遇到特定片段停止生成结构化输出、工具调用、模板边界配置错误会提前截断或停不下来
十一、常见误区
误区:大模型就是搜索引擎
搜索引擎返回已有文档,LLM 根据上下文预测下一个 token。它可能利用训练中学到的知识,但生成机制不是检索机制。
误区:Attention 权重就是解释
Attention 权重可以提供线索,但不能直接等同于模型因果解释。真实行为来自多层、多头、FFN 和采样共同作用。
误区:上下文越长越好
长上下文带来成本、延迟、注意力稀释和无关信息污染。能检索、压缩和分层组织,通常比直接塞满窗口更可靠。
十二、回到 AI 主干
AI 全景 Tokenizer / 词表 QKV / 注意力头 Position / RoPE Norm / Residual MLP / FFN 参数 / 权重 训练 / 推理 / Scaling 能力边界 / 幻觉 Embedding / 向量检索 推理计算 / KV Cache 一次请求的一生 模型服务 / 推理网关 Prompt / 上下文 RAG / 知识检索