跳转至

主流模型架构对比(LLaMA / Qwen / DeepSeek)

面试高频考点

  • LLaMA 相比原始 Transformer 做了哪些改进?
  • RMSNorm 和 LayerNorm 的区别?
  • SwiGLU 为什么比 ReLU 效果好?
  • DeepSeek-V2 的 MLA(Multi-head Latent Attention)解决了什么问题?
  • 为什么现代 LLM 几乎都用 Decoder-only?
  • GQA / MQA / MLA 的区别?

一、LLM 发展时间轴

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 原论文图:MHA / MQA / GQA 对比

图源: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 胜出的原因

  1. 统一任务格式:所有 NLP 任务都可建模为"给定前缀,预测后续"
  2. 监督信号密度高:每个 token 都参与训练(MLM 只有 15% 的 mask 位置参与)
  3. In-Context Learning:自然支持 few-shot(拼接示例在前缀)
  4. 工程简单:无 Encoder-Decoder 交叉注意力,KV Cache 实现直接
  5. 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的设计动机与区别