从一条直线到大模型输出一个token九输出矩阵与多层堆叠建议先看从一条直线到大模型输出一个token八残差连接与前馈网络上一篇走完了单个 Block 的六步。这一篇把 Block 复制 32 份串起来——不同层的 Block 各学什么2024-2025 各家大模型到底堆了多少层然后用 6 个 token 实地观察浅→中→深到底改了什么——这是理解下一个 token 如何诞生的关键一环。从一条直线到大模型输出一个token九输出矩阵与多层堆叠从一条直线到大模型输出一个token九输出矩阵与多层堆叠1. 堆叠把 Block 串成 32 层1.1 串联规则出口接入口1.2 一行代码的深度1.3 32 套独立权重 接口统一2. 分层不同层的 Block 在做什么2.1 三个实验证据2.2 三级分工以「西安」为例2.3 提醒统计倾向而非严格分工3. 各家堆了多少层3.1 三条观察3.2 宽与深的取舍4. 输出矩阵6 个 token 的逐层演变4.1 定义4.2 逐层看 6 个 token 的变化4.3 一句话总结 6 个 token 的浅中深命运4.4 嵌入 vs 输出矩阵出厂设置 vs 现场理解5. 参数总账收官80.4 亿5.1 最后一块拼图lm_head5.2 230B 去哪了不是偷换是对账基准的选择5.3 权重共享题外话tied embeddings5.4 完整闭环230B → 1 → 80.4 亿小结下一篇预告1. 堆叠把 Block 串成 32 层1.1 串联规则出口接入口上一篇我们把单个 Block 的六步拆完①归一化 → ②注意力 → 残差 → ③归一化 → ④FFN → 残差入口矩阵 6×4096出口矩阵还是 6×4096。多 Block 堆叠的规则只有一条上一个 Block 的出口 下一个 Block 的入口。所以第 2 层把第 1 层加工完的 6×4096 接着加工再产出 6×4096第 3 层再接……一直到第 32 层。整条数据流如图 9-1 所示。图9-1 多层堆叠32 个 Block 串联形状始终 6×40961.2 一行代码的深度在工程实现里堆 32 层其实就是 4 行代码的事python x 嵌入矩阵 # 6×4096篇3 的查表结果 for block in blocks: # 32 个 Block x block(x) # 每层内部 篇5 的六步 输出矩阵 x # 还是 6×4096但已被深度加工 这四行干的事是把嵌入矩阵塞进第一个 Block加工完塞进第二个依此 32 次——32 层的深度代码上就是一个 for 循环。看起来简单但每跑一次就过一遍 4096 维的复杂计算32 次叠加出来的语义深度惊人。1.3 32 套独立权重 接口统一注意一个关键细节32 个 Block 的权重不共享。Block 1 的W Q \mathbf{W}_QWQ和 Block 2 的W Q \mathbf{W}_QWQ是两套完全独立的矩阵各自初始化、各自训练。所以 32 层不是把同一个 Block 复制 32 份——而是 32 个不同的加工车间每个车间学到了不同的加工模式。这也意味着参数量随层数线性增长1 套 Block 的参数 × 32 32 套 Block 的参数。这正是 Transformer 越来越大的物理来源之一。接口统一的设计巧思每个 Block 的入口、出口形状都是 6×4096完全相同。这个设计让层数可以随意增减——想训 36 层就用 36 个 BlockQwen3-8B 就是 36 层想训 94 层就用 94 个 BlockQwen3-235B 就是 94 层结构无需改动。这正是Block模块化设计的威力。那这 32 个 Block 都在做同样的事吗还是说浅层、中层、深层各管一段下一节展开。2. 分层不同层的 Block 在做什么LLaMA-3-8B 堆了 32 层那这 32 层是各干各的还是干同样的事学术界已经有不少研究统计学上的结论是浅层、中层、深层确实在分工——只是分工是倾向性的不是硬性的。2.1 三个实验证据关于层间分工学术界有三项代表性研究结论高度一致证据一BERT 红线实验——Tenney, Das Pavlick《BERT Rediscovers the Classical NLP Pipeline》ACL 2019。在 BERT 14 层上做层间探针probing实验每一层的向量接到一个简单的分类器上做词性标注、句法分析、语义角色标注。结果发现浅层1-4 层词性标注准确率已经很高词性是表面特征浅层就够中层5-9 层句法关系解析能力强主谓宾等结构深层10-14 层语义角色、指代消解等高阶任务才达标论文标题直译就是BERT 重新发现了经典 NLP 流水线——层间分工复刻了传统 NLP 的词法→句法→语义流水线。证据二语言学知识分层累积——Jawahar, Gurumurthy, Šaibabu, Pai Goyal《What Does BERT Learn about the Structure of Language?》ACL 2019BERT 团队自家分析。用探针实验证明浅层编码短语级信息西安是个名词短语深层编码长距离依赖“怎么样跨越四个词指向天气”。证据三logit lens 实验——nostalgebraist《Interpreting GPT: the logit lens》2020LessWrong 博客后被 Belrose et al. 2023《Eliciting Latent Predictions from Transformers with the Tuned Lens》系统化验证。做法把 Transformer 中间层的向量直接接到输出层 lm_head 上跳过剩余层看预测的下一个 token。在 GPT-2 上做浅层预测的 token 完全是乱的the the the这种中层开始出现语法正确的词但语义不对深层预测越来越准最终层的预测就是真实输出这说明浅层向量里还看不出要预测什么深层向量已经为预测下一个 token 专门服务了。2.2 三级分工以「西安」为例把这两类研究综合起来层间分工可以归纳为三段词法→句法→任务。以贯穿案例的西安为例看它在 L1、L16、L32 三个层级分别变成了什么样图 9-2。图9-2 浅、中、深32 层各学什么以「西安」为例浅层 L1-L10词法·表面特征「西安」是个两字地名。这个阶段更多处理这个词是啥向量里主要存着表层的字面信息。L1 出口「西安」行的 d3正向特征 1.667是 4 维中最大值。中层 L11-L22句法·语义关系「西安」是「天气」的描述对象被「怎么样」提问。词之间的关系开始浮现——主谓宾结构、修饰关系、询问对象。L16「西安」行 d3 升到 2.05关系特征开始聚集。深层 L23-L32任务·预测整句在问天气答案该往「晴/雨/温度」走。深层的特征表示直接服务于预测下一个 token——L32「西安」行 d3 升到 2.62被询问的城市这一任务级身份彻底成型。关键观察「西安」行的 4 个数值不是单调涨或单调跌而是特征在重新组合、逐渐聚焦到最该表达的那个维度。L1 时 d1-1.046位置/结构特征、d31.667表面特征互相对比L32 时 d1-0.68、d32.62——两端的主角地位被强化中间维度被稀释。2.3 提醒统计倾向而非严格分工这不是硬性分工。具体某一层可能在做中层的事下一层又在做浅层的事——分工是统计意义上的倾向不是逐层硬切。深度学习不神秘也不死板每层都在做自己该做的事但什么是该做的是训练自然学出来的不是人规定的。工程上的结论是堆 32 层不是浪费——浅层在打基础、中层在搭结构、深层在做任务缺一不可。十几层的小模型能干不少事九十几层的旗舰模型能干多得多的事——深度是能力的来源之一。那各家具体堆了多少层是否越大堆得越多下一节展开。3. 各家堆了多少层层数选多少是大模型设计的关键决策。统计 2024-2025 年十个主流模型如表 9-1 所示。表9-1 主流模型的层数与隐藏宽度2024-2025模型发布参数量d_model层数LLaMA-3 8B系列基准2024-048B409632Qwen3-8B2025-048B409636gpt-oss-120b2025-08117BMoE5.1B 激活288036GLM-4-9B2024-069B409640Gemma-3-12B2025-0312B384048DeepSeek-V3 / R12024-12 / 2025-01671BMoE37B 激活716861Kimi K22025-071TMoE32B 激活716861Gemma-3-27B2025-0327B537662Qwen3-32B2025-0432B512064Qwen3-235B-A22B2025-04235BMoE22B 激活409694视觉化对比见图 9-3。图9-3 各家堆了多少层2024-2025 十个主流模型的深度统计3.1 三条观察从这张图能读出三条观察观察一同尺寸新一代在加深。LLaMA-3-8B2024-0432 层 → Qwen3-8B2025-0436 层——同样 8B 体量、同样 4096 宽度一年后多堆了 4 层。Gemma-3-12B 48 层、Gemma-3-27B 62 层相对各自的宽度也都是深配。观察二参数大头在宽度不在深度。参数量粗略公式参数 ≈ 层数 × 宽度²。所以同样 10 倍参数全加深度只需 ×2.5每层参数不变全加宽度要 ×3.2每层参数 ×10。模型变大优先加宽度——更划算。经验甜点位8B 级 层数 ≈ d_model/1284096/12832 恰好是 LLaMA-3-8B3840/12830 而 Gemma-3-12B 堆到 48 层——新一代普遍超配深度。观察三MoE 把省下的计算换成深度。最典型的是 Qwen3-235B-A22B宽度 4096 与 8B 版完全相同却堆到 94 层——因为 MoE 每 token 只激活 22B 参数计算量省下来就砸进深度。gpt-oss-120b 更极端宽度只有 2880比 8B 模型还窄36 层 128 专家取 4单 token 激活仅 5.1B。窄而深 MoE是 2025 年的新偏好。3.2 宽与深的取舍为什么不无限加深两个原因收益递减32 层到 64 层效果好深一点语义更丰富64 层到 128 层效果就没那么明显了——同样的语义能力深一点但没深很多。推理延迟Transformer Block 是严格串行的——每生成一个 token 都要重新过 32 层层数翻倍就翻倍串行时间。生产环境 8B 模型 32 层是延迟、效果、成本的综合平衡点。MoE 架构是破局的第三条路DeepSeek-V3 61 层、Qwen3-235B 94 层比同体量稠密模型更深但每 token 只激活一小部分专家——深度上去了延迟没跟着上去。这正是篇1 埋下的230B 总参数 vs 23B 激活悬念的工程实现。现在我们回到贯穿案例亲眼看一遍32 层加工对 6 个 token 做了什么。4. 输出矩阵6 个 token 的逐层演变4.1 定义第 32 层 Block 的出口就是输出矩阵——本篇的主角。它的形状仍然是 6×4096但每一行的 4096 个数已经和篇3 查表得来的原始嵌入天差地别。强调一遍本篇的输出矩阵 模型主干32 层 Block 堆叠的最终输出形状 6×4096。篇10 还会再讲一个输出层lm_head那是把这个 6×4096 翻译成词表分数的最后一步——和这里的输出矩阵是两个东西别混淆。4.2 逐层看 6 个 token 的变化第 2 节讲了不同层的 Block 做什么是统计倾向那对贯穿案例的 6 个 token 来说这种倾向真的存在吗我们在 L1真算、L16示意、L32输出矩阵示意三处抓快照让数字说话如图 9-4 所示。图9-4 从 Block 1 到输出矩阵6 个 token 的逐层演变红色 每行最大值先交代机制再读数字每一层的加工都是篇5 的六步——注意力把别的 token 的信息混进来篇6-7FFN 逐行深加工篇8残差保底不让信息丢失篇8。三个力合在一起推动对预测下一个 token 有用的特征逐层放大。下面逐 token 解读。「今天」——时间限定浅层最亮深层让位浅层 L1d33.685全场 24 个数里的最大值。查表嵌入的时间词特征经过第一轮 FFN 深加工就冲到最高——浅层对这个词是什么最敏感中层 L16d33.450开始回落。注意力把今天的时间信息和西安/天气逐步绑定它不再是独立主角深层 L32d33.120继续降。深层知道回答时要带时间限定“今天”但它只是状语不是答案焦点对下一个 token 的意义答案被限定在今天的语境里——模型不会答西安冬天下雪吗只会答当下的天气「西安」——主角识别逐层聚焦浅层 L1d31.667“两字地名的表面特征只是一个词”中层 L16d32.050。篇7 算过的注意力在起作用——「西安」吸收了「天气」22.3%、「怎么样」25.9% 的信息被描述对象的关系特征开始聚集深层 L32d32.620。被询问天气的城市这一任务级身份彻底成型对下一个 token 的意义答案的主体锁定为西安的天气——模型不会答北京的天气「的」——结构胶水全程低调浅层 L1d32.504助词的词性特征其实不弱浅层擅长识别这是个结构词中层 L16d32.350。它建立起「西安的天气」定中关系把两个实词黏在一起深层 L32d32.150。关系交付完毕后功成身退数值缓降但红标稳定——胶水不需要抢戏对下一个 token 的意义几乎没有直接贡献但中层建立的定中结构决定了答案的主语是西安的天气而不是别的组合「天气」——红标迁移d3→d4领域锁定浅层 L1d32.024 d41.827红标在 d3——被询问对象的语义位暂时压制了气象位中层 L16d42.35 反超 d31.75红标完成迁移——气象招牌特征在中层崛起深层 L32d42.95 vs d31.42拉开一倍差距——答案的领域特征彻底聚焦对下一个 token 的意义领域锁定。这一行的 d4 通道就是篇10 预测往晴/雨/温度/风方向走的直接推力——问句的核心宾语已经把答案的类别圈死了「怎么样」——疑问语气单调登顶浅层 L1d42.534疑问副词的语气特征从嵌入起就强中层 L16d42.780询问状态的任务持续强化深层 L32d43.050全场新的最大值——「怎么样」在深层成为整句信息最富集的 token对下一个 token 的意义词性锁定。怎么样要求答案是对状态的描述——决定了首 token 倾向于形容词性或描述性开头“晴”“多云”而不是动词或名词开头「」——红标迁移d3→d1任务接管全篇最重要浅层 L1d32.102 d12.005红标在 d3——问号还停留在句末标点的句法身份中层 L16d12.42 反超 d32.00红标迁移——问完了的任务特征开始接管深层 L32d12.85 vs d31.90全面接管——“该作答了”对下一个 token 的意义这就是输出矩阵最后一行。d1 通道的持续强化就是结束输入、开始输出的开关信号——篇10 里这 4096 个数演示 4 个将送进 lm_head产生 129,280 个候选分数最终吐出首 token。「」行是全系列的接力棒前面 8 篇的所有加工最终都沉淀在这一行里4.3 一句话总结 6 个 token 的浅中深命运今天限定了时间、西安锁定了主体、的黏合了结构、天气圈死了领域、怎么样规定了词性、****按下了开始的开关——6 个 token 在 32 层里各就各位整句话的任务意图层层聚焦最终全部沉淀到输出矩阵的最后一行。下一个 token 的一切约束条件在这张 6×4096 的矩阵里已经准备完毕。4.4 嵌入 vs 输出矩阵出厂设置 vs 现场理解篇5 归一化后入口篇9 输出矩阵是什么词表查表 归一化32 层加工信息量单个词的出厂设置整句话的现场理解西安的 d31.257地名向量2.62被询问的地名的 d11.265问号静态特征2.85任务级特征接管关键洞察嵌入是这个词是啥西安地名输出矩阵是这个词在这句话里意味着啥西安被询问天气的城市。从篇3 到篇9整个 Transformer 主干做的工作就是出厂设置→现场理解——这中间走过位置编码、注意力、FFN、32 层堆叠每一步都在朝理解这个目标加工。但输出矩阵还不是答案。要把 6×4096 的理解变成下一个 token还差最后一步——lm_head输出层把 4096 维向量投影到词表 129,280 个候选上。这部分留到篇10。5. 参数总账收官80.4 亿篇1 把 230B 参数压成 1 个参数走通了原理实验篇3 嵌入表 5.3 亿篇6 加 0.42 亿/层注意力篇8 加 1.76 亿/层 FFN× 32 层后是 75.1 亿篇8 时点。还差最后一块拼图输出层 lm_head。5.1 最后一块拼图lm_headlm_head 是什么篇3 讲过词表大小是 129,280DeepSeek-V3 口径。要把一个 4096 维向量翻译成 129,280 个候选 token 的分数需要一个 4096×129,280 的矩阵129,280 × 4,096 529,530,880 ≈5.3 亿加上这个 5.3 亿参数账就完结75.1 亿篇8 末 5.3 亿lm_head80.4 亿≈ LLaMA-3-8B 官方 8.03B对账成功。篇1 的从 1 加回到 8B完整闭环如图 9-5 所示。图9-5 参数总账收官从 1 个参数加回到 80.4 亿对数坐标5.2 230B 去哪了不是偷换是对账基准的选择写到这里必须坦诚回答一个疑问——篇1 的起点是豆包 Seed-1.6 的 230B加回来的却是LLaMA-3-8B 的 80.4 亿中间是不是偷换了模型没有偷换但确实换了对账基准这里说清楚篇1 为什么用 230B那是个思想实验的起点——“一个真实大模型有 230B 个参数把它们全砍掉只剩 1 个会发生什么”。选 Seed-1.6 是因为它把总参数 vs 激活参数的两个数字230B vs 23B拉开了最能体现 MoE 时代的规模感。加法路径为什么换成 LLaMA-3-8B逐篇加参数需要一个每个部件都能精确对账的基准。稠密的 LLaMA-3-8B 结构公开、参数透明——嵌入 5.3 亿 32 层 × 2.18 亿 lm_head 5.3 亿 80.4 亿和官方 8.03B 一分不差。而 Seed-1.6 的 230B 里混着 256 个专家、路由器、共享专家——参数账复杂到没法逐篇手算。选 8B 不是因为它更强而是因为它小而完整、可以精确对账。两者是同一套原理Seed-1.6 的每个 Block 和 LLaMA-3-8B 的每个 Block 长得一样——都是注意力 FFN 残差 归一化。区别只在三个旋钮更宽7168 vs 4096、更深61 层 vs 32 层、MoE 化每层 256 个专家挑 8 个干活。学会了 8B 的账本就看懂了 230B 的骨架——这也是第 3 节表格里那些 MoE 旗舰和稠密模型放在一起比较的原因。一句话篇1 用 230B 说明参数有多大篇3-9 用 80.4 亿说清参数怎么构成——一个是规模感一个是原理账。篇10 结尾我们还会回到 230B把 MoE 的最后一环补完。5.3 权重共享题外话tied embeddings多说一个工程细节很多 Transformer 模型的 lm_head 和嵌入表共享同一份权重tied embeddings——嵌入表是 129,280×4096lm_head 是 4096×129,280转置一下正好对齐。如果共享就能省下 5.3 亿参数模型瘦身约 7%。GPT-2 系列共享省 5.3 亿LLaMA 系列不共享保留独立 lm_head 提升效果上限。我们算的 80.4 亿是 LLaMA-3-8B 口径含独立 lm_head和官方 8.03B 几乎完全吻合。5.4 完整闭环230B → 1 → 80.4 亿把这条线画完篇1230BSeed-1.6MoE→ 1过原点直线——规模感起点篇1 末1 截距 2篇3 嵌入表 5.3 亿篇6 注意力×1 层 5.7 亿篇8 FFN×1 层 7.5 亿篇8 末× 32 层 75.1 亿篇9 末 lm_head 80.4 亿 ≈ LLaMA-3-8B 官方 8.03B✅——原理账终点80.4 亿。这就是从 1 个参数一路加回来到本篇为止的全部家当——也是篇10 即将登场的首 token 预测的输入。小结这一篇把 Block 从 1 个复制到 32 个分层、层数、输出矩阵、参数账全部收官堆叠机制上 Block 出口 下 Block 入口一行 for 循环串 32 次32 套独立权重接口统一所以层数可任意增减分层浅层 L1-10 学词法表面“西安地名”、中层 L11-22 学句法语义“西安被询问对象”、深层 L23-32 学任务预测“该答天气了”证据Tenney et al. 2019ACL、Jawahar et al. 2019ACL、logit lens2020统计倾向而非严格分工层数统计2024-2025 新模型同尺寸在加深LLaMA-3-8B 32 层 → Qwen3-8B 36 层参数大头在宽度≈ 层数 × 宽度²MoE 把省下的计算换成深度Qwen3-235B 宽度与 8B 相同却堆 94 层gpt-oss-120b 宽 2880 36 层 5.1B 激活输出矩阵 6 token 逐层三级解读「今天」限定时间浅层最亮 3.685 → 深层让位「西安」锁定主体d3 单调 1.667→2.05→2.62「的」黏合结构低调缓降「天气」圈死领域红标 d3→d4 迁移气象特征 1.827→2.35→2.95「怎么样」规定词性d4 单调登顶 3.05 全场最高「」按下开关红标 d3→d1 迁移任务特征 2.005→2.42→2.85 全面接管——输出矩阵最后一行就是篇10 预测首 token 的全部原料参数账收官 lm_head 5.3 亿 → 80.4 亿 ≈ LLaMA-3-8B 官方 8.03B篇1 的 230BSeed-1.6是规模感起点、80.4 亿是原理账终点——不是偷换是对账基准的选择两者共享同一套 Block 原理下一篇预告输出矩阵最后一行的 4096 维向量就是预测下一个 token 的全部原料。下一篇把它送进 lm_head得到词表上 129,280 个候选的分数再过 Softmax 变成概率最后采样出一个 token——首字诞生。然后自回归生成第二字、KV-Cache 优化……系列目录从一条直线到高维空间分词与 token 表隐藏层与嵌入位置编码 RoPETransformer Block 全景与层归一化QKV 三剑客注意力权重与多头机制残差连接与前馈网络输出矩阵与多层堆叠当前篇首 token 诞生与 KV-Cache版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。