大模型结构演进.学习笔记

大模型结构的演进 · 学习笔记

从 Transformer(2017)到 2026 开源旗舰,九年间架构改动的全景。


学习地图

这份材料只讲一件事:2017 年那套"四件套"(注意力 + FFN + 归一化残差 + 绝对位置编码)为什么在 2026 年已经不敷使用,以及它分别被改成了什么。

主线可以压成一句话:

模型要更大(T 级参数)、上下文要更长(1M)、成本要更低(FP4/FP8),三者同时逼近时,每一个原始组件的"成本"都变成了瓶颈 ,于是四条线同时开刀------

注意力少存/少看/换范式 、FFN稀疏化 、归一化与残差工具化 、训练与推理联合设计。

各部分关系:

部分 回答的问题 对应组件
第一部分 起点长什么样、为什么必须改 原版 Transformer + 四大瓶颈
第二部分 位置信息与数值稳定性怎么给 绝对位置编码 → RoPE / partial RoPE / NoPE;LayerNorm → RMSNorm / QK-Norm
第三部分 注意力怎么瘦身 MHA→MQA→GQA→MLA;DSA 稀疏;线性注意力;压缩注意力
第四部分 FFN 怎么扩容不增算 Dense FFN → SwiGLU → MoE
第五部分 深层怎么不炸 残差升级、有界激活、输出门、attention sink、Muon
第六部分 推理怎么提速 投机采样 / MTP / DSpark;多模态接入
第七部分 四家旗舰怎么各自取舍 DS-V4、GLM-5.2、Kimi-K3、Qwen3.6 + 演进五轴线

阅读顺序建议:先读第七部分建立全局,再回头读第三、四、五部分的技术细节。


第一部分 · 起点:原版 Transformer 与四大瓶颈

1. 2017 年的标准答案

原版 Transformer(Attention Is All You Need,2017)的编码器层,是"四件套"的堆叠:

复制代码
输入 tokens
  → Embedding + 绝对位置编码
  → [ MHA 多头注意力  →  LayerNorm + 残差 ]  × N
  → [ Dense FFN      →  LayerNorm + 残差 ]  × N
  → 输出 logits
  • MHA 多头注意力:每个头独立维护 Q/K/V,看全部历史 token。
  • Dense FFN :两层 MLP,d → 4d → d,全部 token 都走一遍。
  • LayerNorm + 残差:保证深层堆叠时信号不衰减。
  • 绝对位置编码:给每个位置一个固定向量,注入顺序信息。

原版规模是 N=6,d=512。这套结构在 2017--2022 年占统治地位,BERT、GPT-3 都属于这个形态;提供绝对位置编码的思想一直沿用到 2021 年 RoPE 出现之前。

2. 为什么必须改:四大瓶颈

瓶颈①② · 注意力与 FFN 的成本

注意力:长上下文的天敌

  • 计算量随长度平方 增长:128K 上下文的注意力开销是 4K 的 32² = 1024 倍。
  • KV cache 随长度线性膨胀:推理时每个历史 token 的 K/V 都要常驻显存,1M 上下文轻松占几十 GB。
  • 推理时代矛盾最尖锐:长思维链 + Agent 多轮交互,token 消耗暴涨。
  • 改动方向:少存 (GQA/MLA)→ 少看 (稀疏/滑窗)→ 换范式(线性/压缩)。

FFN:容量与成本绑死

  • Dense FFN 约占模型参数 2/3:想扩容量就得按比例增加每 token 计算量。
  • dense 架构下"知识要容量、推理要便宜"不可兼得。
  • MoE 的答案:把 FFN 拆成 N 个"专家",每 token 只激活 top-k 个------容量与计算解耦。

瓶颈③④ · 深层稳定性与精度成本

残差与归一化

  • 一条残差流承载全部历史信息,近百层堆叠后信号传播困难。
  • 注意力 logits 爆炸:大模型训练中常见的 loss 尖峰来源。
  • 激活值无界:SwiGLU 两因子都无界,低精度下产生离群点。
  • 改动方向:RMSNorm / QK-Norm、超连接 mHC、AttnRes、有界激活。

精度:显存与带宽的硬约束

  • 万亿参数 × BF16 = TB 级权重:存储、带宽、能耗全部不可承受。
  • 事后量化损失大 → 2026 的答案是量化感知训练(QAT):从训练起就按 FP4/FP8 来。
  • 架构要配合量化:有界激活、归一化位置选择都与低精度设计联动。

第二部分 · 位置编码与归一化

2.1 RoPE:给相对距离一个旋转角

核心思想 :把 Q/K 向量的每两个维度看作一个二维小向量,位置 m 就旋转 m·θ 角度。两个 token 做点积时,角度差天然只取决于相对距离。

为什么赢:

  • 相对位置:模型学到的是"距离"而非"编号"。
  • 零参数:位置信息不需要任何可学习向量。
  • 外推友好:配合插值可扩展到训练时没见过的长度。
  • 实现简单:一次复数乘法。
python 复制代码
# 概念代码:dsv4 apply_rotary_emb
# 两两维度组成复数
x = view_as_complex(x.unflatten(-1, (-1, 2)))
# 核心就一行:乘以旋转因子(角度 = 位置 × 频率)
x = x * freqs_cis
y = view_as_real(x).flatten(-2)

时间线:2017 绝对位置编码 → 2021 RoPE(苏剑林)→ 2026 仍是所有旗舰的默认选择。

注意:RoPE 只作用在注意力上,Embedding 本身不带位置。

2.2 长度外推:YaRN

问题:RoPE 训练时只见过 4K 个位置,直接用到 128K,大位置的旋转角度完全没学过 → 注意力分数混乱。

YaRN 的思想:分频率处理

  • 高频分量(管近距离):不动,短距离关系不变。
  • 低频分量(管远距离):按比例压缩角度,把长序列塞进学过的范围。
  • 中间频率:平滑过渡(线性渐变混合)。
