Qwen3学习日志
近期,千问开源了自家最新旗舰模型Qwen3.5系列,但最新的论文还没出,只有博客可以借鉴:
Qwen
https://qwen.ai/blog?id=qwen3.5由于学习需要,回顾Qwen3系列模型,并计划在后续完成GLM-5等模型的拆解学习。
Qwen3论文如下
http://arxiv.org/abs/2505.09388
http://arxiv.org/abs/2505.09388
一、概览
回顾Transformer的架构,我们可以这么理解,首先,数据的输入Input会经过Embedding模型转换为向量(嵌入模型也可以自训练,这个部分很重要,特别是对RAG),而后通过多头注意力机制计算注意力,不同的头就是不同的角度,例如“我爱吃肯德基的蛋挞拌米饭”,头1会看我爱吃啥,头2会看蛋挞是谁家的,头3会看蛋挞和谁搭配了,这就是不同的角度,也就是不同的头(Heads)。注意力所计算的东西,我们的文本也就是KV,但这里涉及到一个问题:当上下文过大时,KV太多,从显存搬运到 SRAM时,我们用显卡计算时的计算效率会远低于存储访问效率,严重拖垮了长序列(如高分辨率图像切片特征)的解码吞吐量,于是我们会从MHA(Multi-Head Attention)转向MQA(Multi-Querry Attention)混合/多查询注意力,为了打破显存墙,MQA 走向了另一个极端:保留 H 个 Query 头,但强行让所有 Query 头共享 唯一的一组 Key 和 Value。

这使得 KV Cache 的体积缩小了 H倍,吞吐量极高。然而,其代价是表达能力的严重坍塌(Capacity Degradation),在处理需要精细化局部映射的复杂推理任务时,容易丢失关键的细粒度特征。好的,终于到了主角Qwen3所采用的办法:
一: GQA 的架构(Grouped Query Attention)
出处:Joshua Ainslie, James Lee-Thorp, Michiel de Jong, Yury Zemlyanskiy, Federico Lebr ́on, and Sumit Sanghai. GQA: Training generalized multi-query Transformer models from multi-head checkpoints. In EMNLP, pp. 4895–4901. Association for Computational Linguistics,
2023.Ainslie 等人提出的 GQA 本质上是 MHA 与 MQA 之间的插值(Interpolation)。
假设模型总共有 H 个 Query 头。GQA 将这些 Query 头划分为 G 个组(Groups),每个组包含 个 Query 头。
在每一个组 g 内部,所有的 h 个 Query 头共享同一组 Key 和 Value 头。
对于属于组 g 的第 i 个 Query 头,其注意力计算的数学表达为:

当 G = H 时,每个组只有 1 个 Query 头,GQA 退化为 MHA
当 G = 1 时,所有 Query 头都在一个组里,GQA 退化为 MQA
以图中为例,Qwen3-0.6B也就是16个头,8个QKV,也就是分成了两组,两个头关注一个QKV,此时通过调整超参数 G(例如 LLaMA-2/3 和 Qwen2.5-VL ),GQA 在数学上构建了一个完美平衡的特征空间:它保留了足够的 KV 投影维度以维持细粒度的高频信息捕捉能力,同时将 KV Cache 的访存压力降低到了系统可接受的范围内。
GQA 论文的精髓不仅在于提出了这个架构,更在于解决了一个现实痛点:如何低成本地将一个已经用 MHA 预训练好的庞大模型,转化为 GQA 模型? 如果从头预训练,算力成本是天文数字。
论文提出了一种优雅的参数初始化与微调(Uptraining)方法: 均值池化 (Mean-pooling):为了初始化 GQA 组中的共享 Key 权重,,作者直接对原始 MHA 检查点(Checkpoint)中对应组内的 h 个 Key 权重进行均值池化:
同理,Value 权重也做均值池化操作。
在完成了这种权重复用后,只需要使用原始预训练数据量的一小部分(论文中约为 5% 的 steps)进行 Uptraining(向上训练/恢复训练)。这使得模型能够在极短的时间内适应这种新的 KV 共享机制,最终在保持与原 MHA 模型几乎一致的感知精度的同时,获得了接近 MQA 的解码速度。
二、SwiGLU
在传统的 Transformer FFN 层中,通常包含两个线性变换和一个非线性激活函数(如 ReLU 或 GELU):
Dauphin 等人在 2017 年处理语言建模时发现,传统的激活函数只是对单个神经元进行非线性映射,缺乏通道间的动态交互。于是他们引入了门控机制(Gating Mechanism),提出了 GLU:
其中 是 Sigmoid 函数,
是逐元素相乘(Element-wise multiplication)。
这里不再是简单的“激活”,而是把输入分成了两条路径。一条路径 提供特征内容,另一条路径
经过 Sigmoid 变成 0 到 1 之间的“门控阈值”。这就相当于在 FFN 内部实现了一种软注意力(Soft Attention),让网络能够动态地决定“哪些特征应该被放行,哪些特征应该被阻断”。
Noam Shazeer 在 2020 年对 GLU 进行了暴力但极其有效的微调:他把控制门控的 Sigmoid 函数,替换成了 Swish(在 时即为 SiLU)激活函数。
Swish 函数的数学定义为:
结合 GLU 的架构,去除了偏置项(现代大模型的常见做法),就得到了 SwiGLU 的核心公式
进一步,整个 Transformer 的 FFN 层就被改写为:

三:RoPE(Rotary Positional Embeddings ,旋转位置编码)
苏剑林(Jianlin Su)等人提出的 Rotary Positional Embeddings (RoPE,旋转位置编码),绝对可以载入 Transformer 架构演进的史册。这篇最初在 2021 年引发轰动、最终发表在 2024 年 Neurocomputing 上的论文,用一种极其优雅的数学直觉,彻底终结了“绝对位置编码”与“相对位置编码”长达数年的路线之争。目前,几乎所有最前沿的大模型(包括 Qwen、LLaMA、GLM 等)都在底层的 Attention 层中原生标配了 RoPE。
核心矛盾:如何在只注入绝对位置信息的同时,让注意力机制天然具备相对位置的感知能力?
累了,,,歇会继续。。。。
更多推荐

所有评论(0)