主流模型架构对比(LLaMA / Qwen / DeepSeek)¶
面试高频考点¶
- LLaMA 相比原始 Transformer 做了哪些改进?
- RMSNorm 和 LayerNorm 的区别?
- SwiGLU 为什么比 ReLU 效果好?
- DeepSeek-V2 的 MLA(Multi-head Latent Attention)解决了什么问题?
- 为什么现代 LLM 几乎都用 Decoder-only?
- GQA / MQA / MLA 的区别?
一、LLM 发展时间轴¶

图源:MDPI
A Survey of Large Language Models: Evolution, Architectures, Adaptation, Benchmarking, Applications, Challenges, and Societal Implications。
从 2017 年 Transformer 发表到 2025 年 GPT-5,LLM 发展经历了三个阶段:
| 阶段 | 时间 | 关键节点 | 核心特征 |
|---|---|---|---|
| 架构奠基期 | 2017-2020 | Transformer → BERT → GPT-3 | 双向 vs 单向路线之争,最终 Decoder-only 胜出 |
| 范式确立期 | 2021-2022 | InstructGPT → ChatGPT | RLHF 对齐范式确立,Chat 成为主流交互方式 |
| 开源繁荣期 | 2023-2025 | LLaMA → DeepSeek → Qwen3 | 开源模型逼近闭源,MoE/推理模型成为新方向 |
二、主流架构参数对比¶
| 模型 | 参数量 | 上下文 | 词表 | 位置编码 | 注意力 | 激活 | 归一化 |
|---|---|---|---|---|---|---|---|
| LLaMA 1 7B | 7B | 2K | 32K | RoPE | MHA | SwiGLU | Pre-RMSNorm |
| LLaMA 2 7B | 7B | 4K | 32K | RoPE | MHA | SwiGLU | Pre-RMSNorm |
| LLaMA 2 70B | 70B | 4K | 32K | RoPE | GQA | SwiGLU | Pre-RMSNorm |
| LLaMA 3 8B | 8B | 8K→128K | 128K | RoPE (base=500K) | GQA | SwiGLU | Pre-RMSNorm |
| Qwen 2.5 7B | 7B | 128K | 152K | RoPE+YaRN | GQA | SwiGLU | Pre-RMSNorm |
| Qwen 3 32B | 32B | 32K | 152K | RoPE+YaRN | GQA | SwiGLU | Pre-RMSNorm |
| DeepSeek-V3 | 671B (37B 激活) | 128K | 130K | RoPE+YaRN | MLA + MoE | SwiGLU | Pre-RMSNorm |
| GPT-2 (对比基线) | 1.5B | 1K | 50K | Learned | MHA | GeLU | Post-LN |
| 原始 Transformer | - | 512 | - | Sinusoidal | MHA | ReLU | Post-LN |
三、Attention 变体对比:MHA / GQA / MQA / MLA¶
细化理解: MHA 每个 query head 都有独立 K/V,表达力强但 KV Cache 最大;MQA 让多个 query head 共享一组 K/V,显著降低推理显存和带宽,但可能损失部分质量;GQA 是折中方案,把 query heads 分组共享 K/V;MLA 进一步用潜变量压缩 KV 表示,核心目标也是降低长上下文推理成本。面试时可以从“KV Cache 成本”而不是公式出发解释这些变体。
视觉对比图¶