python 复制代码
# precompute_freqs_cis 的三段式频率修正
# 低频:角度除以 factor(压缩);高频:保持原样;中间:渐变
freqs = freqs / factor * (1 - smooth) + freqs * smooth

各家用法:

  • DS-V3 :用 YaRN 从 4K 外推到 128K(分两阶段扩长)。
  • DS-V4 / GLM-5.2 / Kimi-K3:直接以长上下文原生长度预训练,1M 不再依赖外推技巧。

趋势 :外推是过渡方案,原生 1M 训练才是 2026 旗舰的正解。

2.3 归一化:RMSNorm 与 QK-Norm

RMSNorm:LayerNorm 砍掉"减均值"

只保留缩放:x / sqrt(mean(x²)) × w。少一次均值计算 → 更快,效果无差。LLaMA 之后成为默认。

python 复制代码
# dsv4 RMSNorm
var = x.square().mean(-1, keepdim=True)
x = x * torch.rsqrt(var + eps)
return self.weight * x

QK-Norm:给注意力打分上"限流阀"

Q 和 K 点积前先各自归一化 → logits 量级可控,训练不炸。DS-V4 / GLM-5.2 都在用。

python 复制代码
# dsv4 QK-Norm(注意力内)
q = q * rsqrt(mean(q**2))   # 打分前
kv = self.kv_norm(kv)       # 缓存前

副产品:有了 QK-Norm,DS-V4 的 Muon 优化器就不再需要 QK-Clip 补丁。

思想:归一化的本质是把"量纲"从学习问题中剥离,让模型只学方向、不学尺度。

2.4 partial RoPE 与 NoPE:位置信息"按需分配"

2026 出现的新分歧------不是所有层、所有维度都要做位置编码:

模型 做法
DS-V4 只旋转最后 64 维 ;KV 被压缩成"块摘要"后逐 token 精确位置已无意义,只对少量维度加 RoPE,并对注意力输出做反向旋转消除绝对位置泄漏
Qwen3.6 只旋转 25% 维度;全量注意力层保留少量旋转维度维持位置感,其余维度专心做内容匹配
Kimi-K3 MLA 层完全 NoPE;全量注意力层不加任何位置编码,位置信息由 KDA 线性注意力层的短卷积 + 衰减提供

设计动机:RoPE 维度与 KV 压缩 / 低精度存储存在兼容性问题,"给多少位置信息"变成了可调的设计旋钮。


第三部分 · 注意力的瘦身之路

注意力瘦身可整理成四条并行路线:

  1. 少存 KV:MHA → MQA → GQA → MLA
  2. 少看:DSA 稀疏选择
  3. 换范式:线性注意力(KDA / Gated DeltaNet)
  4. 压缩历史:CSA / HCA

3.1 KV cache 压缩:MHA → MQA → GQA → MLA

思路演进 = 每 token 要存的东西越来越少:

方案 做法 时间
MHA 每头各存一份 K/V(如 128 头 × 128 维) 基线
MQA 所有头共享 1 份 K/V;cache 暴降,质量略损 2019
GQA 折中:每 4~8 头共享 1 份;质量 ≈ MHA,cache 大降 2023
MLA 不存 K/V,存压缩 latent,用时再重建 2024

MLA 的关键转折 :从"减少 KV 的头数"变成"把 KV 本身压成低秩向量"------压缩对象变了。

MLA 细节:存"压缩包"而非原件

  • 做法 :每 token 只存一个低维 latent 向量 c(512 维 + 64 维 RoPE = 576 维),比全量 K/V 小一个数量级;注意力计算时用上投影矩阵临时重建各头的 K/V。
  • 为什么效果不降 :重建矩阵可以吸收进 Q/O 投影,数学上等价于一种参数化的低秩注意力------不是近似,是换了参数化方式。
python 复制代码
# kimi_k3 KimiMLAAttention
kv_a = Linear(7168, 512 + 64)          # 下投影:隐层 → 低秩 latent(缓存它,共 576 维)
kv_b = Linear(512, heads*(nope+v_dim)) # 上投影:latent → 各头 K/V(用时重建)
# Q 侧同样低秩:7168 → 1536 → 各头

KV cache 对比(每 token) :GQA-8 约 2K 维 → MLA 576 维;DS-V4 进一步压到"单头 latent + 块压缩"。

MLA 提出 :由 DeepSeek-V2(2024.05) 提出,如今被 DS-V3/V4、GLM-5.2、Kimi-K2/K3 全部采用。

GLM-5 报告的坑 :MLA 配 Muon 优化器会输给 GQA-8;解法是把上投影矩阵按头拆开分别正交化(Muon Split)。

3.2 稀疏选择:DSA 稀疏注意力

思想 :长上下文中 90% 的注意力是冗余的。先用一个极便宜的"索引器(indexer) "给所有历史 token 打分,只选 top-2048 个进入真正的注意力计算。

索引器为什么便宜:少头(32)、低维(128)、ReLU 打分、FP8/FP4 计算------比主注意力便宜一个数量级。

如何训练 :先冻结模型、用全量注意力分布蒸馏索引器;再联合稀疏训练。

python 复制代码
# modeling_glm_moe_dsa Indexer
scores = q @ k.T * scale       # 轻量打分
scores = relu(scores)
index = (weights @ scores)     # 按头加权求和成总重要性
topk = index.topk(2048).indices

复杂度 :主注意力从 O(L²) 降为 O(L·k),k=2048 固定 → 1M 上下文也不再爆炸。

归属 :开创者 DeepSeek-V3.2(2025);采用者:GLM-5 / 5.2、DS-V4(与压缩叠加)。

3.3 索引复用:IndexCache(连索引器也省 3/4)

