从0训练LLM(旧版 · 存档中) · M8 阅读+实验 ≈ 75 分钟 页内实验 ×4

前沿三强:通往 1M 上下文的三条路

2026 年夏天,Kimi K3、DeepSeek V4、GLM-5.2 的权重先后落地,三家都把上下文推到了 100 万 token。同一道题,三种解法——K3 不存、V4 存少、GLM 全存但少读。这一节把三条路并排拆开,顺便学会怎么在没有技术报告的地方说「我不知道」。
① 主线定位

M7 解剖了一家,M8 把三家并排

从「读懂这一份报告」升级到「读懂这一类报告」。

M7 我们把 Kimi K3 从头拆到尾。那是一次纵向的深挖:一家、一份报告、47 页。

这一节换个方向——横着切。

2026 年的这个夏天,三份开放权重先后落地:

模型权重落地规模上下文
DeepSeek V4(Pro / Flash)4 月 24 日官方公布,6 月 22 日 HF 仓库更新1.6T / 49B · 284B / 13B1M
GLM-5.26 月 17 日753B / 40B1M
Kimi K37 月 26 日2.78T / 104.2B1M

三家互不相干,规模差了 10 倍,却在同一个夏天交出了同一个数字:1,048,576。

而且——它们改的是同一个地方。三份材料翻到架构那一章,动的都不是 MoE、不是激活函数、不是优化器,而是注意力层本身。

🧭

上游: M2 的注意力与 N² · M6 的 KV cache 与 MLA · M7 的 KDA 与混合栈。
本节: 把三条通往 1M 的技术路线并排拆开,看它们各自省了什么、代价是什么。
下游: 你获得的能力是——打开 2026 年任何一份前沿模型报告,能读懂它的注意力章节,并且知道哪些结论该信、哪些该标「我不知道」。

📌

关于本节的材料来源,必须先说清楚,因为三家不一样:

  • Kimi K3:47 页技术报告 + 官方仓库 + config.json(M7 已精读)
  • DeepSeek V4:arXiv:2606.19348 完整技术报告(约 55 页,逐页精读过)+ HF 模型卡 + NIST CAISI 独立评测
  • GLM-5.2:没有自己的技术报告。 能拿到的一手材料是 GLM-5 的报告(arXiv:2602.15763,40 页)加上 5.2 的模型卡与 config.json——而 GLM-5 的报告里既没有 IndexShare,也没有 1M。

所以你会在这一节里反复看到「未核实」三个字,尤其集中在 GLM-5.2 那一列。这不是偷懒,是这一节最重要的训练:在材料到不了的地方,学会不说话。

② 核心问题

1M 上下文到底难在哪

回扣 M2 的 N² 与 M6 的 KV cache——把它们放到 100 万这个量级上重算一遍。

「支持 1M 上下文」听起来只是一个参数调大。把 M2 和 M6 的两条公式拿出来算一算,就知道它为什么必须动架构。

难点一:注意力矩阵是 N²(M2)

M2 讲过,自注意力要算一张 N×N 的分数表。N = 1,048,576 时:

1,048,576² ≈ 1.1 × 10¹² —— 一万一千亿个注意力分数。

FlashAttention(M3)解决的是「不把这张表存下来」,它并不能让这张表不用算。分块、融合、省显存,改变不了这是 N² 的事实。

难点二:KV cache 随长度线性膨胀(M6)

这条更要命,因为它吃的是显存。用 M6 那条公式,取一个很常规的配置:

32 层 · 32 个注意力头 · GQA 8 组(即 4 个 KV 头)· head_dim 128 · BF16

每个 token 的 KV = 2(K 和 V)× 32 层 × 4 个 KV 头 × 128 维 × 2 字节 = 65,536 字节 = 64 KB

1M token = 64 KB × 1,048,576 = 68.7 GB

一张 H100 是 80 GB。一条 1M 的序列,光 KV cache 就吃掉 86%——模型权重一个字节还没放进去。

把下面这个 M6 的计算器拖到最右(128K),看到的是 8.59 GB;1M 就是它再乘 8。

回顾 · M6 的 KV cache 计算器(真算术)
KV cache 随序列长度线性增长——三条线的斜率就是三种方案的差距。竖虚线 = 你当前拖到的序列长度。

🎯

三件事:① 保持 GQA、把序列拖到 128K,记下那个数字,然后心算 ×8 就是 1M 的量;② 切到 MHA 再看一遍——GQA/MQA 只是把斜率压小,线还是直的、还是往上走的;③ 想一想:如果斜率再压 10 倍,1M 下还是 6.9 GB。要在 1M 上活下来,必须让这条线不再是直线。

❓

于是本节的核心问题:怎么让「KV cache 随长度线性增长」这件事不再成立?

