从0训练LLM · 现代大模型体系 阅读 + 实验 ≈ 40 分钟 页内实验 ×5
C15 前沿解剖:2026 开源模型各自改了什么、为什么 第 2 课

config 一个字段都没改,GLM-5.3 的提升从哪来?

GLM-5.3:一个字段都没改,强在哪
GLM-5.3 与 GLM-5.2 的 config 逐字段相同,参数总数 753,329,940,480 一个不差——提升全部来自后训练。顺手用参数账反查:GLM-5 与 5.2 的计数差 534,198,528,恰好是 57 个索引器的参数,IndexShare 是直接删掉权重的。同一天发布的 GLM-5.3-Flash 换了底座:KDA、NoPE、mHC、IndexPool、SwiGLU 截断,几乎每一个新部件都借自别家。
❓

本课一问:GLM-5.3 的 config 和 GLM-5.2 一个字段都没改,官方却说它在编码与网络安全上大幅变强——提升从哪来?同一天发布的 GLM-5.3-Flash 又为什么换了一整套底座?

这一课先不碰:DSA 索引器怎么打分(C11)、on-policy 蒸馏(C12 第 7 课)、SAO 的算法细节(本课下文只列要点,C12 没有展开)、GLM-5.3 为什么换了许可证(岔路课)。

从已有出发

同一句「小明把苹果给了小王」送进 GLM-5.3。GLM 的词表是 154,880 行,和 Qwen 的 248,320 不同,切出的 token 数可能不同,所以下面一律「按每个 token 计」:GLM-5.3 的 78 层全是 MLA(C3 第 10 课),每层每 token 存一个 512 维潜向量加 64 维 RoPE 分量,合计 89,856 B;另有 21 个层存 DSA 的索引 key,5,376 B。对照 Qwen3.8-27B 的 65,536 B:GLM 没有线性注意力层,只靠 MLA 这一刀压 KV。

从已有出发 · 累计数据流 点已学环节看形状与参数
解码层
演进图 · 本课在哪一段 QwenGLMDeepSeekKimi
GLM 2025-07 GLM-4.5
引入355B-A32B、92 层;GQA 用 96 个头(头多 loss 不降,推理类基准却上升);Muon;MTP;sigmoid 路由 + 无辅助损失均衡。
借来无辅助损失均衡出自 DeepSeek-V3;Muon 出自 Keller Jordan 与 Moonlight。
卡在GQA 的 KV 随长度线性增长,上下文只到 128K(后来 4.6 扩到 202,752)。
GLM 2026-02 GLM-5
引入744B-A40B,28.5T token;Muon Split(按头拆开再正交化,让 MLA 追平 GQA-8)与 MLA-256(头维 192 → 256、头数减 1/3,降低 decode 计算)是 GLM 自己的改动。
借来MLA 出自 DeepSeek-V2;DSA 出自 DeepSeek-V3.2——GLM-5 报告自己用的词是「adopts」。
卡在DSA 的索引器每一层都要给全部 token 打分;上下文仍是 202,752。
GLM 2026-06 GLM-5.2
引入IndexShare:每 4 层只算一次索引(21 个 full 层 + 57 个 shared 层)。参数账可以反查:GLM-5 / 5.1 与 5.2 的 HF 计数差 534,198,528 = 57 × 9,371,904(一个索引器,由 config 现算)——shared 层的索引器权重是直接删掉的。θ 从 106 改到 8×106,上下文到 1,048,576。
借来IndexShare 的方法是 Z.ai 与清华自己的 IndexCache(arXiv 2603.12201)。
卡在被共享的是「选哪些 token」的决定——后 3 层用的是别的层挑的 token;官方没报这项的质量代价。
GLM 2026-08 GLM-5.3 与 5.3-Flash 本章讲它的那一课 →
引入GLM-5.3 的 config 与 5.2 逐字段相同,参数 753,329,940,480 一个不差,提升全部来自后训练。5.3-Flash 换了底座:34 层 KDA + 11 层 DSA-MLA(不用位置编码)+ 4 条流的 mHC + IndexPool + SwiGLU 截断 10;每 token KV 从 89,856 + 5,376 B 降到 11,264 + 704 B。
借来KDA 与衰减下界 −5 来自 Kimi Linear / K3(config 字段同构);mHC、MLA、DSA 来自 DeepSeek;SwiGLU 截断来自 gpt-oss。
卡在5.3-Flash 没有技术报告;博客说「KV 小 4.44 倍」,用 config 复算是每层平均 4.59 倍、每 token 7.96 倍,对不上。

看四条泳道的完整演进图 →

数字口径:KV 字节、固定状态、稀疏度、GLM 的参数差值都由 frontier-models.json / anchor-model.json 的官方 config 在构建时现算,并与数据文件的 _meta.checks 逐项核对(对不上就构建失败);V4.1 的 890 B 另用了两个格式常数(FP4 条目 288 B、索引 key 68 B,见 R3 §1.5e)。其余文字出自各家技术报告与模型卡,归属判断见 R2 §0.1、R3 §1.7。