问题 :索引器本身也是 O(L²),且每层都要独立跑。200K 上下文时它占 prefill 延迟的 81% ------稀疏化之后,选择器成了新瓶颈。

关键观察 :相邻层选出的 top-k token 有 70~100% 重叠 → 大部分层的索引计算是重复劳动。

做法 :把层分成少数 Full 层 (自己跑索引器)和多数 Shared 层(直接复用最近 Full 层的 top-k 索引)。

复制代码
# 层类型循环(FSSS)
F  S  S  S   F  S  S  S   ...
# index_topk_freq = 4, index_topk = 2048

效果 :去掉 75% 的索引器计算 ;1M 上下文每 token FLOPs 进一步下降;prefill 加速 1.82×,decode 加速 1.48×。

来源:《IndexCache: Accelerating Sparse Attention via Cross-Layer Index Reuse》,arXiv:2603.12201(2026-03-12)。

3.4 线性注意力混合:KDA / Gated DeltaNet

思想 :不再"记住所有历史 token",改为维护一个固定大小的记忆状态 S ,每来一个新 token 就"先遗忘一点,再写入一点"(delta 规则)。计算量与长度成线性 O(L)。

代价:记忆是有损压缩------精确检索("第 317 页那句话")能力弱于全量注意力。

共同答案:混合架构 。Kimi-K3 与 Qwen3.6 都选 3:1------3 层线性注意力 + 1 层全量注意力,全量层负责兜底精确检索。

python 复制代码
# kimi_k3 KimiDeltaAttention
q/k/v = ShortConv + Swish        # 局部感知
q, k = L2Norm(q), L2Norm(k)
beta = sigmoid(W_b @ x)          # 写入强度
alpha = 衰减门                    # 逐通道遗忘
# 状态更新:S = 遗忘(S) + 写入(kv)
# 输出 = q @ S,再加全秩输出门
  • Kimi-K3 :93 层中 69 层 KDA + 24 层 MLA → KV cache 只需存 1/4 的层。
  • Qwen3.6:延续 Qwen3-Next 血统,Gated DeltaNet + 每 4 层 1 层全量注意力。

GLM-5 消融:naive 滑窗交替在 128K 检索任务上暴跌 30 分 → 全量注意力层不是装饰,是必需品。

混合架构的理论支撑:arXiv:2605.16640《Provably Shorter Scratchpads in Hybrid DeltaNet-Attention Decoders》证明------Gated DeltaNet + Gated Attention 的混合架构在"奇偶条件检索"任务上只需常数 scratchpad,而纯 Gated DeltaNet 无此解、纯 Gated Attention 至少需多项式 scratchpad。混合不是妥协,而是有表达力优势。

3.5 压缩注意力:CSA / HCA(DS-V4 的第四条路)

思想 :不看也不记,直接压缩历史------把相邻 token 通过学习到的门控池化合并成"摘要条目",远端历史只看摘要,近处看原文。

三种层各司其职:

  • 滑窗层(128):只管最近 128 个 token,保局部细节。
  • CSA 层 :4:1 压缩 + DSA 稀疏选择 top-1024 块。
  • HCA 层:128:1 极端压缩,保留"全文大纲"。
python 复制代码
# dsv4 Compressor.forward
kv = wkv(x); score = wgate(x)
# 每 ratio 个 token 一组,softmax 门控加权合并成 1 个
kv = kv.unflatten(1, (-1, ratio))
kv = (kv * score.softmax(2)).sum(2)
# 相邻块重叠一半,平滑边界

1M 上下文 :FLOPs 仅 DS-V3.2 的 27% ,KV cache 仅 10%。

与 DSA 的区别:DSA 是"选重要的看",CSA 是"把不重要的合并"------DS-V4 把两者叠在一起用。

3.6 四条路线对比

稀疏选择(DSA) 线性注意力混合 压缩注意力(CSA/HCA) KV 低秩压缩(MLA,基线)
一句话思路 选 top-k 重要 token 看 固定状态递推记忆 + 全量层兜底 相邻 token 池化成摘要 把 K/V 压成低秩 latent
代表模型 DS-V3.2、GLM-5.2 Kimi-K3、Qwen3.6 DS-V4 DS-V3/V4、GLM-5.2
长文本精确检索 好(选中即原文) 靠 1/4 全量层补救 中等(远端只有摘要) 好
KV cache 低秩 latent + 索引 仅存 1/4 的层 滑窗 + 压缩条目 576 维 latent
训练成本 可后期改造 需原生预训练 需原生预训练 原生 / 可选后期

没有银弹:四条路线都在"保精确检索"与"省成本"之间找各自的平衡点------这也是第七部分各家取舍的主线。


第四部分 · FFN 的 MoE 化

4.1 从 Dense FFN 到 SwiGLU

传统 FFN(2017) :两个线性层 + ReLU(GPT/BERT 换成 GELU),升维 4 倍再降回(d→4d→d)。逐 token 变换,是模型"存知识"的主要场所,约占 2/3 参数。

现代主流 SwiGLU(PaLM/Llama 推广) :三个矩阵,gate 与 up 两支并行,silu(gate) 逐元素乘 up,再由 down 投回。中间维从 4d 调整为 8d/3,总计算量不变(两者参数量都是 8d²)。

python 复制代码
# dsv3 MLP(dense 层与专家共用)
gate_proj = Linear(d, inter)   # 门控支
up_proj   = Linear(d, inter)   # 内容支
down_proj = Linear(inter, d)
def forward(x):
    g = F.silu(gate_proj(x))
    return down_proj(g * up_proj(x))

直觉:多出的 gate 支是"内容相关的开关"------哪些维度放行由输入动态决定,比形状固定的 ReLU 表达力更强。

4.2 MoE 的基本思想

核心思想 :把 FFN 复制成 N 份"专家",加一个轻量路由器;每个 token 只激活 top-k 个专家。总参数量可以暴涨,而每 token 计算量基本不变------容量与计算解耦。