数学上只有三种可能:

  1. 别让它增长——把历史压进一个大小固定的东西(K3 的路)
  2. 让它增长得慢一点——每 m 个 token 才存 1 条(V4 的路)
  3. 让它照常增长,但别每次都读全部——存全量、只读 top-k(GLM-5.2 的路)

这三条就是这一节的全部内容。 它们不是三种「实现」,是三种对同一个物理约束的不同妥协。

③ 三条路

不存 · 存少 · 全存但少读

本节核心。K3 已在 M7 详讲,这里重点是 V4 的 CSA/HCA 与 GLM-5.2 的 DSA/IndexShare。

先把三条路一句话摆开:

做法省了什么代价
Kimi K3线性注意力:69/93 层用 KDA 的固定大小循环状态,24 层留完整 Gated MLA显存与算力同时省,且与序列长度无关固定状态装不下所有细节,所以必须每 3 层插 1 层 MLA 兜底
DeepSeek V4压缩 + 稀疏:每 m 个 token 压成 1 条 KV,再用 indexer 从压缩条目里 top-k 选三条路里省得最狠(KV 与算力都省)压缩是有损的;且短序列下固定开销摊不薄,可能比稠密还慢
GLM-5.2检索式稀疏:KV 一条不压全存着,indexer 每次只挑 top-k 送进注意力只省算力一点显存都不省——1M 的 KV 该有多大还是多大

① Kimi K3:不存

M7 已经完整拆过了,这里只提一句它在三条路里的位置:K3 是唯一一条「历史不再以 token 为单位存在」的路。KDA 把前文压进一个 dk×dv 的循环状态矩阵,读 100 万个 token 之后它还是那么大。

代价也很直接:固定容量必然丢细节,所以 93 层里留了 24 层完整的 Gated MLA 做全局兜底——那 24 层仍然有随长度增长的 KV cache。K3 省的是「层数比例」这个常数因子,不是把增长本身消掉了。

详见 M7。 那里有 KDA 状态更新的公式解剖和逐步实验。

② DeepSeek V4:压缩后再稀疏选

V4 的定位在论文标题里写得很直白:Towards Highly Efficient Million-Token Context Intelligence——它不是「更大的 V3」,是围绕 1M 上下文效率重新设计的注意力层。

核心机制叫 CSA(Compressed Sparse Attention),三步流水:

第一步:压缩。 每 m 个 token 的 KV 压成 1 条。注意这不是平均池化——压缩权重是学出来的,在窗口内做 softmax 归一化后加权求和。而且是两路(Ca / Cb),两路的窗口错位重叠。序列长度到这里就变成了 1/m。

CSA 的压缩:把 m 个 token 的 KV 合成 1 条(技术报告 Eq.11–12)
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
口径提醒:m 的具体取值论文正文没给。Raschka 的独立技术博客说 CSA 约每 4 个 token 压 1 条、HCA 约每 128 个——那是二手来源,调研档案明确标注它没有和论文公式对上。下面实验里用的 m=4 是示意值。

第二步:稀疏选。 压缩之后条目少了 m 倍,但 1M / 4 还有 26 万条,仍然算不起。所以接一个 Lightning Indexer(这套东西承自 DeepSeek 更早的 V3.2 的 DSA):给每条压缩条目打一个分,只把 top-k 条送进真正的注意力。

Lightning Indexer 的打分函数(技术报告 Eq.16)
)
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
对比 GLM-5.2:GLM 的 indexer 要给全部 S 个 token 打分(它不压缩序列),所以它选择在「层」这个维度上省——每 4 层只算一次。同一个瓶颈,两个方向的解法。

第三步:读取。 被选中的压缩条目既当 Key 又当 Value,走共享 KV 的 MQA;query 从那个共享的压缩潜向量升维产生;输出走分组投影再合并,省计算。

除了 CSA,V4 还交错排布了 HCA(Heavily Compressed Attention):同构的压缩,但压缩率 m′ ≫ m、不重叠、不做稀疏选择——对全部压缩条目做 dense 注意力。定位是更粗粒度的「全局概览」层。

💡

看出这个结构和 K3 的对称了吗?

K3:KDA 管长程(便宜、有损)+ MLA 定期兜底(贵、精确)
V4:压缩管长程(便宜、有损)+ 未压缩滑窗管局部(贵、精确)

同一个权衡的两种切法。 一个按「层」切,一个按「距离」切。V4 为什么非要加那条未压缩的滑动窗口?因为压缩块内的 token 由于因果性约束互相看不见,而近处的 token 恰恰是最重要的——压缩对近处伤害最大。

🔍 V4 注意力层里还有三个值得单独记的小设计

① 部分 RoPE + 一个反向技巧。V4 只对最后 64 维施加 RoPE。麻烦在于压缩条目既是 K 又是 V,于是注意力输出会带上绝对位置信息——解法是再对输出施加位置 −i 的 RoPE,把绝对位置转回相对位置。