图源:
GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints论文图,Wikimedia Commons 转载页标注来源为 arXiv HTML。
每个变体在保留所有 Q 头的同时,对 KV 头的数量做了不同的压缩:
| 变体 | KV 头数 | KV Cache | 性能损失 | 代表 |
|---|---|---|---|---|
| MHA | h(每头独立) | 100% | 0 | GPT-2, LLaMA 1 7B |
| GQA | h/G | ~25%(G=4 时) | 极小 | LLaMA 2 70B, LLaMA 3, Qwen |
| MQA | 1(所有头共享) | 1/h | 有(~1%) | PaLM, Falcon |
| MLA | 低维潜在向量 | ~7% | 优于 GQA | DeepSeek-V2/V3 |
MLA(Multi-head Latent Attention)¶
DeepSeek-V2 的关键创新。不是简单地减少 KV 头数,而是把整个 KV 压缩成低维潜在向量:
传统 MHA:每层缓存 K, V ∈ R^{seq_len × d_model}
MLA:
1. 训练时学习低秩压缩:c_KV = W_DKV · x (W_DKV: d_model → d_c, 通常 d_c << d_model)
2. 推理时只缓存 c_KV ∈ R^{seq_len × d_c}
3. 使用时按需还原:K = W_UK · c_KV, V = W_UV · c_KV
KV Cache 节省:d_c / (2 × d_model) ≈ 7%(93% 节省)
质量:实测优于 GQA,因为信息压缩在训练时联合优化,而非简单的"丢一些 head"
MLA 的代价:每次使用 K/V 时需要一次额外矩阵乘法(反量化)。但因为 d_c 远小于 d_model,这个开销很小。
四、LLaMA 系列的关键改进¶
相比原始 Transformer(2017),LLaMA 做了 4 个关键改动,已成为现代 LLM 的标配:
1. Pre-RMSNorm(前置归一化 + 简化的 LN)¶
原始 Transformer (Post-LN):
y = LayerNorm(x + Sublayer(x)) ← LN 在残差之后
问题:训练不稳定,需要 warmup
LLaMA (Pre-RMSNorm):
y = x + Sublayer(RMSNorm(x)) ← LN 在子层之前 + 用 RMSNorm
优势:训练稳定无需 warmup,深度可以堆得更深
RMSNorm vs LayerNorm:
LayerNorm: y = (x - mean) / sqrt(var + ε) × γ + β
RMSNorm: y = x / RMS(x) × γ 其中 RMS(x) = sqrt(mean(x²))
↑ 不减均值,参数也少了 β
- 计算量少 ~7%(省去 mean 计算)
- 性能基本相同,已成为现代 LLM 主流
2. SwiGLU 激活函数¶
原始 FFN (ReLU):
FFN(x) = ReLU(xW₁ + b₁)W₂ + b₂
参数量:2 × d_model × d_ff
LLaMA SwiGLU FFN:
FFN(x) = (Swish(xW_gate) ⊙ xW_up) · W_down
其中 Swish(x) = x · σ(x)
参数量:3 × d_model × d_ff (多了一个 gate 矩阵)
为保持总参数量不变:d_ff 从 4d 调整为 2/3 × 4d ≈ 2.67d
优势:
- 门控机制让 FFN 学会"选择性通过"信息(不像 ReLU 硬截断)
- 处处可微,无 dying ReLU 问题
- 下游任务普遍优于 ReLU 1-3%
3. RoPE 位置编码¶
替换原始的 Sinusoidal 加法位置编码。RoPE 通过旋转 Q 和 K 注入位置信息,天然编码相对位置,外推友好(配合 YaRN 可扩展到 128K+)。详见 04_位置编码.md。
4. GQA(分组查询注意力)¶
LLaMA 2 70B 起采用,将 KV 头数从 64 减少到 8(G=8),KV Cache 减少 8 倍。LLaMA 3 全系列都用 GQA。
五、Qwen 系列的特色¶
阿里通义千问系列,在中文和多语言上表现优秀:
| 特性 | Qwen 配置 | 说明 |
|---|---|---|
| 词表 | 152K(含大量中文子词) | 是 LLaMA 32K 词表的 4.7 倍 |
| 上下文 | 默认 128K(YaRN 扩展) | 长文档场景友好 |
| 训练数据 | 强调多语言均衡 | 中文性能显著优于 LLaMA |
| Qwen3 创新 | 混合推理模式 | 同模型可切换"思考模式"和"快速模式" |
Qwen3 的混合推理模式¶
传统模型:要么"快但浅"(聊天),要么"慢但深"(推理)
Qwen3:单一模型,通过特殊 token <think> 切换
普通模式:
User: 1+1=?
Assistant: 2
推理模式:
User: 复杂数学题 <think>
Assistant: <think>让我一步步思考...</think> 答案是 X
工程价值:避免维护两个独立模型,资源利用率高
六、DeepSeek 系列的工程突破¶
DeepSeek 走的是"极致优化"路线,每代都有显著工程创新:
DeepSeek-V2 (2024.5)¶
- MLA:KV Cache 减少 93%
- 细粒度 MoE:160 个专家,每次激活 6 个(vs Mixtral 8 选 2)
- 共享专家:除了 Router 专家,还有所有 token 都经过的共享专家
DeepSeek-V3 (2024.12)¶
- FP8 训练:全程 FP8 混合精度,是首个公开做大规模 FP8 训练的模型
- 256 个专家:进一步细粒度化
- 无辅助损失负载均衡:用动态偏置自动平衡,无需传统的 aux loss
- 训练成本:仅 ~$5.5M(vs GPT-4 估计 $100M+)
DeepSeek-R1 (2025.1)¶
- 纯 RL 训练推理能力:无需 SFT,直接用 GRPO + 规则奖励让模型涌现 CoT
- 详见 10_前沿对齐技术.md
七、Decoder-only 为何成为主流?¶
| 维度 | Encoder-only | Encoder-Decoder | Decoder-only |
|---|---|---|---|
| 代表 | BERT, RoBERTa | T5, BART | GPT, LLaMA |
| 注意力 | 双向 | Enc 双向 + Dec 单向 | 单向(causal) |
| 预训练 | MLM | Span Corruption | Next Token Prediction |
| 生成能力 | 弱 | 强 | 强 |
| Scaling 表现 | 一般 | 一般 | 最好 |
| In-Context Learning | 弱 | 一般 | 强(涌现) |
| 适用 | 分类、NER | 翻译、摘要 | 通用生成(主流) |
Decoder-only 胜出的原因¶
- 统一任务格式:所有 NLP 任务都可建模为"给定前缀,预测后续"
- 监督信号密度高:每个 token 都参与训练(MLM 只有 15% 的 mask 位置参与)
- In-Context Learning:自然支持 few-shot(拼接示例在前缀)
- 工程简单:无 Encoder-Decoder 交叉注意力,KV Cache 实现直接
- Scaling Law 友好:在相同算力下下游性能优于其他架构
八、面试延伸¶
Q:为什么 LLaMA 3 把词表从 32K 扩到 128K?
① 多语言和代码场景下,单个 token 能覆盖的字符更多 → 序列变短 → 推理效率提高;② 减少了多字节字符(如中文、emoji)被拆分的概率,保留语义完整性;③ 配合 15T tokens 训练数据,词表扩大不会引入欠拟合。代价:Embedding 层参数从 ~131M(32K×4096)增至 ~524M,但相对 8B 总参数占比仍很小。
Q:SwiGLU 为什么要用 2/3 × 4d 而不是 4d 作为隐藏层维度?
SwiGLU 使用 3 个权重矩阵(W_gate, W_up, W_down),如果保持隐藏层 = 4d,参数量会比标准 FFN 多 50%。LLaMA 团队调整为 d_ff = (2/3) × 4d ≈ 2.67d,使 3 × d × 2.67d ≈ 2 × d × 4d,总参数量基本相同,便于与原架构对比性能。
Q:DeepSeek-V2 的 MoE 和 MLA 分别解决什么问题?
MoE 解决"如何用更少计算量扩大模型容量":236B 总参数但每次只激活 21B(参数效率 9%)。MLA 解决"长上下文下 KV Cache 显存爆炸":通过低秩压缩,KV Cache 减少 93%。两者正交,DeepSeek-V2 同时使用,使其在长上下文场景下同时拥有大容量和低显存。
Q:MLA 和 GQA 哪个更好?
MLA 的 KV Cache 比 GQA 更小(7% vs 25%),且在 DeepSeek 实测中下游性能也优于 GQA。但 MLA 实现更复杂,需要训练时联合学习压缩矩阵,且推理时需要额外的解压操作。GQA 实现简单(直接减头数),是大多数开源框架的默认选择。如果团队有能力实现 MLA,长上下文场景下 MLA 是更好的选择。
Q:为什么现代 LLM 都用 Pre-Norm 而不是 Post-Norm?
Pre-Norm 的核心优势是训练稳定性。Post-Norm 中残差分支的输出方差未经控制,深层模型训练时容易梯度爆炸或消失,需要精心的学习率 warmup。Pre-Norm 把 LayerNorm 放在残差分支内部,主路径 x 始终有 +1 的梯度通道,深度可堆 80+ 层(LLaMA 3 70B 有 80 层)也能稳定训练,无需 warmup。
原始论文¶
| 论文 | 链接 |
|---|---|
| LLaMA 2 (Touvron et al., 2023) | arxiv.org/abs/2307.09288 |
| LLaMA 3 技术报告 (Meta, 2024) | arxiv.org/abs/2407.21783 |
| DeepSeek-V2 (DeepSeek, 2024) | arxiv.org/abs/2405.04434 |
| DeepSeek-V3 (DeepSeek, 2024) | arxiv.org/abs/2412.19437 |
| Qwen2 技术报告 (Alibaba, 2024) | arxiv.org/abs/2407.10671 |
| GLU Variants Improve Transformer — SwiGLU (Shazeer, 2020) | arxiv.org/abs/2002.05202 |
| Root Mean Square Layer Normalization (Zhang & Sennrich, 2019) | arxiv.org/abs/1910.07467 |
延伸阅读与视频¶
| 平台 | 标题 | 说明 |
|---|---|---|
| 📺 B站 | 手撕LLM-LLaMA(SwiGLU、GQA数学原理分析) | 源码级拆解LLaMA中SwiGLU激活函数和GQA分组注意力的数学原理 |
| 📺 B站 | 10分钟了解DeepSeek-V2的创新点:MLA | 专门讲解DeepSeek独创的Multi-head Latent Attention机制 |
| 📺 B站 | 源码级拆解Qwen3、LLaMA4、DeepSeek-V3三大模型核心技术 | 三模型并排对比,源码级分析架构差异 |
| 📺 B站 | 13分钟彻底搞懂KV Cache和分组多头注意力GQA | 从KV Cache原理推导MQA/GQA的设计动机与区别 |