DeepSeekMoE 的两个改良(V2/V3 奠定):

  • 细粒度专家:把专家切得更细,选多个(如 256~384 选 8),组合更灵活。
  • 共享专家:1 个所有 token 都走的专家,兜底通用知识。

规模演进:Mixtral(2023,8 选 2)→ DS-V3(2024,256 选 8+1)→ Kimi-K3(2026,896 选 16+2)。

MoE 前向 :token x → 路由器 Router → 选 top-k 专家 → 加权汇总。

4.3 负载均衡:DS-V3 的"无辅助损失"方案(noaux)

问题:如果路由不均,少数专家被挤爆、多数专家闲置(训练崩溃或能力浪费)。老办法是加负载均衡辅助损失------但它与主损失打架,伤性能。

DS-V3 的巧思 :给每个专家加一个偏置 bias,只影响"选谁",不影响"权重多少"。专家太火就调低它的 bias,太闲就调高------均衡完全与梯度解耦。

python 复制代码
# dsv3 Gate.forward
scores = sigmoid(x @ W)          # 原始分
sel = scores + bias              # bias 只用于选人
topk = sel.topk(8)
w = scores[topk] / scores[topk].sum()   # 归一化用原始分,不带 bias

类比:挂号时给冷门科室"优先通道",但诊断水平(权重)不受影响。

影响 :GLM-5.2、Kimi-K3 全部采用 noaux 方案 → 成为行业标配。DS-V3 另有分组路由:8 组选 4 组,限制通信范围。

反例 :Qwen3.6 保留了微小的辅助均衡损失(coef≈0.001),没有跟 noaux 的风------这是刻意的稳健选择,不是遗漏。

4.4 路由的演进:打分函数与 Hash 路由

打分函数的演进:

  • softmax(早期):专家间互相抑制,头部效应强。
  • sigmoid(DS-V3 起):各专家独立打分,更稳。
  • sqrt(softplus)(DS-V4):梯度更平滑,配合 Muon。
python 复制代码
# dsv4 打分函数
scores = sqrt(softplus(x @ W))    # scoring_func: sqrtsoftplus
# dsv4 Hash 路由(前 3 层)
eid = tid2eid[token_id]           # 不用学习的路由器,直接查表

DS-V4 的 Hash 路由(前 3 层) :训练初期路由器还没学好,随机分配会造成专家"饿死"。前 3 层干脆不用路由器,按 token id 查表(tid2eid)直接指定专家------天然均衡,开局即稳。

4.5 LatentMoE 与 Quantile Balancing(Kimi-K3)

Stable LatentMoE 思想 :专家的输入输出维度从 7168 砍到 3584 (共享降维),所有路由专家在低维潜空间 里计算。省下的参数预算全拿去买更多专家 → 896 个,选 16 个。

python 复制代码
# kimi_k3 LatentMoE
h = down_proj(x)        # 共享降维 7168 → 3584
h = rmsnorm(h)
h = moe_route(h, n=896, topk=16)   # 在低维空间里路由 + 专家计算
y = up_proj(h)          # 共享升维 3584 → 7168

Quantile Balancing :896 个专家规模下,DS 式逐步调 bias 收敛太慢。Kimi 改为直接按分位数一步解出"让每个专家恰好分到定额 token"的 bias------不再是"火了就降一点"的迭代试探,而是按统计数据一次算到位。

结果 :Kimi-K3 稀疏比 27×,四家最高。

4.6 MoE 成绩单:参数与激活的剪刀差

DS-V3 DS-V4-Pro GLM-5.2 Kimi-K3 Qwen3.6-35B
总参数 671B 1.6T ≈750B 2.8T 35B
每 token 激活 37B 49B 40B 104B 3B
激活比例 5.5% 3.1% 5.4% 3.7% 8.6%
专家数 / top-k 256 / 8+1 384 / 8+1 256 / 8+1 896 / 16+2 256 / 8+1
路由特点 sigmoid+noaux 分组 sqrt(softplus)+Hash 前3层 sigmoid+noaux sigmoid+noaux+Quantile 均衡 softmax+aux

趋势 :总参数向 T 级狂奔,激活参数被压在 100B 以内------"大记忆、小计算"成为旗舰共识。


第五部分 · 残差、激活与稳定化

5.1 残差升级(方案一):DS-V4 的 mHC

标准残差的瓶颈:所有历史信息都挤在同一条隐状态流里累加,深层时浅层信号被反复稀释。

mHC(超连接)思想 :残差流扩成 4 路并行 (hc_mult=4),每层入口把 4 路混合成 1 路计算、出口再写回 4 路。容量翻倍,浅层信息可以走"快车道"直达深层。

关键约束 :混合矩阵用 Sinkhorn 迭代 投影到双随机矩阵流形(行列和都为 1)→ 混合等价于加权平均,信号不会指数放大,深堆叠不发散。

python 复制代码
# dsv4 HyperConnection
# 4 路残差流 h (B, L, 4, D)
x = mix_in(h)          # 4 路 → 1 路(混合)
y = block(x)           # 注意力 / MoE 计算
B = sinkhorn(B_raw, iters=20)   # 双随机:行和 = 列和 = 1
h = h + mix_out(y, B)  # 写回

直觉:4 条路之间只做"加权平均"式的交换------总能量守恒,不会越传越爆。

5.2 残差升级(方案二):Kimi-K3 的 AttnRes

同一个问题,不同解法 :DS-V4 拓宽残差流;Kimi 不改流的宽度,而是让深层能对浅层输出"做注意力"。

做法 :每 ~12 层为一个 block,把各 block 的残差快照存下来;后面的层用"伪 query + RMSNorm"对历史快照打分、加权融合------残差从固定累加 变成可选择读取。

