Llama 系列技术报告精读(未完善)

🏷️ 关键词

概述

Llama(Large Language Model Meta AI)是 Meta 发布的开源大语言模型系列,从 Llama 1 到 Llama 4,每一代都推动了开源模型的边界。Llama 系列引入了多项关键技术创新,包括 GQASwiGLURMSNorm

论文:Llama 1 Llama 2 Llama 3

发展简史

Llama 1 (2023.02)      — 7B/13B/33B/65B,开源先驱
    │
Llama 2 (2023.07)      — 7B/13B/70B,引入 GQA,开源商用
    │
Llama 3 (2024.04)      — 8B/70B/405B,史上最大开源密集模型
    │
Llama 4 (2025.04)      — MoE 架构,首次引入混合专家

一、GQA:Grouped-Query Attention

Llama 2 在 70B 版本中首次引入 GQA,这是 Llama 系列在注意力机制上的关键创新。

MHA → GQA → MQA 的演进

标准 MHA(Llama 1):
  Q: 64 头    K: 64 头    V: 64 头
  KV 缓存 = 64 × head_dim × layers → 推理时内存爆炸

GQA(Llama 2 70B / Llama 3):
  Q: 64 头    K: 8 组     V: 8 组
  KV 缓存 = 8 × head_dim × layers → 减少 87.5%

  Q 头分 8 组,每组 8 个头共享一个 K/V
  → 质量接近 MHA,缓存接近 MQA

为什么 GQA 有效

在推理时,GQA 的核心优势是减少 KV 缓存的数据搬运量。自回归生成中,KV 缓存需要从 HBM 读取到 SRAM,访存带宽通常是瓶颈。KV 缓存减少 87.5% 意味着:

  • 同样硬件可以支持更长的上下文
  • 同样上下文可以提高批量大小
  • 推理延迟显著降低

注:DeepSeek 的 MLA 更进一步,将 KV 压缩到潜在空间,缓存仅相当于 MHA 的 1.4%。


二、SwiGLU:门控激活函数

Llama 全系列使用 SwiGLU 作为激活函数,替代了早期模型常用的 ReLU 或 GELU。

公式对比

ReLU:      output = max(0, xW)               简单但表达力有限
GELU:      output = x · Φ(x)                 平滑,略有提升
SwiGLU:    output = Swish(xW) ⊗ (xV)         门控机制,最强

SwiGLU 通过引入门控机制(第二个投影矩阵 V),让网络可以动态选择哪些信息通过,类似 LSTM 中的门控思想。

参数代价

SwiGLU 的代价是额外增加了一个投影矩阵 V,使得 FFN 层的参数量增加约 1/3。作为回报,在相同计算量下,SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量。


三、RMSNorm:简化的层归一化

Llama 系列使用 RMSNorm 替代标准的 LayerNorm。

为什么可以简化

LayerNorm 做了两件事:中心化(减均值)和 缩放(除方差)。RMSNorm 发现,在 Transformer 中,中心化步骤不是必需的——只做缩放就够。

LayerNorm:  y = (x - μ) / σ × γ + β     ← 两步都做
RMSNorm:    y = x / RMS(x) × γ          ← 只做缩放

其中 RMS(x) = √(1/n × Σx²)

实际收益

  • 计算量减少约 10-15%
  • 模型质量无损
  • 被 Llama、Qwen、Mistral 等主流模型广泛采用

四、Llama 3 405B:开源密集模型的巅峰

Llama 3 405B 是当时最大的开源密集模型(非 MoE)。

模型配置

参数 数值
层数 126 层
隐藏维度 16,384
FFN 维度 53,248
注意力头 128 头,GQA(8 K/V 头)
词表大小 128,000 tokens
上下文 128K(RoPE, θ=500,000)
训练数据 15.6T tokens
GPU 30.8M H100 GPU 小时

Scaling Law:为什么是 405B?

Meta 通过 Chinchilla Scaling Law 确定了 405B 是最优参数量:

