Qwen3.5 架构详解教程
目标
本教程旨在深入讲解 Transformer 架构的核心组件,并以 Qwen3.5 为例,展示这些组件在实际大语言模型中的应用。
内容大纲
| 章节 | 主题 | 核心内容 |
|---|---|---|
| 0 | 前言 | 教程介绍、背景知识 |
| 1 | MLP | 前馈网络:ReLU → GeLU → SwiGLU 的演进 |
| 2 | 归一化层 | LayerNorm → RMSNorm,以及 Qwen3.5 的零初始化技巧 |
| 3 | 位置编码 | 绝对位置编码 → RoPE 旋转位置编码 → Partial RoPE |
| 4 | 注意力机制 | MHA → MQA → GQA → MLA 的演进,以及 Qwen3.5 的 Sigmoid Gate |
| 5 | 线性注意力 | 从标准注意力到 O(n) 的 Gated DeltaNet |
| 6 | MiniQwen | 把前 5 章组件组装成完整模型 |
| 7 | 预训练(选读) | 从零训练 MiniQwen 的流程与教学实测 |
| 8 | 权重适配 | 加载官方 Qwen3.5 权重到 MiniQwen |
| 9 | 后训练理论 | SFT/DPO/GRPO/PPO/Thinking/Agentic 的算法原理与教学 demo |
| 10 | 后训练实战 | 用真实 Qwen 权重跑各后训练阶段的代码讲解 |
| 11 | vLLM 原理 | PagedAttention、Continuous Batching、Prefix Cache 等核心思想 |
| 12 | nano-vllm | ~1200 行手写 vLLM(参考外部 nano-vllm 项目) |
| 13 | minivllm | 适配 MiniQwen 混合架构的推理引擎 |
| 14 | minivllm 评测 | 吞吐、Prefix Cache、正确性、任务效果的评测记录 |
参考资料
本教程参考以下代码实现:
qwen35-reproduce/
├── reference/ # 参考资料
│ ├── basic/ # 基础组件的独立实现
│ │ ├── FFN/ # FFN_ReLU, FFN_GeLU, FFN_SwiGLU
│ │ ├── norm/ # LayerNorm, RMSNorm
│ │ ├── pos_embed/ # 绝对位置编码, 相对位置编码, RoPE
│ │ ├── attention/ # MHA, MQA, GQA, MLA
│ │ ├── MoE/ # MoEGate, MoEFeedForward
│ │ └── notes/ # 笔记
│ └── transformers_source_code/ # HuggingFace Transformers 官方实现
│ │ ├── qwen3/ # Qwen3
│ │ ├── qwen3_5/ # Qwen3.5
│ │ ├── qwen3_next/ # Qwen3-Next
│ │ └── qwen3_vl/ # Qwen3-VL
| └── nano-vllm/ # nano-vllm
└── miniqwen/ # Qwen3.5 风格的迷你实现
| └── model/
| ├── config.py # 模型配置
| ├── rmsnorm.py # RMSNorm(Qwen3.5 风格)
| ├── rope.py # RoPE + Partial RoPE
| ├── mlp.py # SwiGLU
| ├── attention.py # GQA + Sigmoid Gate
| ├── deltanet.py # Gated DeltaNet 线性注意力
| ├── layer.py # DecoderLayer
| └── modeling_miniqwen.py # 完整模型
|── xxx/Qwen3.5 简介
Qwen3.5 是通义千问团队开发的大语言模型系列,相比前代的核心架构创新:
| 特性 | 说明 |
|---|---|
| SwiGLU 激活函数 | 替代传统 ReLU FFN,门控机制提升表达能力 |
| RMSNorm | 替代 LayerNorm,去掉均值中心化,计算更高效 |
| RoPE 旋转位置编码 | 旋转不变性编码相对位置,支持长序列 |
| Partial RoPE | 只对 head_dim 的前 25% 做 RoPE,其余直通 |
| GQA 分组查询注意力 | 8 个 Q head 共享 2 个 KV head,平衡效率和性能 |
| Sigmoid Gate | 注意力输出乘以 sigmoid(gate),替代传统的残差直接相加 |
| Gated DeltaNet | O(n) 线性注意力,用递归状态矩阵压缩历史信息 |
| 混合层布局 | 每 4 层中 3 层用线性注意力 + 1 层用全注意力 |
本教程仅考虑其中的 文本模型
下一章:1. MLP (前馈网络)