python 复制代码
# kimi_k3 AttnRes
snaps.append(h)        # 每 12 层存一个残差快照
q = pseudo_query(h)    # 深层读取:伪 query 对快照打分
s = softmax(q @ snaps.T)
h = h + s @ snaps      # 融合进当前隐状态

工程取舍 :完整版 O(L·d) 显存太贵 → 实用版按 block 聚合,只留 ~8 个快照(93 层 / 12 ≈ 8)。

对比:mHC 改"流的结构",AttnRes 改"读的方式"------目标相同:让浅层信息不被深层淹没。

5.3 有界激活:给 SwiGLU 加"安全阀"

问题:SwiGLU 的两个因子(gate 与 up)都无界 → 激活值出现极端离群点。FP8/FP4 低精度下,少数离群点会吃掉整个动态范围,量化误差暴增。

DS-V4:硬钳制

python 复制代码
x = silu(gate) * up
x = x.clamp(-10, 10)   # swiglu_limit = 10(gpt-oss 风格)

Kimi-K3:软钳制(SiTU-GLU)

python 复制代码
g = 4  * tanh(gate/4) * sigmoid(gate)   # β₁ = 4
u = 25 * tanh(up/25)                    # β₂ = 25
x = g * u                               # |输出| ≤ 4×25 = 100

近原点处行为 ≈ SwiGLU,远离原点自然饱和(tanh 限幅)。

设计动机 :低精度训练(FP4/FP8)要求激活"没有惊喜"------有界激活是量化的前提条件。

5.4 稳定化小件:输出门控与 attention sink

注意力输出门(Kimi / Qwen):注意力输出乘上一个 sigmoid 门(按通道开关)。抑制"噪声头"的输出,让模型学会关掉不有用的注意力头------训练更稳,长上下文检索更准。

attention sink(DS-V4):给每个头一个可学习的 sink logit,加在 softmax 分母里------相当于允许某头"什么都不看",把注意力分数倒进下水道。缓解 softmax 必须归一带来的强制关注问题。

python 复制代码
# kimi_k3 输出门
attn_out = o_proj(attn)
attn_out = attn_out * sigmoid(gate)
# dsv4 attention sink(每头 1 个可学习标量)
logits = cat([q@k.T, sink], dim=-1)
attn = softmax(logits)[..., :-1]

共同点:都是"给 softmax 注意力装开关"------让模型可以表达"这步不关注任何东西"。

5.5 Muon:优化器进架构

从 AdamW 到 Muon:更新规则的"矩阵化"

Adam/AdamW :每个参数两个状态(一阶动量 m + 二阶矩 v),更新 = m/√v------逐坐标除梯度 RMS。它是"对角"缩放:只看每个参数自己的历史,看不到矩阵的方向结构。

Muon 的三处改动:

  • 砍掉二阶:只留 Nesterov 动量,优化器状态减半。
  • 动量矩阵正交化 :Newton-Schulz 迭代近似 UVᵀ------把更新矩阵的奇异值全部拉向 1,每个奇异方向获得相同的更新幅度。
  • 分层混用:只对 2D 权重矩阵用 Muon;embedding、输出头、norm 等仍走 AdamW。
python 复制代码
# Muon 一步更新(仅 2D 权重矩阵)
G = nesterov_momentum(grad)      # 一阶
X = G / (norm(G) + eps)
for _ in range(5):               # Newton-Schulz 迭代(原版约 5 步)
    A = X @ X.T
    B = b*A + c*(A@A)            # a,b,c 为拟合系数
    X = a*X + B@X
# X ≈ U Vᵀ:奇异值全拉向 1
W -= lr * scale * X
# embedding / 输出头 / norm 仍走 AdamW
  • 缩放对齐 :更新乘 0.2·√(max(fan_in, fan_out)),RMS 与 AdamW 对齐 → 学习率可直接迁移。
  • NS 迭代只是几次 matmul,BF16 可跑,远比 SVD 便宜。

原版与定制 :原版 Muon 的 Newton-Schulz 迭代约 5 步;DS-V4 采用两阶段混合 Newton-Schulz(前 8 步快速收敛系数 + 后 2 步精确归一系数,共 10 步)。两者是"通用实现"与"生产定制"的关系。

来源 :Keller Jordan 2024 年提出;Moonlight(Kimi,2025) 首次在 MoE 规模上验证可用,万亿级验证见后续 Kimi K2/K3。

对架构的反作用:架构与优化器是耦合系统

  • GLM:Muon Split------MLA 的上投影按头拆开正交化,否则输 GQA-8。
  • Kimi:Per-Head Muon------同一思路,两家独立收敛。
  • DS-V4:有了 QK-Norm 就不再需要 QK-Clip 补丁。

为什么按头拆:MLA 的上投影把多个头的 K/V 拼在一个大矩阵里,整矩阵正交化会让各头的奇异方向互相妥协;按头拆开各自正交化,"方向拉齐"才真正作用到每个头------这个坑只有真的配 Muon 训练才会暴露。

启示 :架构、优化器、归一化是一个耦合系统------评价任何一个改动都要说明"在什么训练配置下"。"MLA 打不过 GQA"的结论,在 AdamW 和 Muon 下答案不同。

5.6 稳定化工具箱

机制 解决的问题 代表模型
RMSNorm / QK-Norm 注意力 logits 爆炸 四家全部
mHC 超连接 深层信号稀释 + 混合发散 DS-V4
AttnRes 浅层信息被深层淹没 Kimi-K3
有界激活(clamp / SiTU) 低精度下激活离群点 DS-V4 / Kimi-K3
输出门控 噪声注意力头干扰 Kimi-K3 / Qwen3.6
attention sink softmax 强制关注问题 DS-V4
Muon 系优化器 各方向更新幅度不均 DS-V4 / GLM-5.2 / Kimi-K3

规律 :这些机制单独看都很小,合起来决定了万亿参数模型能否稳定训练------"不炸"本身就是一种架构能力。


