架构拆解:配置文件里的答案

权重公开后补写的一章——92 层、3:1 的 Gated DeltaNet 与门控注意力混排、512 个专家选 10 加 1 个共享专家。逐项读 config.json,用算术核对 2.4T 与 95B,并对照上一章的推断:哪些对了、哪些错了。

作者 David更新于 第 4 篇(共 11 篇)

架构拆解:配置文件里的答案

本章写于 2026 年 9 月,是专栏的补写。 官方权重 8 月 9 日上传、8 月 12 日在 Hugging Face 公开(仓库 Qwen/Qwen3.8-2.4T-A95B),附带模型卡与 config.json;9 月 19 日又按仓库的修改记录与官方博客做了补充。上一章《MoE 与混合注意力》写于权重发布之前,本章保留它的原貌,并在末尾逐条对照。

先说清楚这份权重是什么

模型卡开门见山地交代了三件事:

  • 这是后训练之后的模型,Transformers 格式,vLLM、SGLang、TokenSpeed 等推理框架可以直接加载;
  • 它只支持文本、必须开启思考,不接受多模态输入;
  • API 上的 Qwen3.8-Max 是基于它的官方版本,多了视觉输入、非思考模式、默认 1M 上下文和官方内置工具。

所以严格地说,开放的是 Qwen3.8-Max 的文本主干,不是 API 产品的全部。9 月 2 日之后还要再加一句:API 换成了继续后训练的 0902 快照,这份权重对应的是 8 月的原版。开源那一章会回到这一点。

公开前的三处修改

Hugging Face 的提交记录还留下了一个细节:权重 8 月 9 日上传后、12 日公开前,仓库改过三处配套文件,权重文件本身没有重传。

日期改动
8 月 10 日对话模板删掉了图像、视频占位符的处理,并改成“关闭思考就直接报错”——首日上传的模板原本支持看图,也支持非思考模式
8 月 11 日补上模型卡
8 月 12 日config.json 删掉 mrope_interleaved 与 mrope_section 两个字段(多模态旋转位置编码的设置,同系列能看图的 27B 与 Flash-Next 的配置里都有);随后补上许可

改完之后,配套文件与模型卡的说法一致了:开放权重只收文本、必须思考。至于首日的文件为什么带着多模态和非思考的设置,官方没有解释;一个自然的猜测是它们沿用了 API 版的配置,但这只是猜测。

总体布局

项目数值来源
架构类Qwen3_5MoeForCausalLM(model_type: qwen3_5_moe_text)config
层数92config / 模型卡
隐藏维度8192config
词表248,320(含填充),输入与输出不共享权重config
层排布23 ×(3 × Gated DeltaNet → 1 × 门控注意力),每层之后接 MoE模型卡 / layer_types
原生上下文262,144,可外推到 1,010,000模型卡
权重精度与总量BF16,共 2,446,182,725,504 个参数Hugging Face 元数据

model_type 里的 qwen3_5 印证了模型卡里的那句话:它建立在 Qwen3.5 的架构基础之上。第一章记录过这条第三方说法,当时“未见官方确认”,现在确认了。

混合注意力:线性与全注意力 3:1

config.json 的 layer_types 是一个 92 项的列表,规律一眼可见:三个 linear_attention 接一个 full_attention,重复 23 次(full_attention_interval: 4)。也就是 69 层线性注意力、23 层全注意力。

线性注意力层用的是 Gated DeltaNet:

参数数值
值头数128
键 / 查询头数16
头维度128(键、值相同)
短卷积核4
递推状态精度FP32(mamba_ssm_dtype)

全注意力层是带输出门的标准注意力:

参数数值
查询头 / 键值头64 / 4(GQA,16 个查询头共用一组键值)
头维度256
旋转位置编码只作用于 64 维(partial_rotary_factor: 0.25),rope_theta 为 1000 万
输出门开启(attn_output_gate: true,swish 门)

Gated DeltaNet 加门控注意力、3:1 混排、部分维度旋转位置编码——这和 Qwen3-Next 公开过的设计是同一路数。这一点现在有官方的说法:8 月底的 Flash-Next 博客写道,Qwen3-Next 引入的这套混合结构,此后用在了 Qwen3.5、3.6、3.7 与 3.8 系列上。用意很直接:让大部分层的“记忆”不随上下文变长而增长。

算一笔账就明白。KV 缓存只在 23 层全注意力里随长度增长,每个 token 占:

23×4×256×2×2 B=94,208 B≈92 KiB23 \times 4 \times 256 \times 2 \times 2\ \text{B} = 94{,}208\ \text{B} \approx 92\ \text{KiB}

(23 层 × 4 个键值头 × 256 维 × 键和值两份 × BF16 两字节。)

上下文全注意力层的 KV 缓存假如 92 层全是全注意力
262,144(原生)约 23 GiB约 92 GiB
1,010,000(外推上限)约 89 GiB约 354 GiB