对比 M7 的 K3:K3 是把位置编码整个删掉(NoPE),V4 是少量、巧用。两家在同一个问题上的判断完全相反,而两家都做到了 1M——说明这里没有唯一正解。

② Attention sink。一个可学习的 sink logit 直接加进 softmax 的分母(Eq.27)。效果是每个头的注意力权重总和可以 < 1,甚至趋近 0——翻译成人话:「这个头这一次可以选择什么都不看」。标准 softmax 强制权重和为 1,等于强迫每个头必须往某处分配注意力,哪怕没有任何相关内容。

③ QKV RMSNorm 取代 QK-Clip。V4 对 query 和压缩 KV 条目都做 RMSNorm 来防注意力 logits 爆炸,并在 §2.4 明说:因此不需要 K2 那套 QK-Clip。M7 讲过 K2 的 MuonClip = Muon + QK-Clip——V4 用一个归一化把这个组件整个换掉了。这三条都在技术报告 §2.3.3。读架构章节时,这类「顺手换掉一个已知组件」的小段落往往比大标题更有信息量。

③ GLM-5.2:全存,但只读一小撮

GLM-5.2 这一段要先说归属,因为这里最容易搞错。

⚠️

DSA 不是 GLM 发明的。

  • DSA = DeepSeek Sparse Attention,DeepSeek 的东西(出自 DeepSeek-V3.2-Exp,约 2025 年 9 月)。
  • GLM-5 的论文摘要用的动词是 “adopts”(采用),不是 “proposes”。模型卡用的是 “integrates”。
  • 它底下叠的 MLA 也是 DeepSeek 的(出自 DeepSeek-V2,M6 学过)。
  • transformers 库里 GLM 的 indexer 类,源码注释直接写着 “Same as DeepseekV32Indexer.forward”。

GLM 自己的贡献,被它自己的文档界定得很窄:IndexShare(跨层索引复用)。

这不是黑 GLM——恰恰相反,一家在自己的论文里老老实实写 “adopts” 的公司,比满篇 “we propose” 的更值得信任。 但你在引用的时候必须归对:说「GLM 的稀疏注意力」可以,说「GLM 提出的 DSA」就错了。

那 DSA 本身怎么工作?和 V4 的 indexer 是同一个思路,但少了压缩那一步:序列一条不压、一条不丢,全部留在 KV cache 里;每次注意力之前,用一个轻量 indexer 给全部 S 个 token 打分,挑出 top-k 送进注意力。

于是问题很明显:indexer 要扫全序列。 1M 上下文下,光打分这一步就成了新的瓶颈。V4 用「先压缩再打分」把候选数降到 S/m;GLM-5.2 的选择是——不减少候选数,而是减少「打分的次数」。

这就是 IndexShare:每 4 层共用一个 indexer 的选择结果。第 1 层真算,后 3 层直接拿它挑好的 top-k 索引来用。

🎯

IndexShare 是 GLM-5.2 的「版本定义特性」——正是它第一次把 GLM 推到真正的 1M 上下文。

**GLM-5 和 GLM-5.1 的 config.json 里,max_position_embeddings 都是 202,752(约 200K)。**只有 5.2 是 1,048,576。官方博客的措辞是「for the first time… on a solid 1M-token context」。

所以:拿 GLM-5 的技术报告去解释 GLM-5.2 的 1M,是行不通的——那份报告全文既没有 “IndexShare”,也没有 “1M”。(这一点我们直接对 40 页的 PDF 做过全文检索:IndexShare 出现 0 次。)

实验 A · 同一条序列,三条路各要付多少(真算术)
1K8K64K128K1M

📐 计算口径(点开看完整公式与每一个常数的出处)

基准:同一序列长度 S 下的 BF16 · GQA8 稠密注意力,每层每 token 记为 100%。
「要存」的单位 = 一条 KV 条目;「要算」的单位 = 一次 query×KV 点积。三列的百分比都是相对同一个 S 下的这个基线,不是相对彼此。

K3 · KDA 混合
存 = (24/93)·S + (69/93)·64 算 = (24/93)·S + (69/93)·128

24/93 层是 MLA(官方,技术报告 Table 1:69 KDA + 24 MLA)——只有这些层存 KV。
64 / 128 是示意折算:KDA 的循环状态是 dk×dv=128×128 的矩阵,一条 KV 条目是 K+V=2×128 → 状态 ≈ 64 条 KV 的体积;每 token 的状态更新约 128 个点积单位。head_dim=128 是我们假设的,报告未给。

V4 · CSA + HCA
n = S/m  W = min(1024, S) 存 = (n + W) × 0.25 × 0.55 算 = 0.25·n + min(k, n) + W