先自己设计:更强,就一定是架构变了

上一课学会了先 diff config。拿 GLM-5.3 和它的上一版 5.2 试一下:

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案变强 = 架构更好或参数更多
型号发布configHF 参数计数
GLM-5.22026-06-16GlmMoeDsaForCausalLM753,329,940,480
GLM-5.32026-08(API 08-14)逐字段相同753,329,940,480

官方自报的提升:ExploitBench 从 24.4 到 54.4;Z.ai Code Bench +50%(私有基准)。

官方自报的提升属于第 ③ 层,而 Code Bench 是私有基准,题目不公开、无法检验 。2026 年这两件事在两家同时发生——Qwen3.8-27B 与 GLM-5.3 都没动 config:提升不一定来自架构,后训练的规模化本身就是一条路。

改进:参数账能反查架构到底改了什么

config 不变时,参数总数也不变;反过来,参数总数变了,就能反查 config 哪里动了。GLM-5 / 5.1 的 HF 计数是 753,864,139,008,到 5.2 变成 753,329,940,480,差 534,198,528。这个差值从哪来?5.2 的版本定义特性是 IndexShare:78 层里只有 21 层自己算 DSA 索引,另外 57 层复用前面的 top-k。先算一个索引器有多少参数:

一个 DSA 索引器的参数(GLM-5.3 config 现算)
+ + + = 9,371,904
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
× 57 个 shared 层 = 534,198,528,和 GLM-5 → 5.2 的计数差 534,198,528 一字不差。结论:shared 层的索引器权重是直接删掉的,不是训练完再关掉。GLM-5 / 5.1 的计数取自 HF API(R2 §2.3)。

这就是 C4 岔路课的参数账本,用在了侦探工作上:两个版本号之间差了多少参数,能告诉你架构在哪里动了刀 。三块权重在张量上长这样:

GLM-5.3 一个 full 层的 DSA 索引器:三块权重就是那 9,371,904 个参数
It,s = Σh wt,h · ReLU(qt,h · ks), idxt = top2048(It,:)
输入参数(可学习)输出中间结果 渐变 = 分数(连续值)编号槽 = 索引 留白 = 结构上恒为 0
边长按对数比例缩放,块边上的数字是真实值;同一维度符号的边在全图等长。
维度含义 真实规模 小规模
T 序列长度(演示) 5 5
rq q_lora_rank 2048 4
HI·dI 索引头数 × 索引维度 4096 6
d hidden_size 6144 5
dI index_head_dim 128 3
HI index_n_heads 32 2
k index_topk(T 小于它时就是全部) 2048 3
T 取贯穿例句的 5 个 token 只为画图;真实的索引矩阵是 T × T,这正是「索引器自己仍是 O(L²)」的来由。IndexShare 省掉的是 shared 层里这一整套计算,注意力本身每层照算——共享的只是「读哪些 token」这个决定。

IndexShare 的代价是「选择的新鲜度」:后 3 层用的是别的层挑出来的 token。旧版课程写的是「官方没有报副作用」;现在这一格有了一条来自竞争对手的证据——Qwen 在 35B-A3B 的混合架构上对比过,IndexShare 到索引器相对延迟 0.5 仍追不平全注意力,而它自家的 QSA 在 0.25 就追平了 。耐人寻味的是,GLM 自己的 5.3-Flash(也是混合架构)同样放弃了 IndexShare。

再改进:5.3-Flash 换底座——几乎每个部件都是借的

和 5.3 同一天,Z.ai 发布了 GLM-5.3-Flash:新 base、新架构、30T 多模态 token。把它和 5.3 逐行对一遍,两级都自己先判断:

新旧分离:GLM-5.3 → GLM-5.3-Flash

先自己判断每一行属于哪一类,再点「揭晓」。机制变了 = 新增、换掉或删掉了一个部件;数值变了 = 同一个东西放大或缩小;没变。

两列都由 frontier-models.json 的官方 config 读取与现算。

🎯

试三件事:① 第一级揭晓后按「机制变了」筛选,数一下有几行;② 揭晓第二级:这几行里有几行是 GLM 首创?(答案是 0 行,只有 IndexPool 算一半)③ 点「注意力层构成」,读出处——config 里 KDA 的字段结构与 Kimi K3 完全同构,衰减下界同为 −5,这是强旁证;但 Z.ai 没有公开说明来源,所以写「来自 K3 的可能性很大」而不是「抄了 K3」。

「对 GLM 新、对领域不新」不是贬义。2026 年 8 月的这次发布,是 K3(7 月)的 KDA 混合栈在一个月内外溢到别家的一例——同期还有蚂蚁的 Ling-3.0 与 Yandex 的 AliceAI。前沿的进步,很多时候是把已被验证的部件快速组装、稳定到自己的规模上。

