The Llama 3 Herd of Models


TL;DR

本文介绍了 Llama 3 模型家族,其中旗舰模型是一个拥有 405B 参数的密集型 Transformer,通过在 15T 多语言 token 上进行大规模预训练,并采用稳定可扩展的架构和训练方法,使其在多项基准测试中达到了与 GPT-4 等顶级模型相当的性能水平。

关键定义

本文主要基于现有概念进行构建和扩展,并引入了以下关键实践:

相关工作

当前,基础模型(Foundation Models)是现代人工智能系统的核心。其发展依赖于三大关键杠杆:数据、规模和复杂性管理。尽管业界已有多款强大的模型,但仍存在以下挑战:

  1. 数据瓶颈:现有模型的训练数据在数量和质量上仍有提升空间。如何构建更大规模、更高质量、更多样化的多语言、代码、推理数据集是提升模型能力的关键。
  2. 规模扩展的挑战:训练更大规模的模型(如千亿乃至万亿参数级别)需要庞大的计算资源和先进的工程技术,对训练稳定性、效率和可靠性提出了极高要求。
  3. 训练方法的复杂性:一些先进的训练算法,如复杂的强化学习方法,虽然可能带来性能提升,但往往难以扩展且训练过程不稳定,增加了开发和迭代的难度。

本文旨在解决这些问题,目标是通过系统性地优化数据处理、极致地扩大模型和训练规模,并坚持使用简单、稳定、可扩展的架构和训练策略,来开发出一款性能顶尖且公开发布的基础模型。

本文方法

整体架构与训练流程

Llama 3 的开发遵循一个两阶段流程,并探索了多模态扩展路径。

Refer to caption

Figure 1: Llama 3 总体架构与训练流程图解

  1. 语言模型预训练 (Language Model Pre-training):在大约 15.6T 多语言文本 token 上训练一个大型语言模型进行下一词元预测(next-token prediction)。此阶段赋予模型语言理解和世界知识。初始预训练使用 8K 上下文窗口,之后通过继续预训练将窗口扩展到 128K。
  2. 语言模型后训练 (Language Model Post-training):通过监督微调 (Supervised Finetuning, SFT)、拒绝采样 (Rejection Sampling, RS) 和直接偏好优化 (Direct Preference Optimization, DPO) 等技术,将预训练模型与人类偏好对齐,使其能够遵循指令。此阶段也用于集成工具使用等新能力,并实施安全缓解措施。

此外,本文还尝试了组合式多模态扩展,通过训练独立的图像和语音编码器,并使用适配器将其与语言模型连接,以赋予模型处理图像、视频和语音的能力。

预训练

预训练是 Llama 3 取得卓越性能的基石,涉及数据、架构、扩展法则和基础设施四个方面。

预训练数据

本文构建了一个包含约 15T token 的大规模、高质量预训练数据集,数据截止到 2023 年底。

模型架构

Llama 3 采用了标准的密集型 Transformer 架构,其性能提升主要源于数据和规模,而非架构的根本性创新。相较于 Llama 2,主要有以下几点微调:

  8B 70B 405B
层数 32 80 126
模型维度 4,096 8,192 16,384
FFN 维度 14,336 28,672 53,248
注意力头数 32 64 128
键/值头数 8 8 8
峰值学习率 3 × 10⁻⁴ 1.5 × 10⁻⁴ 8 × 10⁻⁵
激活函数 SwiGLU    
词汇表大小 128,000    
位置嵌入 RoPE (θ = 500,000)    

Table 3: Llama 3 关键超参数概览

扩展法则 (Scaling Laws)

为了在给定的计算预算下确定最优模型尺寸并预测其性能,本文采用了一种两阶段的扩展法则制定方法:

  1. 建立损失与计算量的关系:通过在不同计算预算(6 × 10¹⁸ 至 10²² FLOPs)下训练一系列小模型,绘制出 IsoFLOPs 曲线,找到每个计算量下的“计算最优”模型尺寸,并拟合出最优训练 token 数与计算预算的幂律关系:

    \[N^*(C) = AC^{\alpha}\]

    最终推断出在 3.8 × 10²⁵ FLOPs 预算下,最优模型约为 402B 参数,训练于 16.55T token。基于此,最终选择了 405B 参数的模型。

