The Llama 3 Herd of Models
为什么这篇报告重要
2024 年 7 月,Meta 发布 Llama 3.1 405B—— 第一个公开权重 + 接近 GPT-4 性能的模型。
更重要的是——92 页详细技术报告—— Meta 公开了从数据 / 架构 / 训练到对齐的几乎所有细节。
这是开源 LLM 训练的”圣经”。 之后所有大开源模型(DeepSeek、Qwen 等)都参考它。
模型规格
Llama 3 系列发布了 3 个尺寸:
| 模型 | 参数 | 用途 |
|---|---|---|
| Llama 3.1 8B | 8B | 个人 / 小公司 |
| Llama 3.1 70B | 70B | 中型部署 |
| Llama 3.1 405B | 405B | 接近 GPT-4 |
所有都开源、可商用(部分限制)。
训练的几个关键决定
1. 数据:极大 + 极清
Llama 3 用了 15 万亿 token 的预训练数据—— 约 6 倍于 Llama 2。
但更重要的是数据质量:
- 多层去重:URL、文档、行级、最小 hash 等
- 质量过滤:分类器 + 启发式规则
- 多语言扩展:30+ 语言,每种独立质控
- 代码增强:大量代码数据(之前模型不足)
- 数学增强:数学/推理数据特别多
- 去除测试集:严格防止 benchmark 泄露
Meta 说:“数据质量比数据数量重要”—— 但 Llama 3 把两者都做到了极致。
2. 架构:保守但精心调优
没有花哨创新—— 基本还是标准 Transformer 架构:
- Decoder-only
- RoPE 位置编码(继续用 Llama 2 的)
- Grouped Query Attention(GQA)—— 推理省内存
- SwiGLU 激活
- RMSNorm 归一化
- BPE tokenizer,vocab 128k(比 Llama 2 的 32k 大 4 倍)
关键选择:不用 MoE。
Mixtral 等用 MoE 省算力—— Meta 选了”密集模型 + 大尺寸”路线。 理由:训练 + 推理工程更简单,部署更稳。
3. 训练:稳定为王
405B 模型训练成本估约 $60-100M。 任何中断 / 错误都极贵。
Meta 强调”训练稳定性”:
- Megatron-LM 集群(NVIDIA)
- 16,000 张 H100 同时训练
- 训练时长 54 天
中间遇到 78 次硬件 / 软件失败—— 每次都恢复,没重训。
这是工程奇迹——一般的训练遇到 5-6 次失败就放弃了。
4. 后训练:六阶段
预训练完只是开始。Llama 3 做了 6 轮后训练:
Step 1: SFT (监督微调)
↓
Step 2: 拒绝抽样 (Rejection Sampling)
↓
Step 3: DPO (Direct Preference Optimization)
↓
Step 4: 增量 SFT
↓
Step 5: 增量 DPO
↓
Step 6: 长上下文微调
每一步都用新生成的数据—— “模型生成 → 人工 / AI 标注 → 训练”循环。
最终模型 = 多轮迭代的结果—— 不是”训一次”的结果。
性能
在主流 benchmark 上
| 任务 | Llama 3.1 405B | GPT-4o | Claude 3.5 Sonnet |
|---|---|---|---|
| MMLU | 88.6 | 88.7 | 88.7 |
| GSM8K (math) | 96.8 | 96.1 | 96.4 |
| HumanEval (code) | 89.0 | 90.2 | 92.0 |
| ARC | 96.9 | 96.7 | 96.7 |
几乎和 GPT-4o / Claude 3.5 持平—— 开源首次达到这个水平。
一些反直觉的发现
1. 数据 > 算力
Meta 实测: 用 2x 算力训练同等数据量——提升有限。 用 2x 数据训练——提升明显。
这和 Chinchilla 论文(DeepMind 2022)的发现一致—— 大多数模型”算力相对数据过多”。
2. 长上下文是单独训练任务
Llama 3.1 405B 的 128k 上下文不是”预训练就有”—— 预训练用 8k,后期专门”扩上下文”。
通过特殊数据 + 多步训练:
- 8k → 16k → 32k → 64k → 128k
这告诉我们——长上下文是个独立技术问题,不只是参数大小决定。
3. 工具使用通过 SFT 训
Llama 3 能用工具—— 纯通过监督微调学到,没用 RL。
只要 SFT 数据里有”如何调用 Python 计算器”等例子—— 模型自动学会调用模式。
4. 数据合成是关键
很多训练数据是模型自己生成的:
- 数学题——用代码合成
- 多轮对话——用模型 self-play
- 推理 CoT——用更大模型生成
“合成数据” 是开源 LLM 训练的关键技巧—— 省钱 + 灵活。
对开源生态的影响
1. 行业新基线
Llama 3 405B 发布后—— 所有商业 LLM 都要面对”为什么用我,不用免费 Llama”。
- 安全和合规优势
- 工具集成优势
- 长尾任务调优优势
- 但基础能力上不再独占
2. 训练 know-how 公开
Meta 公开了从数据 → 架构 → 训练 → 对齐的所有细节。 所有其它开源团队都受益—— DeepSeek、Qwen、Mistral 等都借鉴。
3. “开源 vs 闭源”格局变化
之前:闭源 = 前沿,开源 = 落后 1-2 代 现在:闭源 vs 开源差距压缩到 6 个月-1 年
Sam Altman 2024 公开发言: “Open source models are catching up faster than expected.”
一些细节
没有完全开源
Llama 3 “weights open” —— 权重公开 但训练数据和代码部分未公开—— 不是完全意义上的开源。
真正完全开源的有:OLMo(AI2)、LLM360、Pythia 等。 Llama 是”开放权重”——足够大多数用途,但研究复现仍受限。
商用限制
License 限制:
- 商用需要 700M+ MAU 的公司单独许可
- 不能用于军事 / 武器系统
- 不能用于未经允许的训练
大多数公司 / 个人不受影响——但不是 100% 自由。
Llama 4 的预告
Meta 在 Llama 3 报告里暗示:
- Llama 4 将是 MoE 架构
- 更长上下文(>1M)
- 更强多模态
Llama 4 在 2025 年陆续发布—— 开源前沿继续推进。
与同期模型对比
vs Mixtral 8x22B
- Mixtral:MoE 架构,激活参数 39B
- Llama 3.1 70B:dense,激活全 70B
效果接近,但部署方式不同:
- Mixtral 推理快(激活少)
- Llama 训练稳
vs DeepSeek-V2
- DeepSeek:236B MoE,激活 21B
- 中文性能强
两种路线:MoE 还是 dense?开源生态在试验。
vs Qwen 系列
- Qwen 2.5:跨多个尺寸(0.5B 到 72B)
- 中文场景优势
Llama 主导英文 + 通用场景—— Qwen 主导中文 + 多模态—— 互补。
怎么用 Llama 3
最简单的方式:
# 1. Ollama
ollama pull llama3.3:70b
ollama run llama3.3:70b
# 2. HuggingFace
pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Llama-3.1-70B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
prompt = "Explain quantum entanglement to a 10-year-old."
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=500)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
70B 量化版能在单张 H100 上跑—— 405B 需要多卡(4-8 张 H100)。
推荐配套阅读
- HelloAI: L4-01 LLM 训练全流程 + L7-02 分布式训练
- Llama 3 完整技术报告(92 页) —— 必读
- Llama 2 论文(对比)
- Mixtral 论文 —— MoE 对比
2024 是”开源大模型的胜利之年”:
- Llama 3 接近 GPT-4
- DeepSeek、Qwen 紧追
- 推理价格大幅下降
未来 2-3 年—— 开源 vs 闭源的差距持续压缩。 对开发者是好消息。
对 OpenAI / Anthropic——商业模式要变。
想要更多论文精读
订阅每周精选 —— 下一篇论文笔记直接送邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。