第六部分 · 推理加速(训推协同)

6.1 投机采样与 MTP

瓶颈:自回归逐 token 生成,每个 token 一次完整前向------延迟与输出长度成正比,GPU 大部分时间在等显存搬运。

投机采样(2023) :小模型先"打草稿"连猜 γ 个 token;大模型一次前向并行验证整段,接受最长一致前缀再加 1 个奖励 token。拒绝采样保证输出分布与大模型完全一致------加速且无损。

python 复制代码
# 一个投机解码回合
draft = draft_model(prefix, gamma=4)      # 草稿:连猜 γ 个
logits = target.forward(prefix + draft)   # 验证:大模型一次前向并行打分
acc = longest_match(draft, logits)        # 从左到右,接受最长一致前缀
prefix += acc + 1                          # 被拒处由大模型补 1 个正确 token

MTP(DeepSeek-V3,2024):不再外挂小模型------训练时给主模型挂 k 个轻量模块预测未来 k 个 token(共享词嵌入与输出头);推理时它们就是自带的草稿器。训练信号更密,推理近乎免费加速。

直觉:大模型"判卷"比"写作文"便宜------并行验 4 个 ≈ 串行写 1 个。

接受长度:DS-V3.2 ≈ 2.55 token/轮;GLM-5.2 参数共享 MTP ≈ 2.76(约 +8%);Qwen3.6 用多步 MTP 训练。

6.2 DSpark:把草稿器做到"又快又准"(2026.07)

草稿器的两难:

  • 自回归草稿器(EAGLE3):猜得准但逐个生成、慢。
  • 并行草稿器(DFlash):一次出 γ 个、快,但各位置独立预测------会拼出"of problem"这类跨位置矛盾,后缀接受率崩塌。

DSpark 解法一:半自回归

重的并行主干一次算出所有位置的基础 logits,再加一个极小的顺序头(Markov 低秩转移 / RNN 门控状态,秩 256)按已采样的前缀修正------速度接近并行,连贯性接近自回归。

解法二:置信度调度验证

每个草稿位置输出置信度,前缀存活概率连乘;调度器按引擎当前负载决定每个请求验证多长------空闲多验、拥挤只验有把握的,不浪费 batch 容量。

python 复制代码
# Markov 顺序头(低秩转移,秩 r=256)
B = W1[x_prev] @ W2
logits_k = U_k + B                  # 主干 logits + 前缀修正
# 置信度头:该位置通过验证的概率
c_k = sigmoid(w @ [h_k, emb(x_prev)])
# 前缀存活概率 = c_1 * ... * c_k

效果:

  • 接受长度:比 EAGLE3 +30%、比 DFlash +17%。
  • 线上 DeepSeek-V4 用户速度 +60~85%(吞吐持平,基线 MTP-1)。
  • 开源:V4 checkpoint + DeepSpec 训练库。

来源:《DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation》,arXiv:2607.05147(2026-07-06)。

定位:MTP 是"训练时顺带拿草稿器",DSpark 是"为推理专门设计草稿器"------已成 V4 生产方案。

6.3 ViT 与 LLM 的结合

通用三步:

  1. 切 patch:图片切成 14×14 小块,每块线性映射成一个"视觉 token"。
  2. ViT encoder:纯 Transformer 对视觉 token 做双向注意力。
  3. projector:小 MLP 把视觉特征对齐到 LLM 词嵌入空间------视觉与文本 token 拼成一条序列,LLM 零改动直接读。
python 复制代码
# 视觉 token 进 LLM(LLaVA 式伪码)
patches = Conv2d(3, dv, 14, stride=14)(img)   # 图片 → patch 序列
v = ViTEncoder(patches)                        # 视觉特征
v = MLP_projector(v)                           # dv → d_llm
h = cat([text_emb, v], dim=1)                  # 与文本 embedding 拼接
out = LLM(inputs_embeds=h)                     # LLM 零改动

三代做法回顾:

  • CLIP(2021):双塔对比学习,图文对齐但不会生成。
  • LLaVA(2023):冻结 CLIP-ViT + 线性 projector 接 LLM,便宜有效。
  • 原生多模态(2025+):ViT 与 LLM 从头联合训练(Kimi MoonViT-V2 / Qwen ViT,各 27 层)。

趋势 :从"外挂对齐"到"原生联合训练",视觉塔相对 LLM 越来越小(27 层 vs 93 层),职责收敛为"把像素变成 LLM 能读的 token"。Qwen 系用 M-RoPE,把时间/高/宽三个维度的位置分开编码。


第七部分 · 四大旗舰与横向对比

7.1 DeepSeek-V3 → V4:一条血统的演进史

维度 V3(2024.12) V4-Pro(2026.04)
注意力 MLA 全量注意力 滑窗 + CSA 压缩 + HCA 重压缩
KV cache 576 维 latent / token 滑窗 128 + 压缩块(1M 时仅 10%)
残差 标准残差 mHC 四路超连接(Sinkhorn 约束)
MoE 路由 sigmoid + noaux + 分组 sqrt(softplus) + 前 3 层 Hash 路由
激活函数 SwiGLU 钳制 SwiGLU(limit=10)
精度 FP8 混合精度(开创) FP4 专家 + FP8 其余(QAT)
优化器 AdamW Muon(混合 Newton-Schulz)
上下文 128K(YaRN 外推) 1M 原生

设计哲学:一切改动为"1M 上下文可用"服务------1M 时单 token FLOPs 仅为 V3.2 的 27%。

7.2 GLM-5.2:站在 DSA 肩膀上的工程优化

骨架:沿用 DeepSeek-V3.2 路线(MLA + DSA + 细粒度 MoE + MTP),自家增量集中在"把效率压榨到极致"。

