原文
This repo contains the instruction-tuned 0.5B Qwen2.5 model, which has the following features:
- Type: Causal Language Models
- Training Stage: Pretraining & Post-training
- Architecture: transformers with RoPE, SwiGLU, RMSNorm, Attention QKV bias and tied word embeddings
- Number of Parameters: 0.49B
- Number of Paramaters (Non-Embedding): 0.36B
- Number of Layers: 24
- Number of Attention Heads (GQA): 14 for Q and 2 for KV
- Context Length: Full 32,768 tokens and generation 8192 tokens
For more details, please refer to our blog, GitHub, and Documentation.
5 个组件
文章目录
- 原文
- 5 个组件
- 1. RoPE (Rotary Positional Embedding)
- 2. SwiGLU (Swish-Gated Linear Unit)
- 3. RMSNorm (Root Mean Square Layer Normalization)
- 4. Attention QKV Bias
- 5. Tied Word Embeddings (权重共享)
- 总结对比表
- 结论
与所熟知的“原始” Transformer(即 2017 年《Attention Is All You Need》中的标准架构)相比,Qwen2.5 使用的这 5 个组件都有显著不同或增强。
但这并不意味着“标准 Transformer”不能用这些,而是说这些组件代表了现代高性能 LLM 的工业标准配置,它们解决了标准 Transformer 在深度训练稳定性、计算效率和大模型扩展性上的痛点。
下面逐一解析这五个模块与原始 Transformer的区别:
1. RoPE (Rotary Positional Embedding)
- 原始 Transformer: 使用绝对位置编码(Absolute Positional Encoding)。直接给每个位置的向量加上一个固定的正弦/余弦向量。这种编码方式难以处理训练长度和推理长度不一致的情况,也不具备良好的外推性。
- Qwen2.5 (RoPE): 使用旋转位置编码。它将位置信息编码为旋转矩阵,使得向量之间的相对位置关系能够被模型更好地捕捉。
- 优势: 支持更好的长上下文外推(Extrapolation),即训练时看 32k,推理时看 128k 效果衰减较小;符合物理直觉(相对距离不变)。
2. SwiGLU (Swish-Gated Linear Unit)
- 原始 Transformer: 使用标准的前馈神经网络(FFN),结构通常是
Linear -> ReLU/GELU -> Linear。也就是两层全连接层中间夹一个激活函数。 - Qwen2.5 (SwiGLU): 使用了门控线性单元结构。
- 标准 FFN:W 2 ⋅ GELU ( W 1 ⋅ x ) W_2 \cdot \text{GELU}(W_1 \cdot x)W2⋅GELU(W1⋅x)
- SwiGLU FFN:W 2 ⋅ Swish ( W 1 ⋅ x ) ⊙ ( W 3 ⋅ x ) W_2 \cdot \text{Swish}(W_1 \cdot x) \odot (W_3 \cdot x)W2⋅Swish(W1⋅x)⊙(W3⋅x)
- 注意:它多了一个投影矩阵W 3 W_3W3,并且激活函数变成了 Swish(或 SiLU)。
- 优势: 研究表明,SwiGLU 在大规模预训练中的表现显著优于标准的 GELU/ReLU FFN,能带来更高的参数量利用率。
3. RMSNorm (Root Mean Square Layer Normalization)
- 原始 Transformer:没有明确的 LayerNorm 标准化步骤(原始论文中在 Encoder/Decoder 内部使用了残差连接后的标准化,但在后续演进中 LayerNorm 成为标配)。即使后来引入了 LayerNorm,它也是减去均值并除以标准差。
- Qwen2.5 (RMSNorm): 使用 RMSNorm。它去掉了 LayerNorm 中的“减去均值”这一步,只除以均方根(Root Mean Square)。
- 公式差异: LayerNorm 计算μ \muμ和σ \sigmaσ,RMSNorm 只计算1 n ∑ x i 2 \sqrt{\frac{1}{n}\sum x_i^2}n1∑xi2。
- 优势: 计算更简单、更快(少了一次减法运算),且在现代大模型中证明效果与 LayerNorm 相当甚至更好,尤其在深层网络中更稳定。
4. Attention QKV Bias
- 原始 Transformer: 在 Multi-Head Attention 的 Query, Key, Value 线性变换中,通常不使用 Bias。原始论文为了保持注意力机制的平移不变性和计算简洁性,去掉了 Bias。
- Qwen2.5 (QKV Bias): 在生成 Q、K、V 的线性层中加入了 Bias。
- 优势: 对于某些模型架构和训练策略,加入 Bias 有助于模型更快地收敛,或者在微调阶段提供额外的表达能力。虽然理论上注意力机制对 Bias 不敏感,但在实际大模型训练中,这是一个常见的工程优化选择。
5. Tied Word Embeddings (权重共享)
- 原始 Transformer:输出层的权重矩阵与输入的词嵌入(Embedding)矩阵是共享的。即,如果你有一个V × d V \times dV×d的词嵌入矩阵,输出层也是用这个矩阵的转置来映射回词汇表。
- Qwen2.5:也使用了 Tied Embeddings。
- 优势: 可以大幅减少参数量。对于较小的模型(如 0.5B, 1.5B),嵌入层的参数量占比很高,共享权重可以节省约 10%-20% 的总参数量,同时保持性能。这也是为什么你的文档中提到“Number of Paramaters: 0.49B”,但“Non-Embedding: 0.36B”,说明嵌入层占了约 0.13B 的参数。
总结对比表
| 模块 | 原始 Transformer (2017) | Qwen2.5 / 现代 LLM 标准 | 主要改进目的 |
|---|---|---|---|
| 位置编码 | 绝对位置编码 (Sin/Cos) | RoPE | 更好的长文本外推性、相对位置感知 |
| FFN 激活 | GELU / ReLU (全连接) | SwiGLU(门控) | 更强的非线性表达能力、训练更稳定 |
| 层归一化 | (原始无,后期加 LayerNorm) | RMSNorm | 计算更快、内存占用更少、深层训练更稳 |
| Attention Bias | 无 Bias | 有 QKV Bias | 微调灵活性、潜在的性能微调增益 |
| Embedding 权重 | 共享(Tied) | 共享(Tied) | 节省参数,对小模型尤其重要 |
结论
看到的这些配置,实际上是当前最先进的开源大语言模型(如 Llama 3, Qwen, Mistral 等)的标准技术栈。
它们不是“错误”,而是经过多年实践验证的最优解组合。如果你是在复现或对比实验,直接使用这些现代组件通常会比“原始 Transformer”获得更好的效果,尤其是对于小参数模型(如 0.5B)而言,SwiGLU 和 RMSNorm 的贡献尤为关键。