m = 4(压缩率)来自 Raschka 的独立技术博客,调研档案明确标注它没有对上论文公式——按示意值用。
× 0.25:核心注意力是共享 KV 的 MQA(论文 Eq.19,压缩条目既当 K 又当 V),一份 KV 对上基线 GQA8 的 4 组 → 再省 4×。
× 0.55:KV 混合精度存储(RoPE 维 BF16 + 其余 FP8,论文 §2.3.4)。
W = 1024 滑窗、k = 512:论文有滑窗分支与 top-k 选择(Eq.17),但没给具体数值,这两个是示意值。
0.25·n:lightning indexer 扫全部压缩条目,单条成本按稠密点积的 1/4 计(indexer 用 FP4 且维度低,具体维度报告未给,示意)。

GLM-5.2 · DSA + IndexShare
存 = S × 0.56 算 = 0.25·S/g + min(k, S)  g = 4 或 1

存全量:DSA 不压缩序列,每个 token 的 KV 都留着,只是选择性地读。
× 0.56:MLA 低秩潜向量(按 DeepSeek-V2 的 512+64=576 维对上 GQA8 的 4×2×128=1024 维折算)——GLM-5.2 自己的 MLA 维度调研档案未覆盖,示意。
g = 4:IndexShare——每 4 层只有第 1 层真算 indexer,另 3 层复用它的 top-k(官方,2.9× 的来源)。关掉时 g = 1。

⚠️ 这个模型只算注意力那一部分。官方的「27% FLOPs」「2.9× FLOPs」都是整模型单 token FLOPs——里面占大头的是 MoE 前馈层,跟注意力路线没关系。所以本图的百分比会比官方数字更极端,这不是矛盾,是口径不同。这正是读对比表时最容易踩的坑。

🎯

试三件事:

① 先把滑杆推到最右(1M),看三列的「要存」那一行——GLM 是 56%,K3 是 26%,V4 是 3% 出头。三条路省的完全不是同一样东西。

② 再把滑杆拖回最左(1K):V4 的「每 token 要算」会超过 100%——比朴素的稠密注意力还贵。滑窗和 indexer 是固定开销,序列太短时根本摊不薄。这三条路都是为 1M 设计的,不是为 4K。

③ 点开底部的「计算口径」面板,把每一个常数的出处读一遍。里面有一条最该记住:官方说的「27% FLOPs」「2.9×」是整模型单 token FLOPs(大头是 MoE 前馈层),而这个实验只算注意力那一部分。同一个词、两个口径——这正是对比表最常见的骗人方式。

实验 B · IndexShare 逐层步进:省的到底是哪一步
不开 IndexShare
0
次 indexer 计算
indexer 算量之比
—
越大越省
层不开 IndexShare开 IndexShare注意力本身

🎯

试三件事:

① 一层一层点,别一键走完。走到第 2 层时停下来读解说——复用的是「选哪些 token」这个决定。

② 盯住最右边那一列:无论第几层,Q/K/V、注意力、FFN 都照做。IndexShare 一点注意力都没省,它省的只有 indexer。

③ 走完之后看最后那段口径提醒:indexer 单项是 4×,官方整模型口径是 2.9×,IndexShare 依据的论文(IndexCache)实测又是 1.82× / 1.48×。**三个数字,三个口径。**能把它们分清,你就已经比大部分转述文章更专业了。

⚖️

IndexShare 的代价,官方没有报。

后 3 层被迫使用别的层挑出来的 token。不同层学到的表示不一样,第 4 层想看的未必是第 1 层认为重要的——这是一个用「选择新鲜度」换算力的交易。

但调研档案里找不到任何关于这项副作用的对照数据(没有「关掉 IndexShare 掉几分」的消融)。所以正确的说法是:官方未报副作用数据——不是「没有副作用」。

顺带一个可以核验的旁证:Raschka 的独立分析确认了 IndexShare 的排布模式确实是 full, shared, shared, shared 的四层循环,并且明确指出 2.9× 是架构层面的 FLOPs 估算,不是实测墙钟加速。

④ 副线对照

除了注意力,它们还改了什么

这张表里有 5 个格子标着「未核实」——空格本身就是这一节要教的东西。

注意力是主线,但三份材料里还有一堆值得并排看的东西:残差怎么改的、用什么优化器、后训练怎么做的、许可证能不能商用。

下面这张表可以逐行点开。 请特别注意标红的「未核实」——那不是我懒得查,是调研档案确实没有覆盖。

对照 · 三家逐项并排(含未核实标注)

🎯

三件事:

① 先点「🤝 独立收敛到同一处」——K3 和 V4 两支互不相干的团队,把后训练做成了几乎同构的范式:专家分开练、蒸馏合成一个。这种独立收敛比任何一家的自吹都更说明问题。

② 再点「⚠️ 含未核实」——5 个「未核实」全在 GLM-5.2 那一列,因为它没有自己的技术报告。

③ 点「参数规模」那一行读详情——里面埋着本模块最经典的两颗雷:291B 徽章伪影和 753B vs 744B 口径。

