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

Qwen3.8 到底改了什么?

Qwen3.8:版本号变了,架构变了吗
Qwen3.8 一代发了三个型号:27B 的 config 与 Qwen3.5、3.6 逐字段相同,2.4T 是同一架构放大,只有 Flash-Next 真的换了架构——QSA 稀疏注意力、4 条流的 Gated Residual、51.2B 的 n-gram 查表、Muon。它的技术报告给每个改动都配了消融,是这一代最好的「为什么这样设计」的材料;其中最值得记住的是两条「预训练看不出、后训练才暴露」的反例。
❓

本课一问:Qwen3.8 比 Qwen3.5 强,它的架构到底改了什么?每一处改动,证据在哪?

这一课先不碰:Gated DeltaNet 这类线性注意力本身怎么算(C11)、DSA 的索引器打分(C11 第 5 课;QSA 的选块见本课下文)、Qwen3.8 的后训练(官方没有公开)。这一课只做一件事:用前面各章学过的工具,把 Qwen3.8 一代的三个型号拆开。

从已有出发

「小明把苹果给了小王」这句话,用 Qwen3.8 的真 tokenizer 切成 5 个 token(C1)。C1 到 C9 一路用的锚点模型就是 Qwen3.8-27B:这 5 个 token 进入 64 层,其中 16 层全注意力各留下 KV,每个 token 65,536 B(64 KiB),5 个 token 一共 327,680 B;另外 48 层线性注意力不存 KV,只维护一个与长度无关的状态,37,748,736 个元素(C11 揭晓)。

从已有出发 · 累计数据流 点已学环节看形状与参数
解码层

上面高亮的四个环节,正是 Qwen3.8 这一代有型号动过的地方。这一章的实验对象换了:模型本身跑不动,我们拿它们的官方 config 和技术报告当实验台——config 能逐字段核验,报告里的数字要分清是谁测的、在什么规模上测的。例句仍然用这一句,只是从这一课起,它要被送进好几个不同的模型。

演进图 · 本课在哪一段 QwenGLMDeepSeekKimi
Qwen 2025-04 Qwen3
引入GQA、SwiGLU、RoPE(θ = 1,000,000)、RMSNorm,加 QK-Norm 并去掉 QKV bias;36T token、原生 32,768 上下文。这正是 C1–C9 一路搭起来的那套配方。
借来GQA(Google 2023)、SwiGLU(Shazeer 2020)、RoPE(苏剑林 2021)、QK-Norm(Henry 2020)——没有一项是 Qwen 首创。
卡在每一层都是全注意力:Qwen3-32B 每 token 的 KV 是 256 KiB(64 层 × 2 × 8 头 × 128 × 2 B),1M 上下文时一条序列 256 GiB。
Qwen 2025-09 Qwen3-Next 80B-A3B
引入每 4 层里 3 层 Gated DeltaNet(线性注意力,固定状态)+ 1 层带输出门的全注意力;512 个专家选 10 + 1 个共享;zero-centered RMSNorm;MTP;RoPE θ 升到 107、只转 25% 的维度。Gated Attention(SDPA 输出后乘 sigmoid 门)是 Qwen 自己的研究(arXiv 2505.06708)。
借来Gated DeltaNet 出自 NVIDIA / MIT(arXiv 2412.06464);混合的思路更早见于 Jamba、MiniMax-01;细粒度 MoE 出自 DeepSeekMoE;MTP 出自 Gloeckle 2024。
卡在全局层仍是全注意力、KV 仍随长度线性长:同一架构的 Qwen3.8-27B 每 token 64 KiB,1M 时 64 GiB,只是 Qwen3-32B 的 1/4。
Qwen 2026-02 Qwen3.5
引入把 Next 架构推广到 0.8B–397B 全系;原生多模态(早期融合);新词表 248,320;交错式 M-RoPE。
借来M-RoPE 是 Qwen2-VL 起的自家做法;其余沿用 Qwen3-Next。
卡在之后的 3.6、3.8 两代,27B 的 config 与 3.5 逐字段相同——架构在这里停住了三代。
Qwen 2026-08 Qwen3.8 三个型号 本章讲它的那一课 →
引入27B:config 与 3.5 逐字段相同,提升全来自训练。2.4T-A95B:同一架构放大(92 层、hidden 8,192、23 层全注意力),每 token 92 KiB。Flash-Next(qwen4_exp)才是新架构:QSA 稀疏注意力、4 条流的 Gated Residual、51.2B 的 n-gram 查表、Muon,每 token 24,576 + 768 B(KV + 压缩索引 key)。
借来QSA 的「压缩索引 key 再选块」在 NSA(2025-02)与 DeepSeek-V4 的 CSA(2026-04)里已有;Gated Residual 属于 HC / mHC 家族;n-gram 查表与 DeepSeek 的 Engram 同源。
卡在27B 与 2.4T 的训练配方、Flash-Next 的后训练都没有公开;Flash-Next 的消融只在 25B-A3B / 35B-A3B 规模上做过(官方自报)。

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

