Qwen3.8-Flash-Next 架构笔记 · 00 / OVERVIEW
从一个例子,读懂 Qwen 的七个模块
先认识模型每一步在做什么,再沿着问题看技术如何演进。第一次阅读可以不看公式。
如果架构图上的名字都换了,先别急着逐个背缩写。我们从“模型读到一句话后,怎样继续写下去”开始,把七个模块放回它们各自负责的位置。
- 01给文字一个表示Embedding
把 token 变成向量 - 02结合前文,反复加工Attention + FFN
读上下文,再做变换 - 03预测下一个 tokenLM Head
给候选打分
阅读前提:已经理解 Transformer 与 LLaMA
这组笔记默认你熟悉 causal attention、KV cache、RoPE、RMSNorm、SwiGLU、残差连接、next-token loss 和 AdamW。正文聚焦相对熟悉基线的改动,不从 token 和向量的定义重新讲起。
每章先给出 基线 → 改动 对照,再跟踪新增计算的输入、参数、运算与输出。涉及哈希、门控、路由等新机制时,用具体数字或张量形状拆开;基础回顾放入折叠区。
按变化来选择章节
- Embedding:额外 N-gram 表如何从有顺序的 ID 计算地址、读取参数,再融合进主干。
- Attention:GDN 如何改用矩阵状态,QSA 如何选择历史位置,两种层如何配合。
- FFN / MoE:保留专家内的 SwiGLU,改变专家参数的选择与输出组合。
- Norm:RMSNorm 沿用,重点看 zero-centered 参数化、权重衰减及归一化范围。
- Residual:从单流加法变成四分支的门控读取与写回。
- Output / MTP:新增预测目标如何服务投机解码,QSA 选择结果如何复用。
- Optimizer:Muon 怎样变换矩阵更新,为什么不同参数仍使用不同优化器。
“相对 LLaMA 不同”和“Qwen3.8 首次提出”是两回事。每章保留历史脉络,区分沿用组件、已有技术的组合与本次修改。
为什么不直接把模型做得更大?
因为要付的成本不止一种。参数更多,存储更大;文章更长,访问历史更贵;层数更多,训练与信息传递也更难;生成每次只能推进一点,又会带来等待。
所以技术演进经常是围绕某个具体问题找办法:让容量增加时少增加计算,让读长文时少搬一些数据,让新结果更容易进入旧表示。理解“它想省哪一笔、又多花了哪一笔”,比只记“这代换了什么组件”更有用。
比喻能帮我们入门,但不替代实际结构
本组图解会用词典、笔记、专家和草稿解释机制。它们在模型里对应向量、矩阵与计算模块,不是真实的书、人或文字记录。图中凡是简化了数量、分词或运算,都会在图注说明。
正文里的“怎么一步步走到这里”保留发展主线。想继续查论文、看公式和配置,可以展开页末的进阶部分;原有参考文献编号与章节链接仍可使用。
怎么一步步走到这里?
读到这里,先记住:每读一个新增模块,先回答:它接收什么、做了什么、把结果交给谁?然后再问,为什么原来的办法不够用了。
继续深入:论文脉络、公式与实现细节点此展开原有详细笔记;第一次阅读可以先跳过。
近期 Qwen3.8-Flash-Next 发布,大致看了一眼模型架构,感觉和自己刚入门 AI 时学习的 LLM 架构有很大的差异,所以希望借着学习 Qwen3.8-Flash-Next 的机会,重新梳理一遍现代 LLM 的架构。[1][2]
本笔记以笔者较为熟悉的 LLaMA-style decoder-only Transformer 作为参照,把 Qwen3.8 拆回 Embedding、Attention、Norm、FFN、Output、Residual 和 Optimizer 七个部分。每章沿着同一个问题推进:最初怎样做,规模扩大后哪里不够用,后来有哪些解决路线,为什么 Qwen 选择了其中这一组?
只看最终架构图,很容易把熟悉的 Transformer 当成过时的整体,再把陌生缩写当成一套全新系统。按模块回溯后会发现,有些接口一直保留,有些计算被替换,还有些效率改进其实发生在缓存、训练目标或优化器中。理解这些层次,比背下所有组件名称更有用。
怎样读这组学习笔记
每章先读 发展主线:用年代、动机与小例子建立直觉;再读 原理与 Qwen 实现:对照公式、参数和数据流;最后用 自测与答案 检查能否用自己的话解释。公式中的 $n$ 通常表示序列长度,$d$ 表示隐藏维度,$t$ 表示 token 位置;各章出现新符号时会就地说明。
这是一份围绕七个模块主要路线的学习综述,时间延伸至 2026 年 9 月。必要时回溯 LLM 之前的基础工作,但不把所有模型、论文逐年列全。历史表中的年份原则上用首次公开年份,因此可能与参考文献中的会议年份不同。表格排列说明问题怎样演进,不自动代表后文方法直接继承前文,也不代表所有旁支都被 Qwen 采用。
| 模块 | 从什么问题开始 | 本章连接的历史路线 | 回到 Qwen 时看什么 |
|---|---|---|---|
| Embedding | 文字如何变成可计算的表示 | 静态词向量、子词、上下文化、N-gram 条件记忆 | 地址、表项、融合与主存预取 |
| Attention | 怎样访问此前的信息 | MHA / MQA / GQA、FlashAttention、线性状态、SSM、稀疏选择、位置编码 | GDN 与 QSA 怎样互补 |
| Norm | 表示与梯度的尺度怎样控制 | LayerNorm / RMSNorm、Pre / Post、DeepNorm、gain 参数化 | 归一化作用在哪个张量 |
| FFN / MoE | 怎样增加非线性计算与容量 | ReLU / GELU、SwiGLU、稀疏路由、细粒度与共享专家 | 激活比例、负载与通信 |
| Output / MTP | 为什么生成必须等待上一步 | 自回归、独立 draft、Medusa / EAGLE、多未来训练目标 | 提案、验证与索引复用 |
| Residual | 层与层之间保存、更新什么 | 恒等路径、缩放、AltUp、HC / mHC、多流门控 | 存储宽度与计算宽度的分离 |
| Optimizer | 梯度怎样变成有效参数更新 | 动量、AdamW、Adafactor、Shampoo、Muon | 按参数语义分工与分布式执行 |
上表是各章的索引,具体历史论点与出处放在对应段落。初读不必一次学完七章,可以沿下面的模型数据流选一个模块开始。
先分清模型里三种不同的“状态”
- 模型参数:训练得到的 embedding、投影、专家和 LM Head 权重。普通推理时固定,多个请求共享。
- 请求状态:本次输入产生的 KV cache、GDN 递推状态和中间隐藏表示,随请求而变化。
- 优化器状态:训练时保存的动量、梯度统计等,用来更新模型参数;普通推理不需要携带。
N-gram 表变大是增加第一类容量,GDN 固定状态是在压缩第二类历史,Muon 处理的是第三类更新过程。这三件事不能只用一个“更省内存”概括。类似地,总参数、激活参数、FLOPs、显存占用和端到端延迟也是不同指标,后文会分别讨论。
先介绍一下参照:LLaMA-style Decoder
“现代 decoder-only Transformer”并不是一张唯一的结构图。为了让后面的比较有一个具体坐标,我先采用早期 LLaMA 的 block 作为本组笔记的参照:decoder-only Transformer,顺序执行 Attention 与 FFN,在每个子层输入前做 RMSNorm,Attention 使用 RoPE,FFN 使用 SwiGLU。[36]
选择 LLaMA 主要是因为笔者最初学习 LLM 时,就是从 LLaMA 开始的。这并不意味着所有同期或后续模型都照搬 LLaMA 的架构。在 Norm 的位置、Attention 的 KV 组织、位置编码,以及 Attention 与 FFN 是顺序还是并行执行等方面已经有不同选择。
| 架构 | Norm 的位置与类型 | Attention / 位置表示 | FFN 与 Block 组织 |
|---|---|---|---|
| Original Transformer (2017) | Post-LayerNorm | MHA + 绝对位置编码 | ReLU FFN;顺序执行 |
| PaLM (2022) | Pre-LayerNorm | MQA + RoPE | SwiGLU;Attention 与 FFN 并行读取同一输入 |
| LLaMA (2023,本笔记参照) | Pre-RMSNorm | MHA + RoPE | SwiGLU;Attention 与 FFN 顺序执行 |
| Gemma 2 (2024) | Pre- 与 Post-RMSNorm 同时使用 | GQA;局部与全局 Attention 交替 | GeGLU |
因此,上图中的 RMSNorm → Sublayer → Residual Add 只表示 LLaMA-style Pre-Norm。原始 Transformer 把 LayerNorm 放在残差相加之后,而 Gemma 2 会同时归一化每个子层的输入和输出。[5][7][37][38]
接下来仍然沿用 Embedding、Token Mixer、FFN、Residual 与 LM Head 这些接口来读 Qwen3.8。例如 MoE 仍然占据 FFN 的位置,GDN 与 QSA 仍然负责 token mixing,MTP 也没有取代正常的 LM Head。
Qwen3.8 的整体数据流
官方配置给出的语言模型主干为 48 层、隐藏维度 2,560。层类型以 3 × Gated DeltaNet + 1 × Qwen Sparse Attention 为周期重复 12 次,每一个 token mixer 后都接一层 MoE。模型使用 4 条 Gated Residual 分支;第 2 层额外注入一次 N-gram embedding;主模型之外还有一层 MTP 模块。[2][4]
- Backbone
- 125B 每 token 激活约 6B
- N-gram tables
- +51B 主干之外的查表容量
- Layers
- 48 12 个混合注意力周期
- Native context
- 262,144 配置中的原生长度
- Residual branches
- 4 低秩门控读写
- MTP
- ~4B 一层辅助预测模块
变化的共同形式:成本转移
这些部件很少真正“消灭”成本。它们通常把一个瓶颈换成另一个更容易扩展或更符合硬件条件的瓶颈。
| 部件 | 主要想缓解什么 | 采用的办法 | 成本转移到哪里 |
|---|---|---|---|
| Embedding | 仅靠主干计算扩大容量很贵 | N-gram 稀疏查表 | Host Memory、带宽与预取调度 |
| Attention | 长上下文的二次计算与 KV Cache | GDN 固定状态 + QSA 稀疏召回 | 状态压缩误差、索引器与稀疏 kernel |
| Norm | 深层训练的尺度与数值稳定性 | Zero-centered RMSNorm | 参数化、初始化与优化规则的耦合 |
| FFN | Dense FFN 的逐 token 计算 | Ultra-sparse MoE | 路由、负载均衡、通信与容量管理 |
| Output | 自回归解码一次只产生一个 token | MTP 提案 + 主模型验证 | 额外参数、接受率与 runtime 实现 |
| Residual | 单残差流的表示带宽 | 4 分支 GR | 残差内存流量与门控计算 |
| Optimizer | AdamW 对矩阵更新结构利用有限 | Muon 正交化矩阵动量 | Newton-Schulz 计算与分布式重排 |
这张表是阅读框架,不是报告中的原表。具体收益仍要回到每章的实验设置和证据边界。
推荐阅读顺序
如果只想理解推理路径,先读 Embedding → Attention → FFN → Output。如果更关心训练稳定性和系统实现,再读 Norm → Residual → Optimizer。
本章参考
[1] Qwen 官方博客;[2] 技术报告;[4] 官方配置;[5] Transformer;[7] Pre-LN 分析;[36] LLaMA;[37] PaLM;[38] Gemma 2。
查看完整参考文献与资料边界