它的 KV 账,按同一个口径复算:

KV 账本:从「同形 MHA」一刀一刀砍下来

口径:BF16 每元素 2 B,只算随序列长度增长的全局 KV(与 frontier-models.json _meta.checks 同一口径,✓ = 现算值与核对值一致);线性注意力的固定状态与滑窗常数不随长度变,另列。V4.1 的原生格式用两个格式常数:FP4 KV 条目 288 B(256 B E2M1 + 32 B E4M3 scale)、索引 key 68 B(OCP MXFP4 推算),出自模型卡、FlashMLA README 与 R3 §1.5e。

每 token 从 89,856 + 5,376 B 降到 11,264 + 704 B:MLA 这一刀没变(潜向量都是 512 维),多出来的是「层」这一刀——45 层里只有 11 层是全局层。NoPE 让 RoPE 分量也从 64 维变成 0。

极小真数字:官方的「4.44 倍」对得上吗

5.3-Flash 的博客说它的「KV cache 小 4.44 倍」。上面两个数就够复算了:

GLM-5 / 5.3 材料里的数字
🎯

试三件事:① 打开「KV 小 4.44 倍」:每层平均与每 token 两种最常见的口径都不是 4.44——按规矩写「复现不出」,不替它凑口径;② 打开下一条:「Flash 的 KV 略大于 K3」这句话,换成每 token 总量就变成「小得多」;③ 打开 GLM-5 表 1:MLA 在 Muon 下追不上 GQA-8,按头拆开再正交化(Muon Split)把它拉回来——这是 C3 的 MLA、C5 的 Muon 两章在同一张表上相遇。

⚠ 常见误解

⚠

「GLM 提出了 DSA。」DSA 是 DeepSeek-V3.2 的(2025-09);GLM-5 报告自己用的动词是 adopts,transformers 里 GLM 的索引器源码注释写着「Same as DeepseekV32Indexer」。MLA 也来自 DeepSeek-V2。GLM 自己的是 IndexShare(IndexCache 论文)、Muon Split、MLA-256。另外,NVIDIA NIM 的文档页把 DSA 解释成「Dense-Sparse-Alternating」,是那一页的错误。

⚠

「753B 和 744B 总有一个写错。」753.3B 是 HF 从 safetensors 机械数出的张量总数,744B 是 GLM-5 报告的架构口径,两个都对。GLM-5 报告写「80 层」而 config 是 78 层 + 1 层 MTP,这个差异至今没有解释——标「未核实」,不替它圆。

⚠

「GLM-5 系列都支持 1M。」只有 5.2 起才是 1,048,576;GLM-5 与 5.1 的 max_position_embeddings 是 202,752。拿 GLM-5 的报告解释 5.2 / 5.3 的 1M 与 IndexShare 行不通——那份报告里这两样都没有出现。

在演进图上的位置

GLM 这条线:GLM-4.5 用更深更窄 + Muon;GLM-5 采用 DeepSeek 的 MLA 与 DSA,自己加了 Muon Split 与 MLA-256;5.2 加上自家的 IndexShare 走到 1M;5.3 只改后训练;5.3-Flash 转向 KDA 混合栈。泳道图里点「GLM-5.3 与 5.3-Flash」,看它从三家各借了什么。

证据三问

问本课的回答
① 它解决什么问题?5.3:在同一个 base 上把编码、长程 agent、网络安全能力推上去;5.3-Flash:用更小的激活参数和混合注意力,降低长上下文服务成本
② 数学上为什么可能有效?参数差值 = 57 个索引器,是计数 ;KDA 的固定状态不随长度增长、mHC 的双随机约束不放大,都可证明(第 3、4 课);后训练为什么能带来这么大提升,只有理论动机
③ 实验上为什么最后选了它?GLM-5 表 1 的 MLA / Muon Split 消融;5.3 的提升与 5.3-Flash 的效率都是官方自报

一句话

📌

config 一个字段不改也能变强;参数总数的差值,能反查架构到底删了什么。

🚦

先停在这里:记住「后训练的规模化本身就是一条路」和「参数差值 = 57 × 9,371,904」这个侦探法。
再深一层:打开 GLM-5 报告 §2.1,把表 1 的每一行和本课的 ReportClaims 对上;再去 C12 看可验证奖励与 reward hacking。

下一个缺口

5.3-Flash 靠 KDA 与「层」这一刀,把每 token 的 KV 压到 11,264 B。可 DeepSeek 偏不用线性注意力,纯 softmax 却压到了 890 字节——它是怎么做到的? → 第 3 课:DeepSeek-V4.1

岔路:GLM-5.3 把许可证从 MIT 改成了自定义,同一天的 5.3-Flash 仍是 MIT——开放权重能商用吗?

你可能会问

这一课还没有收到真实提问;你的提问会记到 05-问答记录/C15-L2.md。