Refer to caption Figure 2: 不同计算量下的 IsoFLOPs 曲线

Refer to caption Figure 3: 计算最优模型的训练 token 数与预训练计算预算的关系

  1. 预测下游任务性能:首先将下游任务的负对数似然与训练 FLOPs 相关联,然后利用 Llama 2 等旧模型的数据,建立负对数似然与任务准确率之间的 S 型关系。这种方法能够跨越四个数量级准确预测最终旗舰模型在 ARC Challenge 等基准上的性能。

Refer to caption Figure 4: ARC Challenge 性能的扩展法则预测

基础设施与训练效率

Llama 3 405B 的训练在一系列专为大规模 AI 设计的生产级基础设施上完成,并实现了多项效率优化。

通过这些优化,405B 模型在 16K GPU 上的训练实现了 38-41% 的模型 FLOPs 利用率 (Model FLOPs Utilization, MFU)。

| GPUs | TP | CP | PP | DP | 序列长度 | 每DP批大小 | 每批Token | TFLOPs/GPU | BF16 MFU | | — | — | — | — | — | — | — | — | — | — | | 8,192 | 8 | 1 | 16 | 64 | 8,192 | 32 | 16M | 430 | 43% | | 16,384 | 8 | 1 | 16 | 128 | 8,192 | 16 | 16M | 400 | 41% | | 16,384 | 8 | 16 | 16 | 8 | 131,072 | 16 | 16M | 380 | 38% | Table 4: Llama 3 405B 预训练各阶段的扩展配置和 MFU

| 组件 | 类别 | 中断次数 | 中断百分比 | | — | — | — | — | | 故障 GPU | GPU | 148 | 30.1% | | GPU HBM3 内存 | GPU | 72 | 17.2% | | 软件 Bug | 依赖项 | 54 | 12.9% | | 网络交换机/线缆 | 网络 | 35 | 8.4% | | 主机维护 | 非计划维护 | 32 | 7.6% | | GPU SRAM 内存 | GPU | 19 | 4.5% | | GPU 系统处理器 | GPU | 17 | 4.1% | | … | … | … | … | Table 5: Llama 3 405B 预训练 54 天期间意外中断的根本原因分类

实验结论

本文对 Llama 3 模型家族进行了广泛的评估,实验结果表明其强大的性能。

| 类别 | 基准测试 | Llama 3 405B | Nemotron 4 340B | GPT-4 (0125) | GPT-4o | Claude 3.5 Sonnet | | — | — | — | — | — | — | — | | 通用 | MMLU (5-shot) | 87.3 | 82.6 | 85.1 | 89.1 | 89.9 | | | IFEval | 88.6 | 85.1 | 84.3 | 85.6 | 88.0 | | 代码 | HumanEval (0-shot) | 89.0 | 73.2 | 86.6 | 90.2 | 92.0 | | 数学 | GSM8K (8-shot, CoT) | 96.8 | 92.3♢ | 94.2 | 96.1 | 96.4♢ | | | MATH (0-shot, CoT) | 73.8 | 41.1 | 64.5 | 76.6 | 71.1 | | 推理 | GPQA (0-shot, CoT) | 51.1 | – | 41.4 | 53.6 | 59.4 | | 工具使用 | BFCL | 88.5 | 86.5 | 88.3 | 80.5 | 90.2 | | 长上下文 | InfiniteBench/En.MC | 83.4 | – | 72.1 | 82.5 | – | | 多语言 | MGSM (0-shot, CoT) | 91.6 | – | 85.9 | 90.5 | 91.6 | Table 2 (节选): Llama 3 405B 与顶级模型在关键基准上的性能对比