三个自家增量:

  • IndexCache:4 层共享一次索引 → 1M FLOPs 再降。
  • DSA 改造成本极低:仅 20B tokens(对比 DS-V3.2 的 943.7B)。
  • MTP 参数共享:投机解码接受长度 2.76 vs V3.2 的 2.55。

训练细节里最值得记住的两条:

  • Muon Split:MLA 配 Muon 的坑,按头拆分正交化解决。
  • 高效注意力消融:所有高效变体在细粒度检索上仍有 5~7 分固有差距 → 全量注意力层必须保留。

规模:总参约 750B / 40B 激活 / 78 层 / 1M 上下文。

路线评价:务实------用别人验证过的机制 + 极致工程,风险低、见效快。GLM-5 报告的消融数据是评估"要不要全改线性/稀疏"时最诚实的参考。

7.3 Kimi-K3:最激进的架构实验

三维叙事(官方报告的组织框架):

  • token 混合 :69 层 KDA 线性注意力 + 24 层 Gated MLA(完全 NoPE);位置信息全交给线性层。
  • 层混合:AttnRes------跨 block 的残差注意力,深层直接读取浅层快照。
  • 通道混合:Stable LatentMoE------专家搬进 3584 维潜空间,896 专家选 16,稀疏比 27×。

数值设计即架构 :KDA 的衰减门下界 g_min=−5 是经过计算的------16 token tile 内累积衰减保证落在 BF16 动态范围内,所有 tile 都能走 Tensor Core 稠密矩阵乘。数值范围设计直接决定硬件利用率。

规模:2.8T 总参 / 104B 激活 / 93 层 + 27 层视觉塔(原生多模态)/ MXFP4 全程 QAT / 无 MTP。技术报告:arXiv:2607.24653(2026-07-27)。

7.4 Qwen3.6:成熟架构的"下放"与稳定化

路线:延续 Qwen3-Next 血统------Gated DeltaNet 线性注意力 + 每 4 层 1 层全量注意力 + MTP,不加新花样。

值得注意的细节:

  • 全量层:GQA 16Q/2KV 头、head_dim 256、partial RoPE 25%、输出门。
  • MoE:256 专家选 8+1,专家中间维仅 512(极细粒度)。
  • 保留微小辅助均衡损失(coef≈0.001)------没跟 noaux 的风。
  • MTP 多步训练,配合 NEXTN 投机解码。

规模:总参 35B / 激活 3B;上下文 256K 原生,可外推 ~1M;原生多模态 27 层 ViT。

上一代旗舰 :Qwen3-Next 的主线型号为 Qwen3-Next-80B-A3B(总参 80B、激活 3B)。其验证过的混合架构在半年内完整下放到 35B-A3B(激活仅 3B)甚至 27B dense。

最新动向(2026-10) :截至 2026-10,Qwen 已迭代出 Qwen3.5、Qwen3.8 Max 等后续型号------架构创新沉淀后的"下沉节奏"比课件成文时更快。

7.5 横向对比

架构维度

维度 GLM-5.2 DS-V4 Kimi-K3 Qwen3.6
注意力路线 MLA+DSA (top-2048) CSA 压缩+DSA+HCA+滑窗 KDA 线性 69 层 +MLA 24 层 GDN 线性 + 1/4 全量
KV cache 576 维 latent 滑窗 128 + 压缩块 仅 24 层有 KV 仅 1/4 层有 KV
FFN 256 选 8+1 384 选 8+1(Hash 前 3 层) LatentMoE 896 选 16+2 256 选 8+1(极细粒度)
残差 标准残差 mHC 四路 AttnRes 标准残差
激活 SwiGLU 钳制 SwiGLU SiTU-GLU SwiGLU
位置编码 RoPE partial 64 维 + 反旋转 MLA 层 NoPE partial 25%
MTP 有(约 +8% 接受) 有(HC 流上) 无 有(多步)
精度 BF16/FP8 FP4+FP8 QAT MXFP4 QAT BF16

规模、效率与设计哲学

GLM-5.2 DS-V4-Pro Kimi-K3 Qwen3.6-35B
总参 / 激活 ≈750B / 40B 1.6T / 49B 2.8T / 104B 35B / 3B
原生上下文 1M 1M 1M 256K(可外推 1M)
长文本路线 稀疏选择 压缩 + 稀疏 线性为主 线性为主
训练量 28.5T tokens 33T tokens 未公开 未公开
多模态 纯文本 纯文本 原生 ViT 原生 ViT
设计哲学 务实工程、效率压榨 为 1M 而生、系统重构 激进实验、三维混合 成熟配方、快速下放

没有"最强架构":Kimi 证明线性路线可行,DS 证明压缩路线可行,GLM 证明稀疏改造最便宜------选择取决于你的训练预算与场景。

7.6 演进总览与展望

五条演进轴线

轴线 变化 代表
注意力 全量 → 按需 MLA 低秩压缩 / DSA 稀疏 / 线性混合 / 压缩注意力------多条路线并存
FFN dense → 极端稀疏 256~896 专家、激活比 3~9%、LatentMoE 潜空间
残差流 加法 → 可学习混合 mHC 四路(DS-V4)/ AttnRes 跨块读取(Kimi-K3)
稳定化 LayerNorm → 工具箱 RMSNorm、QK-Norm、有界激活、输出门、sink
训推协同 分离 → 联合设计 MTP / DSpark 投机解码、FP4/FP8 QAT、Muon 进架构

一句话:2026 的旗舰早已不是"Transformer 堆层"------多个方向的合力让 1M 上下文与 T 级参数同时可用。

展望

  • 多条注意力路线并存:稀疏 / 线性 / 压缩各有拥趸,2026 没有统一答案------下一代可能是它们的进一步融合。
  • 架构与硬件协同加深:FP4 QAT、Tensor Core 友好的数值范围设计------架构师必须懂硬件。
  • 优化器成为架构变量:Muon 改变了"什么架构训得动"的边界,评价改动要带上训练配置。
  • 给小团队的建议:GLM 的路线最可复制------站在已验证的机制上,用消融数据做取舍,把效率工程做扎实。