💡

「未核实」和「没有」是两回事,这是本节最重要的一条写作纪律。

「GLM-5.2 的残差改造:未核实」= 我们不知道。
「GLM-5.2 用的是常规残差」= 一个我们没有证据支持的断言。

绝大部分错误的技术转述,都诞生在这两句话之间的那一步——为了让表格好看,把空格填上了。你以后写任何对比材料,宁可留一个显眼的空格。

⑤ 评测与可信度

CAISI 给 DeepSeek V4 的那一巴掌

本模块的方法论高潮。M7 教你把评测分三层,这一节给你看第三层塌掉是什么样子。

M7 教过把评测数字分三层。先快速复习:

层级含义可信度
① 第三方独立外部机构自己评测并发布最高,尤其是含非公开基准的
② 自跑但披露了偏差官方自己跑,但主动说明与标准配置的差异中,且披露密度本身是可信度指标
③ 纯自报、结构上不可复现依赖内部训练过程或内部基准最低——不是说它假,是说没人能检验

M7 的 K3 是这套分层的正面样本:报告专列一节放第三方评测,甚至主动交代自己哪些数字用了非标准配置。

这一节给你看反面样本。

案例:DeepSeek V4 的自报 vs NIST CAISI 的独立评测

V4 自己怎么说:

这个自我定位其实相当坦率——把「我们落后」写进技术报告的公司不多。

NIST CAISI 怎么说:

美国国家标准与技术研究院下属的 CAISI(Center for AI Standards and Innovation)在 2026 年 4 月对 DeepSeek V4 Pro 做了独立评测,5 月 1 日发布报告(5 月 2 日更新)。结论一句话:

V4「在 DeepSeek 自报的评测上得分,比在 CAISI 的评测上更好」。

具体到数字——CAISI 用 IRT 估计的 Elo:

模型CAISI 估计 Elo
GPT-5.5 (xhigh)1260 ± 28
Opus 4.6 (max)999 ± 27
DeepSeek V4 Pro (max)800 ± 28
GPT-5.4 mini (xhigh)749 ± 46

读一下这张表的位置关系:

按 DeepSeek 自己的数据,V4 大约相当于 Opus 4.6 / GPT-5.4(发布早约 2 个月的机型)。按 CAISI 的评测,它更像 GPT-5——发布早约 8 个月。而在这张 Elo 表上,V4 Pro 离 GPT-5.4 mini 比离 Opus 4.6 更近。

CAISI 的总结论:DeepSeek V4 落后美国前沿约 8 个月。而 V4 自评是 3–6 个月。

🔑

为什么 CAISI 的结论能压过官方自报?关键只有一句:CAISI 的评测里包含非公开基准。

公开基准的题目和答案都在互联网上。任何一个训练数据管线,都可能——哪怕完全无意地——把它们吃进去。你没法证明一个模型「没见过」某个公开基准。

非公开基准不存在这个问题。这不是「谁的评测更权威」的问题,是结构上能不能被针对性优化的问题。

以后看到任何模型的分数,先问一句:这个基准的题目公开吗?

🔍 一个反面示范:我们在这一节里主动删掉了两个数字

调研过程本身也是可以被检验的。在写这一节时,有两条关于 Artificial Analysis 的说法没有通过对抗验证:

① 「AA 的智能指数给 V4 Pro(Max Effort)打 45 分,而开放权重中位数是 26」——1-2 票被驳回;
② 「AA 明确把 DeepSeek 自报的 MMLU-Pro / LiveCodeBench 数字标注为未经验证」——0-3 票被驳回。

这两个数字看起来都挺好用,尤其第一个还能给 V4 加分。但没通过验证就是没通过,所以它们不出现在正文里。把「我查过但没敢用」的东西写出来,是可信度的一部分。你在读别人的材料时也可以反过来用这条:一份从不说「这条我没核实」的材料,通常不是因为它全核实了。

「1M 窗口」不等于「1M 有效」

这是长上下文时代最需要立刻建立的一条直觉。

架构上的 1M 是确认的:V4 与 GLM-5.2 的 config.json 里 max_position_embeddings = 1,048,576,可以直接 curl 下来核对。K3 也走完了 8K→64K→256K→1M 的四段式课程。

但第三方的长上下文评测(NIAH / MRCR 一类)报告:在满 1M 长度上,有效检索质量会掉到 100% 以下。

💡

「窗口长度」是架构参数,config.json 里写着,可独立核验;
「有效长度」是能力指标,只能测,而且随任务类型变化。

这两个数字被混着用,是 2026 年模型宣传里最普遍的一种偷换。你要做的很简单:看到「支持 1M」,接着问「在 1M 上 NIAH / MRCR 是多少」。

对比表的口径陷阱

本模块出现过的每一个亮眼数字,都带着一个限定条件。放在一起看:

数字真实口径混用会怎样
V4 27% FLOPs / 10% KV1M 上下文下、V4-Pro、对比 V3.2、整模型单 token换个基线、换个长度、只算注意力,全都不是这个数
V4-Flash 10% / 7%同上,但这是 Flash 的数字,且出现在正文不是摘要张冠李戴到 Pro 上
V4 KV ≈ 2%对比 BF16 GQA8 基线和上面那个 10% 不是一回事——基线不同
GLM 2.9×1M 上下文下、理论 FLOPs 估算、整模型说成「快了 2.9 倍」就错了
IndexCache 1.82× / 1.48×30B 的 DSA 模型、200K 上下文、prefill / decode 实测拿来给 GLM-5.2 的 1M 背书
K3 2.5× scaling 效率Moonshot 内部训练 run 拟合,第三方无法复现当成第三方结论引用
⚖️

看完这张表,回头再看任何一张「三家对比」的表格,你应该产生的第一反应是:这几列真的是在同一个条件下测的吗?

顺带记一笔:V4 的论文摘要自称 “a preview version of DeepSeek-V4 series”。 preview 版的数字随时可能在正式版里变。引用时最好带上版本与日期。

⑥ 坑与带走

十四个坑 + 该带走的

坑症状怎么办
HF 合集页显示 V4-Flash 是 291B参数量对不上徽章伪影——HF 系统统计 FP4/FP8 量化 safetensors 的已知问题。论文、模型卡正文、所有第三方推理商都是 284B
GLM-5.2 到底是 753B 还是 744B以为有一方写错了两个都对:753.33B 是 HF 从 safetensors 机械数出的张量总数,744B 是 GLM-5 报告的架构级口径,差约 9B(1.2%),可能来自 MTP 模块 / 未共享 embedding / indexer 权重
说「GLM 提出的 DSA」归属错误,找不到方法原文DSA 是 DeepSeek 的(V3.2-Exp,2025-09),MLA 也是 DeepSeek 的(V2)。GLM 自己的贡献是 IndexShare
DeepSeek 自己的文档里两套名字搜 CSA 搜不到、搜 DSA 也搜不到官方 API 文档新闻页说的是「Token-wise compression + DSA」,arXiv 论文与 HF 模型卡说的是「CSA + HCA」。两套术语在不同官方文档里都真实存在,二者是否指同一机制没有被任何确认结论解决
以为 V4 的 1M 是原生 RoPE 外推高估长上下文的可靠性config.json:65,536 基础长度 × YaRN rope scaling 16 = 1,048,576。是插值扩展出来的
以为 GLM-5 系列都支持 1M选型直接翻车只有 5.2。GLM-5 / 5.1 的 max_position_embeddings 都是 202,752
拿 GLM-5 的技术报告解释 5.2讲了半天讲的是另一个模型GLM-5 报告全文 IndexShare 出现 0 次、1M 出现 0 次。5.2 没有自己的技术报告
把 preview 版的数字当定论引用了会变的数V4 摘要自称 “a preview version”。引用带版本与日期
把「27% FLOPs」当注意力层的降幅数量级错那是整模型单 token FLOPs,大头是 MoE 前馈层。注意力单项的降幅比这更极端
把 2.9× 当实测加速性能预期错那是理论 FLOPs 估算(Raschka 独立分析明确指出这一点)。IndexCache 论文的实测是另一组数(30B / 200K:1.82× prefill、1.48× decode)
信 NVIDIA NIM 文档把 DSA 解释成 “Dense-Sparse-Alternating”概念完全跑偏那是该文档页的错误。GLM-5.2 自己 README 引用的论文(arXiv:2603.12201)明确定义 DSA = DeepSeek Sparse Attention
把「窗口 1M」当「有效 1M」生产环境上翻车窗口是 config.json 里的架构参数;有效长度要看 NIAH / MRCR 的衰减曲线
只比架构不比可信度高估自报强的那一家CAISI 案例:V4 自评落后 3–6 个月,独立评测说 8 个月
把 Kimi Linear 的 48B 当 K3差约 58 倍(M7 讲过)那是方法论源头(arXiv:2510.26692),不是 K3 的 2.8T

这一模块你应该带走的

🔭

概念索引(本模块登场): CSA · HCA · 压缩注意力 · 两路错位重叠窗口 · Lightning Indexer · index score · top-k 稀疏选择 · 共享 KV 的 MQA · 分组输出投影 · 未压缩滑动窗口分支 · 部分 RoPE · 输出侧 −i RoPE · attention sink · QKV RMSNorm · mHC · Hyper-Connections · 双随机矩阵 / Birkhoff 多面体 · Sinkhorn–Knopp 迭代 · 混合 Newton–Schulz · Hash 路由 MoE · Sqrt(Softplus) 亲和度 · DSA · IndexShare · 跨层索引复用 · KVShare · YaRN rope scaling · NIAH / MRCR · IRT 估计 Elo · 非公开基准 · 张量口径 vs 架构口径 · 量化徽章伪影 · on-policy 蒸馏 / reverse KL · FP4 量化感知训练