线性注意力层维持的是固定大小的递推状态。按 Gated DeltaNet 的标准形状估算,每层每条序列是 128 个值头 × 128 × 128 个 FP32 数,约 8 MiB,69 层合计约 0.54 GiB——不管上下文是一千还是一百万个 token,都是这么大。

这就是“混合”的全部意义:四分之三的层把长上下文的代价压成常数,剩下四分之一保留精确回看的能力。 纯线性注意力在“从很远的地方精确取回一个细节”这类任务上吃亏,全注意力层就是为此保留的。

MoE:512 个小专家

参数数值
路由专家数512
每 token 激活10 个路由专家 + 1 个共享专家
专家中间维度2048(只有隐藏维度的四分之一)
共享专家中间维度2048
负载均衡辅助损失系数0.001
MTP(多 token 预测)1 个额外的 MTP 层;模型卡称训练时预测了多步

两点值得注意。

一、专家很“细”。 每个专家的中间维度只有 2048,是隐藏维度的四分之一。512 个小专家里挑 10 个,走的是细粒度路线。

二、共享专家回来了。 Qwen3 那一代曾主动去掉共享专家,理由是收益不明显;到了 3.8,每层又带上了一个。技术报告没有发布,这个取舍背后的实验我们看不到——只能记录“它回来了”这个事实。

用算术核对 2.4T 与 95B

有了配置,就能验算官方的两个数字。按 SwiGLU 专家(gate、up、down 三个矩阵)计算:

  • 每个专家:3 × 8192 × 2048 ≈ 5033 万参数;
  • 主干 92 层的路由专家:512 × 5033 万 × 92 ≈ 2.371T;
  • MTP 层自带一套 512 个专家:约 258 亿;
  • 剩下约 496 亿:注意力(线性与全注意力)、共享专家、输入输出词表、路由器等。

三项加起来,正好是 Hugging Face 记录的 2,446,182,725,504。主干的路由专家就占了总参数的 97%,连同 MTP 层的专家约 98%。

激活参数这边:每个 token 经过 10 + 1 个专家,92 层合计约 509 亿;注意力层每个 token 都要走,按配置推算约 400 亿;再加输出层与路由器,约 933 亿。若按惯例把输入词表也计入,约 954 亿——与官方的 95B 对上了。

这组数字揭示了一件官方材料没提的事:95B 激活参数里,专家只占一半多一点,另外四成左右在注意力层。 原因是它的注意力很“宽”:线性注意力 128 个值头 × 128 维、全注意力 64 个查询头 × 256 维,内部宽度都是 16,384,是隐藏维度的两倍。

注意力部分的拆分依赖对投影矩阵形状的推算,本章把它标为估算;不过它与 Hugging Face 记录的总参数量能对上,可信度不低。

回头看上一章:推断对了多少

上一章在只有“2.4T、95B、稀疏 MoE、混合注意力”四条信息时,分层做了推断。现在可以逐条对答案:

上一章的判断层次结果
激活率约 4.0%算术推论对(95 / 2446 ≈ 3.9%)
在同代同规模里,稀疏度偏保守横向定位对,比 K3 的 1.8% 高一倍多
所以专家可能更少或更大机制推断错:512 个中间维度仅 2048 的小专家,是细粒度设计
“混合注意力”几乎是 1M 上下文的必然选择横向定位对
混的是哪两种:拒绝猜,只注明 Qwen3-Next 的门控线性注意力是个弱先验不做具体猜测答案正是线性 + 全注意力。但当时不猜是对的——先验很弱,碰巧说中不算方法

错的那一条,恰好落在上一章方法论表里标为“低可信度”的那一层。 “稀疏度偏保守”本来有两种实现方式:专家少而大,或者专家细而多、每次激活得也多。上一章只想到了前一种。

这正是分层推断的价值:它不保证不犯错,而是让错误落在事先标明“不可靠”的地方。

仍然空白的部分

配置文件能回答“长什么样”,回答不了“怎么练的”。截至 9 月 19 日,下面几项仍然没有一手来源:

项目状态
技术报告 / 论文Max 本身仍无(模型卡只引了发布博客);同系列 Flash-Next 的技术报告只讲 Flash-Next
预训练 token 数、数据构成未公开
训练精度、优化器、学习率策略未公开
MTP 训练时预测几步只说“多步”,没有具体数字
后训练与强化学习细节博客只讲了三件事:组合式扩展环境、统一奖励、在线数据均衡,外加一张环境数与分数的曲线(见 RL 那一章)
0902 快照只说“继续后训练”,没有说明改了什么,也没有开放权重

下一代的方向倒是已经公布了:官方称 Flash-Next 是 Qwen4 模型结构的先导预览,全注意力层换成块级稀疏的 QSA,残差流加宽并加门控,外加 N-gram 嵌入——详见同系列那一章。

下一章讲思考档位。👉 思考档位与思考模式

参考文献

本页目录