数字口径: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。

先自己设计:看版本号判断改了什么

读一份新发布,最省事的判断是「版本号涨了,架构就变了」。先拿 Qwen3.8 的主力型号试一下:

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案按版本号判断:Qwen3.8 = 新架构
型号发布config 里的 model_type与上一代的 config 差异
Qwen3.5-27B2026-02qwen3_5—
Qwen3.6-27B2026-04qwen3_50 个字段不同
Qwen3.8-27B2026-08qwen3_50 个字段不同(参数 27,781,427,952)

「版本号 = 架构」在 2026 年失败得很彻底:同一个月,GLM-5.3 的 config 也和 5.2 逐字段相同(第 2 课)。所以读新模型的第一步永远是 diff config——它是开放权重里唯一能独立核验的部分 。

改进:把 27B 和 Flash-Next 逐行对一遍

diff 出来的每一行,先分三类:机制变了、只是数值变了、没变;再问一句「这个机制对领域也是新的吗」。先自己判断,再揭晓:

新旧分离:Qwen3.8-27B → Qwen3.8-Flash-Next

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

两列都由官方 config 读取:27B 来自 anchor-model.json,Flash-Next 来自 frontier-models.json;优化器、batch 两行来自 Flash-Next 技术报告(R2 §1.5.2,官方自报)。

🎯

试三件事:① 先只做第一级,不看提示把 15 行都判一遍,再点揭晓——「FFN 从 dense 变成 MoE」对 27B 是机制变化,对 Qwen 家族却不是新东西,这正是第二级要问的;② 揭晓第二级,数一数「对领域首创」有几行(答案是 0 行,3 行算一半):Flash-Next 的每一个部件都有前人或同行的影子,Qwen 的贡献在组合、具体变体和消融;③ 点「注意力层构成」一行,看出处里写的引用缺口——Qwen 报告没有引用思路更早的 NSA 与 DeepSeek-V4 的 CSA,这不代表它自称首创,只是读报告时要自己补上。

每个改动的证据:Flash-Next 技术报告

Flash-Next 的技术报告(标题是 On the Design of Qwen3.8-Next Architecture)是这一代唯一一份逐个部件给出消融的一手报告。它自己定下的规矩值得先记住:每个改动都从三个维度评估——loss 与下游基准、训练 / prefill / decode 三段的成本、对最优超参与稳定性的影响;报告反复强调 loss 和下游基准会不一致。下面每一条都是官方自报,规模写在「设置」里:

Qwen3.8-Flash-Next 技术报告里的数字
🎯

试三件事:① 按「③ 纯自报」筛选——这一份报告里的数字全部是这一层,不是因为它不可信,而是还没有人独立复现过;② 打开「4 倍学习率压力测试」,读红框:183 → 0 同时换了两样东西,哪一组才是单变量对照?③ 打开「QSA 怎么接进一个已经训好的模型」,核对页面上的两个 token 数是怎么由步数、每步条数和 256K 算出来的。

