LLaMA 与 Qwen 架构演进
LLaMA 和 Qwen 是开源大模型两条最重要的主线:前者奠定了"开源稠密模型"的标准架构,后者代表了中文/多语言开源模型的最高水平。面试中"讲讲 LLaMA 各代的区别""Qwen3 相比 Qwen2 改了什么"是经典考题——考的是你对架构演进背后动机的理解,而不是背参数表。
现代开源 LLM 的"标准配方"
LLaMA 1 确立、后续几乎所有开源模型沿用的架构选型:
| 组件 | 选择 | 取代了什么 | 原因 |
|---|---|---|---|
| 整体结构 | Decoder-only | Encoder-Decoder | 训练目标统一、推理可用 KV Cache |
| 归一化 | Pre-Norm + RMSNorm | Post-Norm + LayerNorm | 深层训练更稳定、计算更省 |
| 激活函数 | SwiGLU | ReLU/GELU | 门控结构效果更好 |
| 位置编码 | RoPE | 绝对位置/可学习位置 | 相对位置性质 + 可外推 |
| 注意力 | MHA → GQA | — | 压缩 KV Cache、提升推理吞吐 |
| 偏置项 | 基本去掉 bias | — | 大模型下 bias 收益小、还省参数 |
面试一句话:"现代开源 LLM ≈ Decoder-only + Pre-RMSNorm + SwiGLU + RoPE + GQA",先给出这个公式,再展开每一项的动机,是结构化作答的好开场。
LLaMA 系列演进
演进总览
| LLaMA 1 (2023.02) | LLaMA 2 (2023.07) | LLaMA 3/3.1 (2024) | |
|---|---|---|---|
| 参数规模 | 7B/13B/33B/65B | 7B/13B/70B | 8B/70B/405B |
| 训练数据量 | 1.0~1.4T tokens | 2T tokens | 15T+ tokens |
| 上下文长度 | 2K | 4K | 8K → 128K(3.1) |
| 词表大小 | 32K(SentencePiece) | 32K | 128K(tiktoken 系) |
| 注意力 | MHA | 70B 用 GQA | 全系 GQA(8 个 KV 头) |
| 对齐 | 无(仅基座) | SFT + RLHF(Chat 版) | SFT + 拒绝采样 + DPO |
每一代解决了什么问题
LLaMA 1:用缩放定律重新分配算力。 核心思想来自 Chinchilla——同等算力下"小模型 + 更多数据"优于"大模型 + 少数据",且 LLaMA 进一步为推理成本优化:13B 模型用 1T tokens "过量训练",性能超过 GPT-3 175B。这确立了"训练多花钱、推理少花钱"的开源路线。
LLaMA 2:走向可用的对话模型。 上下文翻倍到 4K;70B 引入 GQA 把 KV Cache 压缩 8 倍;首次开放 RLHF 对齐的 Chat 版本(拒绝采样 + PPO),并提出安全奖励模型与有用性奖励模型分开训练。
LLaMA 3:数据和词表的胜利。 架构几乎没变(全系 GQA 是主要变化),提升主要来自:15T tokens 的高质量数据(大量质量过滤与去重)、128K 大词表(多语言/代码压缩率显著提升)、退火阶段(annealing)用高质量数据收尾。3.1 版本把 RoPE base 提高到 500,000 并配合持续预训练扩展到 128K 上下文,405B 是当时最大的开源稠密模型。
LLaMA 4(2025)转向 MoE 架构并引入超长上下文(千万级),标志着 Meta 也放弃了"纯稠密"路线——稠密模型扩参数的性价比已被 MoE 超越,参见 MoE 专题。
Qwen 系列演进
演进总览
| Qwen 1 (2023) | Qwen 2 (2024.06) | Qwen 2.5 (2024.09) | Qwen 3 (2025.04) | |
|---|---|---|---|---|
| 规模 | 1.8B~72B | 0.5B~72B + MoE | 0.5B~72B | 0.6B~32B 稠密 + MoE(235B-A22B 等) |
| 训练数据 | ~3T | 7T | 18T | 36T |
| 上下文 | 2K~32K | 32K~128K | 128K | 32K~128K(可扩展) |
| 注意力细节 | QKV 加 bias | 全系 GQA + QKV bias | GQA + QKV bias | GQA + QK-Norm(去掉 QKV bias) |
| 特色 | 152K 大词表 | DCA + YaRN 长上下文 | Coder/Math 专项模型 | 思考/非思考混合模式 |
每一代的关键设计
Qwen 1 的两个与众不同:
- 152K 大词表:在 LLaMA 还是 32K 词表的年代就用大词表,对中文等多语言的编码效率(每个汉字消耗的 token 数)大幅优于 LLaMA 系——这是"中文模型为什么不直接用 LLaMA 词表"的标准答案。
- QKV 加 bias:与 LLaMA "全部去 bias" 相反,Qwen 在注意力的 QKV 投影保留 bias,论文给出的理由是增强长度外推能力。
Qwen 2:全系换 GQA;用 双块注意力(DCA)+ YaRN 做长上下文外推;引入 MoE 版本(57B-A14B)试水稀疏架构。
Qwen 2.5:架构稳定,主要卷数据(18T tokens)与专项能力(Coder、Math 独立系列),72B-Instruct 成为当时开源对齐模型的事实标杆之一。
Qwen 3 的三个重要变化:
- QK-Norm 替代 QKV bias:在 Q、K 上各加一层 RMSNorm 再算注意力,比 bias 更直接地稳定注意力 logits、防止训练 loss spike(Gemma 2/3 也采用同类设计)——体现了"注意力数值稳定性"成为新的架构关注点。
- 思考/非思考混合模式:同一个模型既能直接回答、也能输出 long CoT 深度思考,通过模板开关切换,把"推理模型"和"对话模型"合二为一(详见 推理模型与慢思考)。
- MoE 旗舰:235B-A22B(总参 235B、激活 22B),以约 1/10 的激活参数对标稠密大模型,确认了 MoE 作为旗舰架构的趋势。
LLaMA vs Qwen:面试对比要点
| 维度 | LLaMA 路线 | Qwen 路线 |
|---|---|---|
| 词表 | 32K → 128K(3 代才换大词表) | 一开始就是 152K 大词表 |
| 多语言 | 以英文为中心 | 多语言/中文优先,119 种语言(Qwen3) |
| 注意力稳定性 | 无特殊处理 | QKV bias → QK-Norm |
| 模型谱系 | 少量尺寸、重旗舰 | 全尺寸覆盖(0.5B~235B)+ 专项模型 |
| 开源策略 | 自定义许可(限制条款) | Apache 2.0(Qwen2 起大部分) |
为什么国内做应用基本都基于 Qwen 微调? 中文 token 效率高(推理成本低)、尺寸全(按算力挑)、许可宽松(可商用)、中文能力和生态(微调工具链支持)最成熟。
与闭源 GPT 系列的架构差异
- GPT-4 被广泛认为是 MoE 架构(未官方确认),开源界直到 Mixtral/DeepSeek/Qwen3 才大规模跟进 MoE。
- 开源模型的进步路径高度透明:数据量与数据质量贡献了大部分提升,架构变化(GQA、大词表、QK-Norm)主要服务于训练稳定性和推理效率——这个判断本身就是高频考点:"LLaMA 1 到 3 架构几乎没变,为什么效果差那么多?"答案是数据(量、质量、配比、退火)+ 词表 + 上下文。
高频追问
Q:LLaMA 3 为什么把词表从 32K 扩到 128K?代价是什么? 收益:多语言和代码的压缩率提升(同样文本消耗更少 token),等效上下文更长、推理更省。代价:embedding 与输出层参数大幅增加(128K × d_model),对小模型占比很高,所以 LLaMA 3 8B 的 embedding 部分就占约 10 亿级参数;低频 token 训练不充分的风险也更高。
Q:Qwen 早期加 QKV bias、Qwen3 又去掉换成 QK-Norm,怎么理解这个反复? 两者都是在解决注意力的数值/外推问题。bias 是早期经验性做法(被认为有利于外推);QK-Norm 直接对 Q、K 做归一化,从根源上限制注意力 logits 的数值范围,防止大规模训练中的 loss spike,是更系统的方案。演进体现了"经验补丁 → 原理性方案"的常见模式。
Q:GQA 的 KV 头数为什么常选 8? 8 是效果与显存的折中点:MQA(1 个 KV 头)压缩最狠但质量损失可感知;实验表明 KV 头数为 8 左右时质量几乎与 MHA 持平,而 KV Cache 压缩到 1/8~1/16。另外 8 也方便张量并行切分(每张卡至少分到 1 个 KV 头)。
Q:如果让你基于 Qwen 做领域模型,选 Base 还是 Instruct 微调? 有大量领域语料、需要先做继续预训练 → 从 Base 开始(Instruct 的对齐会被继续预训练破坏);只做 SFT 注入领域问答能力 → 从 Instruct 开始(保留通用对话与指令遵循能力)。数据量小、任务接近通用对话时,Instruct + LoRA 是性价比最高的组合。
Q:LLaMA 3.1 是怎么把上下文扩到 128K 的? 分阶段:主预训练在 8K 完成,之后用长文本数据做持续预训练,逐步增加长度到 128K,同时把 RoPE base 提高到 500,000 配合调整。直接全程长上下文训练成本不可接受(注意力 $O(T^2)$),"短训练 + 长扩展"是业界通用做法,详见 长上下文专题。