训练一个 Transformer 的计算量 ≈ 6 × 参数量 × 数据量
                 ↓
给定 3.8×10²⁵ FLOPs 的预算:
  更大的模型 + 更少数据 = 欠拟合 ❌
  更小的模型 + 更多数据 = 过拟合 ❌
  405B + 15.6T tokens = 计算最优 ✅(performance per FLOP 最高)

他们还发现了能力突现的 S 曲线

基准准确率
   1.0 |                          🚀
       |                       ↗
   0.5 |                 ↗
       |           ↗
   0.0 |  —————————
       +——————————————————→ 训练计算量
         能力突然涌现!到达某个阈值后迅速提升

4D 并行:如何训练 405B

405B 参数在 FP16 下需要 810GB 显存,远超单块 H100 的 80GB。Llama 3 使用 4D 并行来分布在 16,384 块 GPU 上:

4D 并行策略(4 个维度同时切分):

① 数据并行(DP)= 切分 batch
   每块 GPU 有完整模型,处理不同数据 → 梯度同步
   
② 张量并行(TP)= 切分层内参数
   一个 Transformer 层的矩阵被切到多块 GPU 上 ← 最常用

③ 流水线并行(PP)= 切分层间
   第 1-30 层在 GPU A,第 31-60 层在 GPU B...

④ 上下文并行(CP)= 切分序列长度
   长上下文时把序列切成多段,分别在不同 GPU 上处理

典型配置(512 节点 × 4096 GPU):
  TP=8, PP=8, CP=2, DP=4 → 8×8×2×4 = 512 组 × 8 GPU = 4096 ✅

训练三阶段

Phase 1 — 初始预训练:
  上下文: 8K tokens
  batch size: 逐步增加到 16M tokens
  目标: 学习基础知识

Phase 2 — 长上下文预训练:
  上下文: 8K → 128K 逐步扩展
  额外: ~800B tokens
  目标: 支持长序列推理

Phase 3 — 退火(Annealing):
  最后 40M tokens
  学习率线性衰减到 0
  高质量数据上采样(数学、代码、逻辑)
  Polyak 平均化检查点

后训练:迭代 SFT + DPO

Llama 3 的后训练不采用 PPO,而是使用 迭代 SFT + DPO

第 1 轮: 
  模型生成多个回答 → RM 评分 → 选最好的 → SFT 微调 → DPO 对齐
  
第 2 轮:
  更强的模型 → 生成更高质量的回答 → SFT → DPO
  
...
每轮生成的合成数据质量都在提升(正反馈循环 ✨)

性能对比

基准测试 Llama 3 405B GPT-4 Claude 3.5
MMLU 87.8 86.4
HumanEval 89.0 87.0
GSM-8K 96.8 95.3
MATH 72.4

与 DeepSeek-V3 的对比

维度 Llama 3 405B DeepSeek-V3
架构 密集(Dense) MoE
总参数量 405B 671B
激活参数 405B(100%) 37B(5.5%)
训练 GPU 时 30.8M 2.788M(11× 效率差距)

Llama 3 选择密集架构以保证训练稳定性和推理可预测性,而 MoE 方案虽然效率更高,但工程复杂度也更高。


五、Llama 4:MoE 转型

2025 年 4 月,Llama 4 发布,首次采用 MoE 架构:

  • Llama 4 Scout:109B 总参数,17B 激活(适合单 GPU 部署)
  • Llama 4 Maverick:402B 总参数,~40B 激活
  • 训练数据量提升至 30T+ tokens
  • 上下文窗口扩展至 10M tokens(基于密集注意力)

对开发者的启示

  1. GQA 是性价比最高的注意力优化——实现简单,收益显著
  2. SwiGLU 虽然增加了参数,但质量收益值得
  3. RMSNorm 证明有时候「简化」比「优化」更好
  4. 密集模型(Llama 3)和 MoE(Llama 4)各有适用场景,不是越”先进”越好
  5. Llama 的开源策略推动了整个生态的发展

参考文献

2026 年 06 月 06 日