2026-08 → 2026-10 的新增动向

时间 事件 说明
2026-07-27 Kimi K3 技术报告发布 2.8T/104B,Stable LatentMoE,对标 Claude Fable 5 / GPT-5.6 Sol
2026-07-06 DSpark 论文 已在 DeepSeek-V4 生产部署,V4 提速 60~85%
2026-08+ Qwen 迭代至 Qwen3.5 / Qwen3.8 Max 印证"下沉节奏加快"
2026-08+ 混合架构获得理论支撑 arXiv:2605.16640 证明 Gated DeltaNet+Attention 混合有表达力优势
2026-08~10 旗舰白盒可解释性研究增多 针对 GLM-5.2 / Kimi-K3 的内部表征、奖励黑客监控等研究密集出现

结论:三大注意力路线并存、MoE 极端稀疏、训推联合设计 这条主线在 2026-10 依然成立;变化最快的是版本号与下沉速度,而非架构方向。


实践清单

评估一个"高效注意力改动"的检查清单

  1. 明确基线:改动前的模型规模、上下文长度、硬件、推理框架(vLLM / SGLang?)。
  2. 分别测三条曲线:prefill 延迟、decode 吞吐、长文本精确检索得分(不要只看平均分)。
  3. 算清 KV cache 的真实占用:注意"每 token 存多少维"与"哪些层有 KV"是两个口径。
  4. 核对索引器/选择器是否成为新瓶颈:稀疏化后 O(L²) 的成本往往转移到索引器。
  5. 保留全量兜底层:消融显示全改线性/稀疏会显著损失细粒度检索(GLM-5 报告:5~7 分固有差距)。
  6. 说明训练配置:MLA + Muon 与 MLA + AdamW 的结论可能相反。

成本/资源模型速记

  • KV cache ∝ 上下文长度 × 每 token 存储维度 × 有 KV 的层数------三个因子都可动。
  • MoE 每 token 计算 ≈ 激活参数 ,与总参数解耦;但显存仍由总参数决定。
  • 投机解码的收益 = 接受长度提升 × 验证成本比 ;+60~85% 这类数字一定要带基线(此处基线为 MTP-1)。

常见误区速查表

误区 正确理解
"MLA 是 KV 的近似压缩" 是低秩重参数化,数学上可等价吸收进 Q/O,非近似
"稀疏化就能无限扩上下文" 索引器本身仍是 O(L²),需再做层间复用(IndexCache)
"线性注意力可以完全替代全量注意力" 记忆有损,精确检索弱;业界均为混合架构(约 3:1)
"MoE 激活少 = 显存小" 激活少只省计算;显存仍受总参数约束
"归一化只是加速" QK-Norm 直接决定训练稳定性,且与优化器选择耦合
"无辅助损失 = 什么都不用管" noaux 只把"选人"与梯度解耦,专家容量仍需偏置调节
"位置编码越全越好" 2026 趋势是 partial RoPE / NoPE,按需分配

附录 · 术语表与参考资料

术语表

术语 含义
MHA / MQA / GQA / MLA 多头注意力 / 多查询 / 分组查询 / 多头潜在注意力
KV cache 推理时缓存的历史 K/V
DSA DeepSeek Sparse Attention(DeepSeek-V3.2 提出)
CSA / HCA 压缩稀疏注意力 / 极端压缩注意力(DS-V4)
KDA Kimi Delta Attention(Kimi 的线性注意力)
Gated DeltaNet 门控 DeltaNet 线性注意力(Qwen 系采用)
mHC 多路超连接(DS-V4)
AttnRes 注意力式残差读取(Kimi-K3)
MoE / noaux 混合专家 / 无辅助损失负载均衡
QAT 量化感知训练
MTP 多 token 预测(Multi-Token Prediction)
SiTU-GLU Kimi-K3 的有界激活变体

参考资料

  • Kimi K3 技术报告:arXiv:2607.24653《Kimi K3: Open Frontier Intelligence》(2026-07-27)
  • DSpark:arXiv:2607.05147《DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation》(2026-07-06)
  • IndexCache:arXiv:2603.12201《IndexCache: Accelerating Sparse Attention via Cross-Layer Index Reuse》(2026-03-12)
  • GLM-5:arXiv:2602.15763《GLM-5: from Vibe Coding to Agentic Engineering》(2026-02-17)
  • 混合架构理论:arXiv:2605.16640《Provably Shorter Scratchpads in Hybrid DeltaNet-Attention Decoders》(2026-05-15)
  • 课件自述来源:llm_arch_evolution/(调研报告 + 模型源码 + 技术报告 PDF,随课件发布)
相关推荐
商业数据派1 小时前
京东11.11:首日下单用户数同比双位数增长、超百项服务首次全景亮相
人工智能
W***25921 小时前
2026企业AI办公工具选型指南:从需求匹配到平台评估
人工智能
石狮松松1 小时前
第04 章 机器学习、深度学习、大模型到底什么关系
人工智能
有月牙1 小时前
Work Agent深度解读:AI长程任务的执行机制与落地边界
人工智能
Pingred1 小时前
我把一个私有化 RAG 系统真正跑通了:LocalRAG v0.1.0 发布
人工智能·python
孟健1 小时前
Claude Code 桌面端魔改多 Agent:从日耗 6 美元到账单失控的实测复盘
架构·ai编程·claude
miofly1 小时前
Google Gemini 4 Argon:用一个模型完成机器人训练全流程
人工智能
WILLF1 小时前
《从0搭建AI聊天后端:FastAPI+OpenAI+SSE流式输出》
人工智能·后端
sorry3551 小时前
从零实现 nanoGPT(七):融合 QKV,让模型实现向原版靠拢
人工智能