6 推理
我们研究了两种主要技术,以使 Llama 3 405B 模型的推理⾼效:(1) 流⽔线并⾏和 (2) FP8 量化。我们已经公开发布了我们的 FP8 量化实现。
6.1 流⽔线并⾏
当使⽤ BF16 数字表⽰模型参数时,Llama 3 405B 不适合在装有 8 个 Nvidia H100 GPU 的单台机器的 GPU 内存中。为了解决这个问题,我们使⽤ BF16 精度在两台机器上的 16 个 GPU 上并⾏化模型推理。在每台机器内,⾼ NVLink 带宽使得可以使⽤张量并⾏(Shoeybi 等⼈,2019)。然⽽,跨节点的连接带宽较低且延迟较⾼,因此我们使⽤流⽔线并⾏(Huang 等⼈,2019)。
在使⽤流⽔线并⾏进⾏训练时,⽓泡是主要的效率问题(⻅第 3.3 节)。然⽽,在推理过程中它们不是问题,因为推理不涉及需要流⽔线刷新的反向传递。因此,我们使⽤微批处理来提⾼流⽔线并⾏推理的吞吐量。
我们评估了在推理⼯作负载中使⽤两个微批处理,在推理的关键值缓存预填充阶段和解码阶段,输⼊令牌为 4,096,输出令牌为 256 的效果。我们发现微批处理提⾼了相同本地批量⼤⼩的推理吞吐量;⻅图 24。这些改进来⾃于微批处理使得这两个阶段的微批处理能够并⾏执⾏。由于微批处理引起的额外同步点也增加了延迟,但总体上,微批处理仍然导致更好的吞吐量-延迟权衡。
6.2 FP8 量化
我们利⽤ H100 GPU 的原⽣ FP8 ⽀持进⾏低精度推理。为了启⽤低精度推理,我们对模型内的⼤多数矩阵乘法应⽤了 FP8 量化。特别是,我们量化了模型中前馈⽹络层中的⼤部分参数和激活,这些占推理计算时间的⼤约 50%。我们没有量化模型的⾃注意⼒层的参数。我们利⽤动态缩放因⼦以获得更好的准确性(Xiao 等⼈,2024b),优化我们的 CUDA 内核 15 以减少计算⽐例的开销。我们发现 Llama 3 405B 的质量对某些类型的量化敏感,并进⾏了⼀些额外的更改以提⾼模型输出质量:
- 类似于 Zhang 等⼈(2021),我们不在第⼀层和最后⼀层 Transformer 层中进⾏量化。
- ⾼困惑度的令牌(如⽇期)可能导致⼤的激活值。反过来,这可能导致 FP8 中的⾼动态缩放因⼦和⼤量下溢,导致解码错误。为了解决这个问题,我们将动态缩放因⼦上界限制为 1200。
- 我们使⽤⾏量化,为参数和激活矩阵计算跨⾏的缩放因⼦(⻅图 25)。我们发现这⽐张量量化⽅法更有效。
量化误差的影响。标准基准测试通常表明,即使没有这些缓解措施,FP8 推理也与 BF16 推理相当。然⽽,我们发现这样的基准测试并没有充分反映 FP8 量化的影响。当缩放因⼦没有上界限制时,模型偶尔会产⽣损坏的响应,尽管基准测试性能很强。我们发现,依靠基准测试来衡量量化引起的分布变化,不如分析使⽤ FP8 和 BF16 ⽣成的 100,000 个响应的奖励模型分数的分布更好。图 26 显⽰了我们量化⽅法的奖励分布结果。图中的结果表明,我们对 FP8 量化的⽅法对模型的响应影响⾮常有限。
效率的实验评估。图 27 描述了在预填充和解码阶段使⽤ Llama 3 405B 进⾏ FP8 推理的吞吐量-延迟权衡,使⽤ 4,096 个输⼊令牌和 256 个输出令牌。该图⽐较了第 6.1 节中描述的两台机器 BF16 推理⽅法的效率。结果表明,使⽤ FP8 推理在预填充阶段的吞吐量提⾼了最多 50%,在解码期间的吞吐量-延迟权衡显著更好。
7 视觉实验
我们进⾏了⼀系列实验,通过⼀种由两个主要阶段组成的组合⽅法将视觉识别能⼒整合到 Llama 3 中。⾸先,我们通过在⼤量的图像-⽂本对上引⼊和训练⼀组交叉注意⼒层(Alayrac 等⼈,2022),将预训练的图像编码器(Xu 等⼈,2023)和预训练的语⾔模型组合起来。这导致形成了图 28 所⽰的模型。其次,我们引⼊了时间聚合层和额外的视频交叉注意⼒层,它们在⼤量的视频-⽂本对上操作,以学习模型识别和处理视频中的时间信息。
采⽤组合⽅法进⾏基础模型开发有⼏个优点:
(1) 它使我们能够并⾏开发视觉和语⾔建模能⼒;
(2) 它避免了视觉数据标记、来⾃不同模态的标记背景困惑度差异以及模态间竞争所带来的联合预训练的复
杂性;
(3) 它保证了模型在仅⽂本任务上的性能不会因引⼊视觉识别能⼒⽽受到影响,
(4) 交叉注意⼒架构确保我们不需要在⽇益增⻓的⼤型语⾔模型(特别是每个变换器层中的前馈⽹络)中通过全分辨率图像来消耗计算资源,使推理过程更加⾼效。我们注意到我们的多模态模型仍在开发中,尚未准备好发布。
在第 7.6 和 7.7 节中呈现我们的实验结果之前,我们描述了⽤于训练视觉识别能⼒的数据处理、视觉组件的模型架构、这些组件训练的扩展⽅式,以及我们