The Llama 3 Herd of Models

下载 PDF

The Llama 3 Herd of Models - 中文验证版

英文原文卡片:llama3_2024.md

状态:已翻译。

元数据

计算设置

论文给出了极为详细的硬件信息。Llama 3 包括 8B、70B 和 405B 模型;旗舰 405B 预训练运行使用最多 16K 块 NVIDIA H100 GPU,每块 700W TDP、80GB HBM3,部署在 Meta 的 Grand Teton AI 服务器平台上。每台服务器有 8 块 GPU 和 2 个 CPU,服务器内 8 块 GPU 通过 NVLink 连接。405B 运行使用基于 Arista 7800 和 Minipack2 OCP 交换机的 RoCE 网络;较小的 Llama 3 模型使用 NVIDIA Quantum2 InfiniBand。两种网络均在 GPU 之间提供 400 Gbps 互联。

周边基础设施是计算设置的组成部分,而非附带信息。RoCE AI 集群包含 24K 块 GPU,采用三层 Clos 网络拓扑,但论文指出其中最多 16K 块 GPU 用于 Llama 3 预训练。存储使用 Meta 的 Tectonic 分布式文件系统,配备 240PB 容量、7,500 台 SSD 服务器、2 TB/s 持续吞吐量和 7 TB/s 峰值吞吐量。检查点保存每个 GPU 的模型状态,每个 GPU 大小从 1MB 到 4GB 不等。模型在 15.6T 个文本 token 上进行预训练,初始上下文阶段为 8K,随后进行长上下文预训练至 128K。

瓶颈

瓶颈是在每个子系统都无法回避的规模下进行稠密模型训练。405B 参数模型无法通过简单的数据并行装入并高效训练;参数、优化器状态、梯度、激活和 KV/上下文相关张量必须拆分到数千块 H100 上。通信必须尊重网络层次结构:服务器内通过 NVLink 的带宽最高、延迟最低,跨节点较低,跨汇聚层更低。存储必须在不使 16K 块 GPU 暂停过长时间的情况下吸收突发的检查点写入。

即使在长上下文效应出现之前,原始边界已经很大。405B 稠密模型在混合精度 Adam 训练状态下的下限约为 6.48 TB(按每参数 16 字节计算),这还不包括激活、临时缓冲区、重物化开销和碎片。对于 BF16 推理,仅权重就约 810 GB。以 126 层、8 个 KV 头、头维度 128 和 4096 个 token 的 prompt 计算,批次为 1 的 KV 缓存约 2.1 GB;在 128K 上下文下约 67.6 GB。这就是为什么推理服务部分不能仅按“参数数量”来解读:BF16 权重已超过一台 8 卡 H100 服务器,而长上下文 KV 缓存在批处理之前已消耗另一个加速器级别的内存切片。

可靠性同样是一个计算瓶颈。在 405B 预训练的 54 天快照期间,论文报告了 466 次任务中断:47 次计划内和 419 次意外中断。约 78% 的意外中断归因于已确认或疑似的硬件问题。单个慢速落后者可能拖慢数千块 GPU,论文甚至报告了由于温度对 GPU 动态电压和频率缩放的影响,导致 1-2% 的昼夜吞吐量波动。这既是机群工程,也是模型训练。

方法适配

主要适配是 4D 并行,顺序为 [TP, CP, PP, DP]。张量并行拆分单个权重张量,放置在离 NVLink 最近的位置,因为它需要高带宽和低延迟。流水线并行将层划分为阶段;论文修改了调度,使连续微批次数量可调,通过将层移出首尾阶段来均衡各阶段,使用交错减少气泡,并采用异步点对点通信。上下文并行拆分长序列,用于 128K 阶段。数据并行以 FSDP 实现,作为最外层维度,因为它可以通过异步预取和梯度归约容忍较高的网络延迟。

架构同样反映了推理和内存约束。Llama 3 使用分组查询注意力(GQA),8 个键值头,减少了 KV 张量大小并使上下文并行的 all-gather 操作成本更低。分词器使用 128K 词表,405B 模型使用 126 层,表示维度 16,384。训练从较小的批次和较短的序列开始以保持稳定性:序列长度 4,096 时 4M 个 token,在 252M 个 token 后序列长度 8,192 时 8M 个 token,在 2.87T 个 token 后 16M 个 token。长上下文训练被推迟,因为自注意力计算随序列长度呈二次增长。

在推理服务方面,论文使用流水线并行和 FP8。BF16 Llama 3 405B 无法装入一台 8 卡 H100 机器,因此 BF16 推理跨两台机器的 16 块 GPU 进行并行。在机器内部,NVLink 支持张量并行;跨机器时,较低的带宽和较高的延迟促使使用流水线并行。微批次处理改善了 4,096 个 token prompt 和 256 个 token 输出的吞吐量。FP8 利用 H100 的原生支持处理大多数矩阵乘法,采用逐行缩放、上限动态缩放因子,并排除第一个和最后一个 Transformer 层。

证据

表 4 报告了核心的训练效率证据。在 8,192 块 GPU 上以序列长度 8,192 运行时,405B 设置使用 TP=8、CP=1、PP=16、DP=64,每批次 16M 个 token,每 GPU 430 TFLOP/s,BF16 MFU 为 43%。在 16,384 块 GPU 上以相同序列长度运行时,使用 DP=128,每 GPU 400 TFLOP/s,MFU 为 41%。在 131,072 序列长度的长上下文阶段,使用 TP=8、CP=16、PP=16、DP=8,每批次 16M 个 token,每 GPU 380 TFLOP/s,MFU 为 38%。16K GPU 上 MFU 的轻微下降归因于需要降低每个 DP 组的批次大小以保持全局每批次 token 数不变。

运维证据同样重要。论文报告尽管有日常维护中断,有效训练时间仍超过 90%。意外中断类别包括 GPU 故障、GPU HBM3 内存故障、主机维护、GPU SRAM、GPU 系统处理器和静默数据损坏。作者构建了工具来减少启动/检查点时间、识别落后者并处理 NVLink/RoCE 故障模式。

推理部分提供了服务证据。BF16 405B 推理需要跨两台机器的 16 块 H100。微批次处理在相同的本地批次大小下改善了预填充和解码的吞吐量,以增加少量延迟换取更好的吞吐量-延迟平衡。FP8 推理在 100,000 条响应的奖励分数比较中分布影响可忽略,相比两台机器 BF16 基线提供高达 50% 的预填充吞吐量提升,并具有更好的解码吞吐量-延迟权衡。

历史影响

Llama 3 是开放权重稠密 LLM 训练的历史标志,因为它记录了 405B 模型背后的基础设施形态。早期的开放模型卡片通常报告参数数量和 token 数量;本文将其与 H100 机群拓扑、存储、检查点、故障类别、MFU、并行维度、长上下文训练和推理服务量化联系起来。它清楚地表明,这一规模的模型质量与集群调度、网络感知并行和可靠性工程密不可分。

局限

这些局限既有实践层面的,也有证据层面的。该运行需要远超通常可复现范围的基础设施:数千块 H100、高速网络结构、大规模分布式文件系统、定制调度、调优的集合通信和专门的运维保障。许多数据和安全性细节是概括性描述而非完全可复现的。论文提供了强有力的聚合指标,但在没有同等硬件和数据的情况下,无法对完整训练配方进行独立验证。FP8 推理服务前景广阔,但需要 H100 原生的低精度支持以及仔细的质量检查;朴素的 FP8 即使在标准基准测试看起来可接受时,也可能产生损坏的响应。

链接