本模块的任务单

步骤你的动作说明
1. 精读 V4 §2.3CSA / HCA / 三个小设计配着上面两个公式解剖读
2. 核对一次 config.json去 HF 上把 V4-Pro 和 GLM-5.2 的 max_position_embeddings、rope_scaling 拉下来这是你唯一能独立核验的部分——训练侧全是厂商自述
3. 自己填一遍空格把 s4 那张表默写一遍,标出你敢确定的和不敢的重点不是记住答案,是养成标「未核实」的手感
4. 追一条引用链DSA:GLM-5.2 → DeepSeek-V3.2-Exp → MLA (DeepSeek-V2)三家的稀疏注意力全都汇到 DeepSeek 这一条线上
5. 记问答把读不懂的地方问我记录到 05-问答记录/M8-前沿三强-问答.md
💬

有不明白的? 随时在对话里问我,我会记录到 05-问答记录/M8-前沿三强-问答.md。

🎓

你真正带走的能力: 下一份前沿报告发布时,你能翻到架构那一章,用三句话定位它:它是「不存 / 存少 / 全存但少读」里的哪一条?它的兜底机制是什么?它的收益是在哪个序列长度上测的? 然后翻到评测那一章,把数字分成三层,找出那些没有第三方背书的格子。这比记住 CSA 的任何一条公式都值钱。

深入这一模块

一手来源优先,且三家的可得性不一样

V4 有完整报告,K3 有完整报告,GLM-5.2 没有——查资料时这个差别决定了你能走多深。

🎮 想更直观 20–40 分钟

先建立三条路的整体印象
中文一手核验 案例库/从0训练LLM-现代大模型体系/00-调研/
① DeepSeek-V4-技术报告原文解析.md(逐页精读的公式与机制)· ② DeepSeek-V4-深度调研对抗验证.md(发布事实 / 许可证 / NIST CAISI)· ③ GLM-5.2-深度调研对抗验证.md(753B/744B 口径、IndexShare、1M 是 5.2 独有)· ④ Kimi-K3-技术报告原文解析.md。
这一节页面上的每一个数字都能在这四份档案里找到出处。②③ 是 3 票对抗验证产出的,里面连「被驳回的说法」都记着——看一份调研里被驳回了什么,比看它确认了什么更能判断它可不可信。
5 min英文需联网 MIT 许可证
模型卡(CSA + HCA 的官方措辞)· config.json:max_position_embeddings=1,048,576 · rope_scaling 的 YaRN factor 16 / original 65,536 · 61 层 · hidden 7168 · 384 路由专家 + 1 共享 · top-6。仓库里还有官方开源的 /inference 推理实现。
config.json 是最诚实的架构文档,而且你可以自己 curl。「1M 是 YaRN ×16 插值来的」这个结论就是这么核出来的——模型卡上只会写「支持 1M」。
GLM-5.2 权重仓库与官方博客 5.2 唯一的一手材料
10 min英文需联网 MIT · 约 2026-06-17
模型卡 + 官方 HF 博客里 IndexShare 的描述(每 4 层共享一个 indexer、2.9× @1M)· config.json:max_position_embeddings=1,048,576 · 78 层 + 1 MTP 层 · 256 路由 + 1 共享 · top-8。
因为 GLM-5.2 没有技术报告,这里就是天花板。顺便做一个对照实验:把 GLM-5.1 的 config.json 也拉下来,你会看到 202,752——版本边界一眼可见。
5 min英文需联网 自定义许可证
M7 已详讲。这里只用来核对三家并排时 K3 那一列:93 层 = 69 KDA + 24 MLA、896 专家 top-16、许可证是自定义的 kimi-k3 而非 MIT。
三家里唯一一家不是 MIT 的。做商用选型时这一条比架构重要。

🔬 想吃透原理 3–5 小时