下面把最重要的四组改动,各自放回它回扣的那一章看。

注意力:从全注意力到 QSA(回扣 C3 的 KV 账、C11 的稀疏注意力)

「为什么混合」有消融撑腰:全注意力 49.87、SWA 混合 51.15、GDN 混合 53.81(25B-A3B,官方自报) 。Flash-Next 在此之上把每 4 层里那 1 层全注意力换成 QSA:先把索引 key 每 4 个 token 平均池化成一块,用一个很小的索引器(4 个 query 头、1 个 key 头、128 维)给块打分,每个 query 只读分数最高的 512 块,即 2,048 个 token。在原生长度 262,144 上走一遍形状:

QSA 的选块:一个新 token 在一个 QSA 层里做的事(Flash-Next config 的真实维度;可切小规模)
s = Σh qidx,h · pool4(Kidx)T, idx = top512(s), o = softmax(q·KselT)·Vsel
输入输出中间结果 渐变 = 分数(连续值)编号槽 = 索引
边长按对数比例缩放,块边上的数字是真实值;同一维度符号的边在全图等长。
维度含义 真实规模 小规模
T 上下文长度(原生最大值) 262,144 16
B 块数 = T ÷ indexer_compress_ratio 65,536 4
dI 索引维度 indexer_head_dim 128 4
HI 索引 query 头数 indexer_n_heads 4 2
kB 选中的块数 = indexer_budget ÷ 4 512 2
kT 选中的 token 数 indexer_budget 2048 8
Hkv QSA 层的 KV 头数 2 1
dh 主注意力每头维度 256 4
分数(渐变块)是连续值,idx(编号槽)是离散索引,gather 之后才回到取值——选择链闭合。索引器每个新 token 仍要给全部 T ÷ 4 块打分,这是 QSA 省不掉的那部分;主注意力读取则被 2,048 个 token 封顶。

存储上,Flash-Next 与 27B 在两刀上下手:条目(GQA 更激进,24 个 Q 头共用 2 组 KV)与层(12 / 48 层全局)。最后加回压缩后的索引 key:

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 24,576 + 768 B,对照 27B 的 65,536 B 与 2.4T 的 94,208 B(点上面的模型按钮切换)。QSA 换来的是计算:报告自报 1M 长度下内核级 prefill 快 7.6 倍、decode 快 4.9 倍,MRCR@1M 从 20.71 升到 26.44 。

残差:从一条流到四条流(回扣 C4 第 2 课、C8)

C4 第 2 课与 C8 第 2 课留了一个问题:残差流把所有层的写入挤在一个向量里,越往后,一层的写入占比越小。Flash-Next 的答案是把残差流加宽成 4 条,但和 DeepSeek 的 mHC(第 3 课)不同,它去掉了 n × n 的残差混合矩阵:

Gated Residual:Qwen3.8-Flash-Next 的加宽残差

报告自己的归纳是「读侧的粒度比写侧重要」。这一组数字的差距不大(GR 比动态 mHC 只高 0.19 分),单次训练、没有方差,所以只能算实验层的弱证据 。

查表:n-gram embedding(回扣 C1 的 embedding、C4 的参数账本)

Flash-Next 的参数账(HF 计数 = 主干 + n-gram 表 + MTP)
= +
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
为什么放第 2 层:表太大(51B)放不进显存,放在主机内存里按确定的地址预取,和第 1 层的计算重叠(报告原话的意思)。同月 DeepSeek-V4.1 的 Engram(第 3 课)是同一个方向,两家都称之为 MoE 之外的「第二条稀疏轴」。

报告里关于 n-gram 最值得记的一句是反直觉的:单独扩大 n-gram 表时 loss 一直下降,下游基准却饱和。只看 loss 会高估它。

训练配方(回扣 C5、C6)

两条「后训练才暴露」的反例

🔎

① 全局层去掉 RoPE。预训练阶段看不出差别,后训练之后「停不下来、无限生成」的比例明显升高,所以 Qwen 保留了 RoPE。K3 与 GLM-5.3-Flash 却选了 NoPE(第 2、4 课)——两条路线都做到了百万级上下文。

② 只读门控值最高的 2 条残差流。为了省推理成本做的简化:预训练指标几乎不变,后训练之后质量明显变差,没有采用。

两条合起来是一句话:预训练 loss 相同,不等于两个设计一样好。很多设计差别要到后训练、甚至上线之后才显形——这是「小实验能预测大决策吗」(C14)最具体的反例。报告只给了定性描述 。

⚠ 常见误解

⚠

「Qwen3.8 是全新架构。」27B 与 2.4T 沿用 Qwen3.5 的架构(config 的 model_type 都是 qwen3_5 系),只有 Flash-Next 是新架构,而且官方称它是 Qwen4 的实验预览。

⚠

「Gated DeltaNet 是 Qwen 发明的。」它出自 NVIDIA 与 MIT 的论文(arXiv 2412.06464,2024-12);Qwen 的贡献是先在 Qwen3-Next 把它和全注意力按 3 : 1 做成量产架构。Gated Attention(注意力输出后乘 sigmoid 门)才是 Qwen 首创(arXiv 2505.06708)。

⚠

「4 倍学习率下 0 次尖峰,说明 Muon 更稳。」那一组对比同时换了优化器和残差结构。单变量的只有 GatedNorm 那一组(32.0 → 3.2)。引用时要把两个变量一起说出来(C5 第 7 课已经用它当过反面例子)。

⚠

「消融赢了,放大之后也会赢。」这份报告的消融都在 25B-A3B、35B-A3B 这类规模上做;Flash-Next 本身是 125B-A6B。报告在更小规模上选、在目标规模上训,中间的外推没有证明。

在演进图上的位置

Qwen 这条线的节奏很清楚:Qwen3 是 C1–C9 教的那套配方;Qwen3-Next 引入 3 : 1 混合与自家的 Gated Attention;3.5 把它推广到全系,之后三代 27B 的 config 没有再动;新架构的实验放在 Flash-Next 上单独做。上面的泳道图里,点「Qwen3.8 三个型号」一格看它借了谁。

证据三问

问本课的回答
① 它解决什么问题?27B / 2.4T:在不改架构的前提下靠训练变强、靠放大扩容量;Flash-Next:在同样的 3 : 1 混合骨架上,把全局层的计算压下来(QSA)、把残差流加宽(GR)、加一条查表的稀疏轴(n-gram),并换成 Muon 与新超参
② 数学上为什么可能有效?稀疏选块把每个 query 的主注意力读取封顶在 2,048 个 token(计数) ;n-gram 查表不增加矩阵乘(结构性质) ;加宽残差缓解「单一向量」瓶颈只是理论动机
③ 实验上为什么最后选了它?报告的消融:混合 53.81 > 全注意力 49.87;GR 54.66 ≥ mHC 54.47;QSA 长短上下文都不掉、1M 时更快

一句话

📌

版本号不等于架构:先 diff config,再给每个改动找消融。

🚦

先停在这里:记住「27B 与 2.4T 只改训练与规模,新架构都在 Flash-Next」和「预训练看不出、后训练才暴露」这两条反例。
再深一层:读 Flash-Next 报告的注意力与残差两节,把 ReportClaims 里每一条的「设置」和原文对上。

下一个缺口

Qwen 的新架构每一处都有消融撑腰。可同一个月,另一家的新版本连 config 都没动,官方却说它在编码和网络安全上大幅变强——如果一个新版本连 config 都没动,提升从哪来? → 第 2 课:GLM-5.3

你可能会问

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