就读原文,配合上面的两个实验
约 55 页英文 arXiv:2606.19348 · preview version
§2.1 MoE 改动 · §2.2 mHC · §2.3.1 CSA(Eq.9–19) · §2.3.2 HCA · §2.3.3 滑窗 / 部分 RoPE / attention sink / QKV RMSNorm · §2.3.4 精度策略 · §2.4 Muon(Algorithm 1 完整给出)· §4 预训练(Flash 32T / Pro 33T token)· §5 后训练。
建议读法:先 §2.3.1 配着上面那两个公式解剖读,再 §2.3.3——那一小节里三个「顺手换掉一个已知组件」的设计,信息密度最高。§2.2 的 mHC 需要一点矩阵流形背景,第一遍可以只看结论(双随机 → 谱范数 ≤1 → 非扩张 → 深堆稳定)。
⚠️ 注意摘要自称 preview version,数字可能在正式版变。
GLM-5 技术报告 · 本地 PDF 读之前先看清楚它讲的是 5 不是 5.2
40 页英文 arXiv:2602.15763 · 2026-02
GLM-5(不是 5.2)的完整报告:744B / 40B 激活 · 256 专家 · 80 层 · 202,752 上下文 · 采用 DSA 的动机与 MLA→DSA 的持续预训练对照实验(含 SFT loss 曲线对比)· 异步 RL 基础设施与异步 agent RL 算法。
这份报告的价值恰恰在于它「不包含」什么。全文检索 IndexShare = 0 次、million-token = 0 次。它讲的是 202K 那一代。
但它对本模块仍然必读的部分是 DSA 那一节:它用 MLA 与 DSA 两个基座模型做了长上下文基准和 SFT loss 的直接对照,还给了「DSA 把注意力计算降约 1.5–2×」这个自报数——这是理解 GLM 为什么选这条路的唯一一手材料。
47 页英文 arXiv:2607.24653
M7 的主材料。本模块只需回看 §2.1(KDA)与 Table 1(69 KDA + 24 MLA)。
做三家并排时,K3 那一列的每个数字都从这里来。

📄 想追引用链 按需

三家的稀疏注意力最后都汇到同一条线上
引用链
GLM-5 论文用的动词是 adopts;transformers 里 GLM 的 indexer 类注释写着「Same as DeepseekV32Indexer.forward」;V3.2-Exp 的 DSA 又建在 DeepSeek-V2 的 MLA 上(M6 学过,本地 PDF 就在这里)。
追完这条链你会发现:三家里有两家的稀疏注意力源头是同一个团队。这解释了为什么 V4 和 GLM-5.2 的机制看起来那么像——它们本来就是同一棵树上的两根枝。
2026-03英文需联网 清华 + Z.ai
《IndexCache: Accelerating Sparse Attention via Cross-Layer Index Reuse》——GLM-5.2 的 README 就是引它来解释 IndexShare 的。里面报的是 30B DSA 模型、200K 上下文下 1.82× prefill / 1.48× decode 的实测加速。
这是本模块口径课的活教材:同一个机制,官方博客给 2.9×(1M、理论 FLOPs、整模型),方法论原文给 1.82×/1.48×(200K、30B、实测)。两个都是真的,两个都不能替对方说话。
独立分析需联网
非厂商的独立架构分析。本模块用到它两处:① CSA 约每 4 个 token 压 1 条、HCA 约每 128 个;② 确认 IndexShare 的排布是 full/shared/shared/shared,并明确指出 2.9× 是架构层 FLOPs 估算而非实测。
用法要小心:这是二手来源。① 那组压缩率没有和论文公式对上(调研档案明确标注了),实验 A 里用它只作示意值;② 那条 caveat 反而是本模块最有用的一句独立佐证。同一个来源,不同条目的可信度可以完全不同——按条判断,别按来源判断。
2026-05英文需联网 含非公开基准
2026 年 4 月评测、5 月 1 日发布(5 月 2 日更新)。IRT 估计 Elo 表(V4 Pro max 800±28 · GPT-5.5 xhigh 1260±28 · Opus 4.6 max 999±27 · GPT-5.4 mini xhigh 749±46),结论是落后美国前沿约 8 个月。
这一节的方法论高潮。读它不是为了记住 800 这个数,是为了理解「含非公开基准的独立评测」这件事的结构性价值——它能测出一个官方自报永远测不出的东西。
🚫

我替你排除了什么:

  • 所有「DeepSeek V4 / GLM-5.2 深度解读」类二次转述——三个模型都在几周内发布,解读文章的信噪比极低,且已经确认多篇在参数量(291B)和归属(把 DSA 说成 GLM 的)上抄错。
  • NVIDIA NIM 的 GLM-5.2 文档页(作为术语来源)——它把 DSA 解释成 “Dense-Sparse-Alternating”,与所有一手来源冲突。作为 API 参考可以用,作为概念解释不要用。
  • HuggingFace 合集页的参数徽章——V4-Flash 那个 291B 是量化统计伪影。
  • Artificial Analysis 的两条具体分数说法——在对抗验证里被 1-2 / 0-3 票驳回(详见正文的深挖框)。
  • 把 Kimi Linear 48B 当 K3 的资料(M7 已排除,这里继续沿用)。
  • 一切用 GLM-5 报告解释 GLM-5.2 的 1M 上下文与 IndexShare 的材料——那份报告里这两样东西根本不存在。
这个模块的原则和 M7 一样严,而且多一条:三家的材料可得性不对等,不要用材料多的那家的详细程度,去反推材料少的那家。
← M7 前沿解剖:读懂 Kimi K3 技术报告 已是最后一个模块