备注 :回顾看过的论文,对目前看过的llama系列进行整理在此总结(注:笔者水平有限,若有描述不当之处,欢迎大家留言。后期会继续更新LLM系列,文生图系列,VLM系列,agent系列等。如果看完有收获,可以【点赞】【收藏】【加粉】 )
阐述的思维逻辑:会给出论文中的核心点和核心点的描述。
一句话总结: LLaMA 3 基于超过 15T 高质量 Tokens 的超大规模训练语料,采用 GQA 、128K 词表和高效架构设计,并通过 SFT、拒绝采样、PPO、DPO 等复杂多阶段 RL 对齐进行优化,形成从 8B、70B 到 400B+ 的完整模型体系,在多项评测中达到行业领先性能。
技术亮点 :
1 大规模训练数据: 预训练语料规模扩展至 15T tokens (约为 LLaMA 2 的 7 倍),显著增强了模型的通识、专业知识和多语言能力;同时上下文长度扩展到 8K。
2 高效架构设计: 全系列模型采用 Grouped-Query Attention (GQA) 和 128K 词汇表,大幅提升了推理效率和多语言表示能力,并提供了 8B、70B 等规模选择(规划推出 400B+ 旗舰模型)。
3 后训练 【SFT + 多阶段 RL 对齐】: 在预训练之后,LLaMA 3 采用了复杂的多阶段对齐流水线 ,融合了监督微调(SFT)、拒绝采样(Rejection Sampling) 、PPO (Proximal Policy Optimization)和 DPO(Direct Preference Optimization)等多种强化学习和偏好优化技术。通过多阶段协同,显著提升了模型在人类偏好、安全性、长文本生成和指令遵循等方面的表现。
备注:后续为机器翻译+人工矫正
摘要
现代人工智能(AI)系统由基础模型驱动。本文介绍了一套新的基础模型,称为 Llama 3。
它是一组语言模型,原生支持多语言、编码、推理和工具使用。我们最大的模型是一个具有 405B 参数的稠密 Transformer,并支持最高 128K tokens 的上下文窗口。本文对 Llama 3 进行了全面的实证评估。我们发现,在大量任务上,Llama 3 提供了可与 GPT-4 等领先语言模型相媲美的质量。我们公开发布了 Llama 3,包括 405B 参数语言模型的预训练版本和后训练版本,以及用于输入和输出安全的 Llama Guard 3 模型。本文还展示了我们将图像、视频和语音能力以"组合式方法"集成到 Llama 3 中的实验结果。我们观察到,这种方法在图像、视频和语音识别任务上与当前最先进方法具有竞争力。这些产生的模型尚未被广泛发布,因为仍处于开发过程中。
一 介绍
基础模型是语言、视觉、语音和/或其他模态的通用模型,旨在支持大量 AI 任务。它们构成了许多现代 AI 系统的基础。
现代基础模型的开发包括两个主要阶段:(1)预训练阶段,在该阶段中,模型使用大规模数据进行训练,任务通常较为简单,例如下一词预测或图像描述生成;(2)后训练阶段,在该阶段中,模型被调优以遵循指令、对齐人类偏好,并提升特定能力(例如编码和推理)。
在本文中,我们介绍一套新的语言基础模型,称为 Llama 3。Llama 3 模型组原生支持多语言、编码、推理和工具使用。我们最大的模型是一个稠密 Transformer,拥有 405B 参数,能够在最多 128K tokens 的上下文窗口中处理信息。该模型组的每个成员列于表 1。本文中呈现的所有结果均基于 Llama 3.1 模型,为简洁起见,我们在全文中将其简称为 Llama 3。
表1 Llama 3 Herd 模型概览。本文所有结果均基于 Lama 3.1 模型。
我们认为,开发高质量基础模型的关键杠杆有三个:数据、规模和复杂性管理。我们在开发过程中努力优化这三个方面:
• 数据。 与先前版本的 Llama(Touvron et al., 2023a,b)相比,我们提升了预训练和后训练数据的数量和质量。这些改进包括开发更精细的预训练数据预处理与筛选流程,以及开发更严格的后训练数据质量保证与过滤方法。我们在约 15T 的多语言 tokens 语料上预训练 Llama 3,而 Llama 2 仅为 1.8T tokens。
• 规模。 我们训练的模型规模远大于之前的 Llama 模型:我们的旗舰语言模型使用了 3.8 × 10^25 FLOPs 进行预训练,几乎是 Llama 2 最大版本的 50 倍。具体而言,我们在 15.6T 文本 tokens 上预训练了一个具有 405B 可训练参数的旗舰模型。正如基础模型的 scaling laws 所预期,我们的旗舰模型在相同训练流程中明显优于更小的模型。虽然 scaling laws 表明我们的旗舰模型的规模与我们的训练预算大致"计算最优(compute-optimal)",但我们也对更小模型进行了远超计算最优的更长时间训练。最终,这些模型在相同推理预算下优于计算最优配置的模型。我们进一步使用旗舰模型在后训练阶段提升这些小模型的质量。
• 复杂性管理。 我们做出了一些设计选择,以最大化模型开发过程的可扩展性。例如,我们选择采用标准的稠密 Transformer 模型结构(Vaswani et al., 2017,带部分轻量改动),而不是采用专家混合(MoE)模型(Shazeer et al., 2017),以最大化训练稳定性。类似地,我们采用相对简单的后训练流程,基于监督微调(SFT)、拒绝采样(RS)及直接偏好优化(DPO;Rafailov et al. (2023)),而没有采用更复杂的强化学习算法(Ouyang et al., 2022;Schulman et al., 2017),因为后者往往更不稳定且更难扩展。
我们的工作成果是 Llama 3:一个包含三个多语言语言模型的模型组,分别拥有 8B、70B 和 405B 参数。我们在大量基准数据集上评估了 Llama 3 的性能,这些数据集涵盖广泛的语言理解任务。此外,我们进行了大量的人类评估,将 Llama 3 与竞争模型进行了比较。旗舰 Llama 3 模型在关键基准上的性能概览展示于表 2。我们的实验评估表明,旗舰模型在多类任务上与 GPT-4(OpenAI, 2023a)等领先语言模型表现相当,并接近当前最先进水平。我们的小模型在同规模模型中表现最佳,优于其他具有相似参数规模的模型(Bai et al., 2023;Jiang et al., 2023)。Llama 3 在有用性与无害性之间也取得了比其前代(Touvron et al., 2023b)更好的平衡。我们在第 5.4 节中对 Llama 3 的安全性进行了详细分析。
表 2 微调后的 Lama3 模型在关键基准测试中的表现。该表比较了 Llama3的 8B、70B 和4058 版本与竟争模型的性能。我们用粗体标出了三个模型规模等效类别中性能最佳的模型。使用5次提示(无CoT)获得的结果。不使用CoT获得的结果。使用零次提示获得的结果。
我们以更新后的 Llama 3 社区许可证公开发布全部三种 Llama 3 模型;见 https://llama.meta.com。这包括我们 405B 参数语言模型的预训练和后训练版本,以及用于输入和输出安全性的新版 Llama Guard 模型(Inan et al., 2023)。我们希望旗舰模型的开放发布能够激发研究社区的新一轮创新,并加速朝人工通用智能(AGI)负责任发展的道路。
作为 Llama 3 开发过程的一部分,我们还开发了模型的多模态扩展,使其具备图像识别、视频识别和语音理解能力。这些模型仍在积极开发中,尚未准备发布。除语言模型结果外,本文还展示了我们在这些多模态模型上的初步实验结果。
二 总体概述
Llama 3 的模型架构如图 1 所示。我们的 Llama 3 语言模型的开发包含两个主要阶段:
图 1 展示了 Lama3 的整体架构和训练过程。Llama3 是-个基于 Transformer 的语言模型,用于预测文本序列中的下一个词元。详情请参见正文。
**语言模型预训练。**我们首先将一个大规模、多语言的文本语料转换为离散 token,并在所得数据上对大型语言模型(LLM)进行预训练,以执行下一 token 预测。在语言模型预训练阶段,模型学习语言结构,并从其"阅读"的文本中获得大量关于世界的知识。为了有效做到这一点,预训练需要在极大规模上进行:我们使用 8K token 的上下文窗口,对一个拥有 405B 参数的模型在 15.6T token 上进行预训练。在这一标准预训练阶段之后,我们进行持续预训练,将模型支持的上下文窗口扩展到 128K token。详细内容见第 3 节。
**语言模型后训练。**预训练的语言模型对语言有着丰富的理解,但尚不能很好地遵循指令,也不能完全表现得像我们期望的助手。我们通过多轮方式使用人类反馈对模型进行对齐,每一轮包括在指令微调数据上的监督微调(SFT)以及直接偏好优化(DPO;Rafailov 等,2024)。在这一后训练阶段²,我们也整合新的能力,例如工具使用,并在编码、推理等其他领域观察到显著提升。详情见第 4 节。最后,安全缓解措施也在后训练阶段被加入模型中,细节见第 5.4 节。
最终得到的模型具备丰富的能力。它们可以使用至少八种语言回答问题,编写高质量代码,解决复杂推理问题,并能够开箱即用或以 zero-shot 方式使用工具。
我们还进行了实验,通过组合式方法为 Llama 3 增加图像、视频和语音能力。我们研究的方法包含图 28 所示的三个附加阶段:
• **多模态编码器预训练。**我们为图像和语音训练单独的编码器。我们在大量图文对上训练我们的图像编码器,从而让模型学习视觉内容与其自然语言描述之间的关系。我们的语音编码器使用自监督方法进行训练,该方法会遮蔽语音输入的一部分,并尝试通过离散 token 表示重建被遮蔽的部分,从而学习语音信号的结构。图像编码器的细节见第 7 节,语音编码器的细节见第 8 节。
• **视觉适配器训练。**我们训练一个适配器,将预训练的图像编码器集成到预训练语言模型中。该适配器由一系列交叉注意力层组成,它们将图像编码器的表示输入到语言模型里。适配器在图文对上进行训练,这使得图像表示与语言表示对齐。在适配器训练期间,我们也更新图像编码器的参数,但刻意不更新语言模型的参数。我们还在图像适配器之上训练一个视频适配器,使用成对的视频-文本数据,从而让模型能够跨帧聚合信息。详见第 7 节。
• **语音适配器训练。**最后,我们通过一个适配器将语音编码器整合到模型中,该适配器将语音编码转换为可直接输入到微调后语言模型的 token 表示。适配器和编码器的参数在监督微调阶段被联合更新,以实现高质量的语音理解。在语音适配器训练期间我们不改变语言模型。此外,我们还集成了一个文本转语音系统。详情见第 8 节。
我们的多模态实验得到的模型能够识别图像和视频的内容,并支持通过语音接口进行交互。这些模型仍在开发中,目前尚未准备好发布。
三 预训练
语言模型预训练包括:(1) 针对大规模训练语料的整理与过滤,(2) 开发用于确定模型规模的模型架构及相应的缩放定律,(3) 开发用于在大规模条件下进行高效预训练的技术,以及 (4) 开发预训练配方。我们在下面分别介绍这些组成部分。
3.1 预训练数据
我们从多种数据源构建语言模型预训练数据集,这些数据源包含截至 2023 年底的知识。我们对每个数据源应用多种去重方法和数据清洗机制,以获得高质量的 token。我们移除包含大量个人可识别信息(PII)的网站域,以及已知存在成人内容的域。
3.1.1 Web 数据整理
我们使用的数据中有很大一部分来自网络,下面我们描述对这些数据的清洗过程。
**PII 和安全过滤。**在其他缓解措施之外,我们实现了过滤器,用于移除以下来源的数据:可能包含不安全内容或大量 PII 的网站、根据多种 Meta 安全标准被评为有害的域,以及已知包含成人内容的域。
**文本抽取和清洗。**我们处理非截断网页文档的原始 HTML 内容,以提取高质量且多样的文本。为此,我们构建了一个自定义解析器,用于抽取 HTML 内容,并在样板内容(boilerplate)移除的精准度以及内容召回率之间做优化。我们在人工评估中对解析器的质量进行评估,将其与优化用于文章内容的流行第三方 HTML 解析器进行比较,并发现我们的解析器表现良好。我们也对包含数学与代码内容的 HTML 页面进行仔细处理,以保留这些内容的结构。我们保留 image alt 属性中的文本,因为数学内容常被表示为预渲染图像,而数学公式也包含在 alt 属性中。我们实验性评估了不同的清洗配置,发现 markdown 对主要在 web 数据上训练的模型性能有害,因此我们移除所有 markdown 标记。
**去重。**我们在 URL、文档和行级别应用多轮去重:
• **URL 级去重。**我们对整个数据集进行 URL 级去重,并保留每个 URL 对应页面的最新版本。
• **文档级去重。**我们在整个数据集上使用全局 MinHash(Broder, 1997)去重,以移除近似重复文档。
• **行级去重。**我们进行类似 ccNet(Wenzek et al., 2019)的激进行级去重。在每 3000 万文档的桶中,我们移除出现超过 6 次的行。虽然我们的人工定性分析显示,行级去重不仅移除了来自各类网站的剩余样板内容,如导航菜单、cookie 警告,也移除了频繁出现的高质量文本,但我们的实证评估显示该策略带来了显著提升。
**启发式过滤。**我们开发了启发式规则,用于移除其他低质量文档、异常值以及包含过度重复内容的文档。启发式示例包括:
• 使用重复 n-gram 覆盖率(Rae et al., 2021)移除由重复内容(如日志或错误信息)构成的行。这些行可能非常长且唯一,因此无法通过行级去重过滤。
• 使用"脏词"计数(Raffel et al., 2020)过滤未在域名封锁列表中但包含成人内容的网站。
• 使用 token 分布的 KL 散度过滤包含相对于训练语料分布过多异常 token 的文档。
**基于模型的质量过滤。**此外,我们尝试使用不同的基于模型的质量分类器来筛选高质量 token。这些方法包括使用 fasttext(Joulin et al., 2017)等快速分类器来识别某段文本是否可能被 Wikipedia 引用(Touvron et al., 2023a),以及使用更耗算力的基于 Roberta 的分类器(Liu et al., 2019a),这些分类器基于 Llama 2 的预测结果训练。为了基于 Llama 2 训练质量分类器,我们构建一个已清洗的网页文档训练集,描述质量要求,并指示 Llama 2 的聊天模型判断文档是否符合这些要求。出于效率考虑,我们使用 DistilRoberta(Sanh et al., 2019)为每篇文档生成质量分数。我们实验性评估了不同质量过滤配置的有效性。
**代码与推理数据。**与 DeepSeek-AI 等(2024)的做法类似,我们构建了领域特定的流水线,用于抽取与代码和数学相关的网页。具体而言,代码和推理分类器均为 DistilRoberta 模型,它们在由 Llama 2 标注的网页数据上训练。与前述通用质量分类器不同,我们进行了提示微调,以更好捕获包含数学推导、STEM 领域推理以及自然语言与代码混合内容的网页。由于代码和数学的 token 分布与自然语言有显著差异,这些流水线实现了领域特定的 HTML 抽取、定制化文本特征以及过滤启发式方法。
**多语言数据。**与我们对英文数据的处理类似,我们实现了过滤器,用于移除可能包含 PII 或不安全内容的网站。我们的多语言文本处理流水线具有以下特有功能:
• 使用基于 fasttext 的语言识别模型将文档分类为 176 种语言。
• 对每种语言的数据执行文档级与行级去重。
• 应用语言特定的启发式规则和基于模型的过滤器来移除低质量文档。
此外,我们使用基于多语言 Llama 2 的分类器对多语言文档进行质量排序,以确保优先保留高质量内容。我们通过实验确定用于预训练的多语言 token 数量,并在英文与多语言基准表现之间进行权衡。
3.1.2 确定数据混合比例
要获得高质量的语言模型,关键在于仔细确定预训练数据混合中不同数据来源的比例。我们在确定数据混合时的主要工具是知识分类和缩放定律实验。
**知识分类。**我们开发了一个分类器,用于对网页数据中包含的信息类型进行分类,以更有效地确定数据混合比例。我们使用该分类器对在网络中过度代表的类别进行下采样,例如艺术与娱乐类数据。
**数据混合的缩放定律。**为了确定最佳的数据混合,我们执行缩放定律实验,在这些实验中,我们在某个数据混合上训练多个小模型,并使用其性能来预测一个大模型在该混合数据下的表现(见第 3.2.1 节)。我们对不同的数据混合多次重复这个过程以选择一个新的候选数据混合。随后,我们在这个候选数据混合上训练一个更大的模型,并在多个关键基准上评估该模型的性能。
**数据混合总结。**我们的最终数据混合大致包含:50% 通用知识相关的 tokens,25% 数学与推理相关 tokens,17% 代码 tokens,8% 多语言 tokens。
3.1.3 数据退火
实证上,我们发现对少量高质量代码和数学数据进行退火(见第 3.4.3 节)可以提升预训练模型在关键基准上的性能。类似于 Li et al. (2024b),我们使用一种退火数据混合,在其中对部分高质量领域数据进行上采样。我们不在退火数据中包含任何常用基准的训练集。这使我们能够评估 Llama 3 的真实少样本学习能力和域外泛化能力。
遵循 OpenAI (2023a),我们评估了在退火过程中加入 GSM8k (Cobbe et al., 2021) 和 MATH (Hendrycks et al., 2021b) 训练集的有效性。我们发现,退火让一个预训练的 Llama 3 8B 模型在 GSM8k 和 MATH 验证集上的性能分别提升了 24.0% 和 6.4%。然而,对 405B 模型的提升可以忽略不计,表明我们的旗舰模型具有强大的上下文学习和推理能力,并不需要特定领域数据来获得强性能。
**使用退火评估数据质量。**类似 Blakeney et al. (2024),我们发现退火使我们能够判断小规模领域数据集的价值。我们通过对 50% 训练进度的 Llama 3 8B 模型进行线性退火,将学习率在 40B tokens 上线性降为 0 来衡量这些数据集的价值。在这些实验中,我们将 30% 权重分配给新的数据集,剩余 70% 权重分配给默认的数据混合。使用退火评估新数据来源比对每个小数据集都进行缩放定律实验更高效。
3.2 模型架构
Llama 3 使用标准的、密集的 Transformer 架构(Vaswani et al., 2017)。在模型架构方面,它与 Llama 和 Llama 2(Touvron et al., 2023a, 2023b)并没有显著偏离;我们的性能提升主要来自数据质量与多样性的改进,以及训练规模的扩大。
我们相较于 Llama 2 做了几项小的修改:
• 我们使用 grouped query attention(GQA;Ainslie et al., 2023)并配备 8 个 key-value heads,以提升推理速度并减少解码过程中的 KV cache 大小。
• 我们使用一种注意力 mask,防止同一序列中不同文档之间的自注意力。 我们发现这种改变在标准预训练中影响有限,但在超长序列的持续预训练中非常重要。
• 我们使用 128K 词表。其中包含来自 tiktoken3 tokenizer 的 100K tokens,以及 28K 额外 tokens 用于更好支持非英语语言。与 Llama 2 tokenizer 相比,新 tokenizer 在一个英语样本上的压缩率从 3.17 提升到 3.94 字符/词元。这使模型在相同训练计算量下"读取"更多文本。
我们还发现,从部分非英语语言添加 28K tokens 同时改善了压缩率和下游性能,并且不会影响英语分词。
• 我们将 RoPE 的 base frequency 超参数提升到 500,000。这使我们更好地支持更长上下文;Xiong et al. (2023) 显示该数值在 32,768 context 长度下表现良好。
Llama 3 405B 使用的架构包含:126 层、16,384 的 token 表示维度、128 个注意力头;详见表 3。这导致模型规模在我们的数据与训练预算(3.8 × 10²⁵ FLOPs)下大致达到计算最优。
表3 Lama3 关键超参数概述。我们展示了 8B、70B 和 405B 语言模型的设置。
3.2.1 缩放定律
我们开发缩放定律(Hoffmann et al., 2022;Kaplan et al., 2020)以确定在给定预训练计算预算下旗舰模型的最优模型规模。除了确定最优模型规模之外,一个主要挑战是预测旗舰模型在下游基准任务上的性能,因为:(1) 现有缩放定律通常只预测下一 token 的预测损失,而非具体基准任务性能。(2) 缩放定律可能噪声大且不可靠,因为它们通常基于小计算预算的预训练运行(Wei et al., 2022b)。
为解决这些问题,我们实施了一个两阶段方法,来开发可以准确预测下游基准性能的缩放定律:
-
首先,我们建立计算最优模型在下游任务中的负对数似然与训练 FLOPs 之间的相关性。
-
接着,我们将下游任务中的负对数似然与任务准确率建立关联,使用缩放定律模型和使用更高 FLOPs 训练的旧模型(尤其是 Llama 2 系列)。
该方法使我们可以在给定训练 FLOPs 的情况下预测计算最优模型的下游性能。我们使用类似的方法来选择预训练数据混合(见第 3.4 节)。
缩放定律实验 。具体来说,我们通过在以下条件下预训练模型来构建缩放定律:计算预算范围:6 × 10¹⁸ FLOPs 到 10²² FLOPs。 每个预算下训练多种规模的模型:**40M → 16B 参数。**训练设置:使用 cosine 学习率调度,前 2000 步线性 warmup。峰值学习率:2×10⁻⁴ ~ 4×10⁻⁴(取决于模型规模)。cosine decay 到峰值的 0.1。weight decay = 当前学习率 × 0.1。每个计算规模使用固定 batch size:250K ~ 4M。
这些实验产生了图 2 中的 IsoFLOPs 曲线。曲线中的损失是在一个独立的验证集上测量得到的。我们使用二次多项式对测得的损失值进行拟合,并识别出每条抛物线的最小值。我们将抛物线的最小值称为对应预训练计算预算下的"计算最优模型(compute-optimal model)"。
我们使用以此方式识别出的计算最优模型来预测在给定计算预算下的最优训练 token 数量。为此,我们假设计算预算 C 与最优训练 token 数量 N⋆(C) 之间满足幂律关系:

我们利用图 2 的数据对 A 和 α 进行拟合,得到 (α, A) = (0.53, 0.29);相应拟合结果如图 3 所示。将该 scaling law 外推到 3.8 × 10²⁵ FLOPs 时,结果表明应在 16.55T 个 token 上训练一个 402B 参数的模型。
图 2 显示了 6x1018 至 1022 FLOPs 之间的等容浮点运算(IsoFLOPs)曲线。损失函数是在预留验证集上的负对数似然值。我们使用二次多项式来近似每个计算规模下的测量值。
一个重要的观察是:随着计算预算的增加,IsoFLOPs 曲线在最小值附近变得更加平缓。这意味着旗舰模型在模型规模与训练 token 数量的权衡中,对小变化具有相对鲁棒性。基于这一观察,我们最终决定训练一个具有 405B 参数的旗舰模型。
图 3 显示了已识别的计算最优模型中训练样本的数量与预训练计算预算的关系。图中也包含了拟合的缩放定律预测。计算最优模型对应于图 2中的抛物线最小值。
**预测下游任务上的表现。**我们使用得到的计算最优模型来预测旗舰版 Llama 3 模型在基准数据集上的表现。首先,我们将基准任务中"正确答案的(归一化)负对数似然"与训练 FLOPs 进行线性相关分析。在该分析中,我们仅使用在上述数据混合上训练、计算量最高达到 10²² FLOPs 的 scaling law 模型。接下来,我们利用 scaling law 模型和使用 Llama 2 数据混合与 tokenizer 训练的 Llama 2 模型,建立 log-likelihood 与准确率之间的 S 型关系。我们在 ARC Challenge 基准上的实验结果展示于图 4 中。我们发现,这种跨越四个数量级的两步 scaling law 预测方法相当准确:它仅略微低估了旗舰版 Llama 3 模型的最终表现。
图 4 ARC Challenge 的标度律预测。左图:ARCChallenge 基准测试中正确答案的归一化负对数似然值与预训练 FLOPs的函数关系。右图:ARCChallenge 基准测试准确率与正确答案的归一化负对数似然值的函数关系。此分析使我们能够在预训练开始前预测模型在 ARC Challenge 基准测试上的性能。详情请参见正文。
3.3 基础设施、扩展性与效率
我们描述支持 Llama 3 405B 规模化预训练的硬件与基础设施,并讨论若干提升训练效率的优化。
3.3.1 训练基础设施
Llama 1 和 Llama 2 模型最初是在 Meta 的 AI Research SuperCluster(Lee and Sengupta, 2022)上训练的。随着模型规模进一步扩大,Llama 3 的训练迁移至 Meta 的生产集群(Lee et al., 2024)。这一设置在大规模训练中提供了生产级的可靠性。
计算(Compute)。Llama 3 405B 在最多 16K 张 H100 GPU 上训练,每张 GPU 运行在 700W TDP,配备 80GB HBM3,使用 Meta 的 Grand Teton AI 服务器平台(Matt Bowman, 2022)。每台服务器包含八张 GPU 和两颗 CPU。在服务器内部,八张 GPU 通过 NVLink 互联。训练任务通过 Meta 的全球规模训练调度器 MAST(Choudhury et al., 2024)进行调度。
存储(Storage)。Tectonic(Pan et al., 2021),即 Meta 的通用分布式文件系统,被用于构建 Llama 3 预训练的存储结构(Battey and Gupta, 2024)。它由 7,500 台配备 SSD 的服务器提供 240 PB 的存储空间,并支持持续 2 TB/s 的吞吐量,以及峰值 7 TB/s 的吞吐量。一个主要挑战是处理训练过程中突发性的 checkpoint 写入,这些写入会在短时间内使存储结构完全饱和。Checkpoint 保存每张 GPU 的模型状态(从 1 MB 到 4 GB 不等),用于恢复与调试。我们致力于在 checkpoint 过程中最小化 GPU 的暂停时间,并尽可能提升 checkpoint 频率,以减少恢复时的工作损失。
网络(Network)。Llama 3 405B 使用基于 Arista 7800 和 Minipack2(Open Compute Project4)交换机的 RoCE(RDMA over Converged Ethernet)网络。Llama 3 家族中的较小模型使用 Nvidia Quantum2 InfiniBand 网络。无论是 RoCE 还是 InfiniBand,GPU 间互连均为 400 Gbps。尽管这两类网络技术不同,我们对它们进行优化,使其在大规模训练任务中达到等效性能。以下重点介绍我们自研的 RoCE 网络:
• 网络拓扑。我们的 RoCE AI 集群由 24K 块 GPU 组成,采用三层 Clos 网络结构(Lee et al., 2024)。底层每个机架包含 16 张 GPU,由两台服务器提供,连接到一个 Minipack2 ToR 交换机。中间层中,192 个机架通过集群交换机连接,形成一个拥有 3,072 张 GPU、具备完全双向带宽的 Pod(无过度订阅)。顶层中,同一数据中心建筑内的 8 个 Pod 通过聚合交换机互相连接,构成一个 24K GPU 的集群。然而,聚合层不提供完全无过度订阅的带宽,其过度订阅比约为 1:7。我们的模型并行方法(见 3.3.2)和训练调度器(Choudhury et al., 2024)均经过优化,使其能够感知网络拓扑结构,最大限度减少跨 Pod 的网络通信。
• 负载均衡(Load balancing)。LLM 训练产生非常大的网络流量(fat flows),传统如 ECMP(Equal-Cost Multi-Path)路由难以将其均匀分布到所有网络路径。为解决此问题,我们采用两种技术:其一,我们的 collective 通信库在两张 GPU 之间创建 16 条网络流,而非传统的单条,从而降低单流量的负载并提供更多可负载均衡的流;其二,我们的增强型 ECMP(E-ECMP)协议通过对 RoCE 包头的更多字段进行哈希计算,从而有效地将这 16 条流均匀分布到不同网络路径上。
• 拥塞控制(Congestion control)。我们在 spine 层使用深缓冲交换机(Gangidi et al., 2024)来容纳由 collective 通信模式引起的瞬时拥塞和缓冲压力。此设置可限制由慢服务器导致的持续拥塞和网络反压影响,这类现象在训练过程中十分常见。最终,由于 E-ECMP 提升了负载均衡能力,我们在 24K GPU 集群中运行训练时,无需使用传统拥塞控制算法,如 DCQCN(Data Center Quantized Congestion Notification)。
表 4 Llama 3 4058 预训练各阶段的扩展配置和MFU。有关每种并行类型的描述,请参见正文和图5.
3.3.2 用于模型扩展的并行策略
为了对我们的最大模型进行规模化训练,我们使用 4D 并行------即四种不同并行方式的组合------来对模型进行切分。该方法能够高效地将计算分布在大量 GPU 上,并确保每张 GPU 的模型参数、优化器状态、梯度以及激活值均能放入其 HBM 中。我们对 4D 并行的实现如图 5 所示。它结合了张量并行(TP;Krizhevsky et al., 2012;Shoeybi et al., 2019;Korthikanti et al., 2023)、流水线并行(PP;Huang et al., 2019;Narayanan et al., 2021;Lamy-Poirier, 2023)、上下文并行(CP;Liu et al., 2023a)以及数据并行(DP;Rajbhandari et al., 2020;Ren et al., 2021;Zhao et al., 2023b)。
图 5 4D 并行的示意图。
GPU 按照并行维度顺序 [TP, CP, PP, DP] 被划分为不同的并行组,其中 DP 表示 FSDP。在此示例中,16 个 GPU 被配置为 |TP| = 2、|CP| = 2、|PP| = 2、|DP| = 2 的组大小。一个 GPU 在 4D 并行中的位置由一个向量 [D1, D2, D3, D4] 表示,其中 Di 表示其在第 i 个并行维度中的索引。在此示例中,GPU0[TP0, CP0, PP0, DP0] 与 GPU1[TP1, CP0, PP0, DP0] 位于同一个 TP 组;GPU0 与 GPU2 位于同一个 CP 组;GPU0 与 GPU4 位于同一个 PP 组;GPU0 与 GPU8 位于同一个 DP 组。
张量并行将单个权重张量在多个设备上切分为多个区块。流水线并行按层将模型纵向划分为不同阶段,使不同设备能够并行处理模型流水线的不同部分。上下文并行将输入上下文划分为多个片段,从而减少超长序列输入时的内存瓶颈。我们使用完全分片数据并行(FSDP;Rajbhandari et al., 2020;Ren et al., 2021;Zhao et al., 2023b),它对模型、优化器和梯度进行分片,同时执行数据并行,即在多个 GPU 上并行处理数据,并在每一步训练后进行同步。在 Llama 3 中,我们使用 FSDP 对优化器状态和梯度进行分片,但对模型分片不在前向计算后重新分片,以避免反向传播中进行额外的 all-gather 通信。
GPU 利用率。 通过对并行配置、硬件和软件的精细调优,我们在表 4 所示配置下实现了 38--43% 的 BF16 模型 FLOPs 利用率(MFU;Chowdhery et al., 2023)。从 8K GPU、DP=64 的 43% MFU,到 16K GPU、DP=128 的 41% MFU,轻微下降的原因在于:为了保持训练过程中的全局 token 数量不变,每个 DP 组的 batch size 必须降低。
流水线并行改进。 现有流水线实现存在若干挑战:
• Batch size 限制。 当前实现要求每 GPU 的 batch size 能被流水线阶段数整除。例如图 6 中,深度优先(DFS;Narayanan et al., 2021)调度要求 N = PP = 4,而广度优先调度(BFS;Lamy-Poirier, 2023)要求 N = M,其中 M 是 micro-batch 总数、N 是同一阶段连续执行的 micro-batch 数。然而预训练通常需要在 batch size 上有更灵活的调整。
• 内存不平衡。 现有流水线并行实现会导致资源消耗不平衡。第一阶段由于包含嵌入层及 warm-up micro-batches,因此消耗更多内存。
• 计算不平衡。 在模型的最后一层之后,需要计算输出与损失,这使得该阶段成为执行延迟的瓶颈。
为解决这些问题,我们在图 6 中展示了修改后的流水线调度,它允许灵活设置 N------例如此处的 N = 5,从而可以在每个 batch 中运行任意数量的 micro-batches。这使我们能够在以下情形更灵活:(1) 当在大规模训练中 batch size 受到限制时,可使用少于流水线阶段数的 micro-batches;(2) 当需要隐藏点对点通信开销时,可使用更多 micro-batches,从而在 DFS 与 BFS 之间取得通信效率与内存效率的最佳平衡。为平衡流水线,我们分别从第一和最后阶段各减少一层 Transformer。意味着第一阶段的模型块仅包含嵌入层,而最后阶段的模型块仅包含输出投影与损失计算。为减少流水线气泡(pipeline bubbles),我们使用 interleaved 调度(Narayanan et al., 2021),每个流水线 rank 上有 V 个流水线阶段,总体气泡比例为 (PP − 1) / (V × M)。此外,我们采用异步点对点通信来加速训练,特别是在 document mask 引入额外计算不平衡时格外有益。我们启用了 TORCH_NCCL_AVOID_RECORD_STREAMS 以减少异步通信带来的内存开销。最后,为降低内存成本,我们基于详细的内存分配分析,提前释放不会再次用于计算的张量,包括流水线阶段的输入和输出张量。通过这些优化,我们能够在不使用激活检查点(activation checkpointing)的情况下,以 8K token 序列完成 Llama 3 的预训练。
图 6 Llama 3 中流水线并行的示意图。
流水线并行将八个流水线阶段(0 到 7)划分到四个流水线 rank(PP rank 0 到 3)上,其中 rank 0 的 GPU 运行阶段 0 和阶段 4,rank 1 的 GPU 运行阶段 1 和阶段 5,依此类推。彩色块(0 到 9)表示一个微批序列,其中 M 是微批总数,N 是同一阶段前向或反向中连续微批的数量。我们的关键洞见是使 N 可调。
长序列的上下文并行。 为提升长上下文训练的内存效率,并使 Llama 3 能够训练长达 128K 的超长序列,我们采用上下文并行(CP)。在 CP 中,我们在序列维度进行分片,具体地,将输入序列划分为 2 × CP 个区块,使每个 CP rank 能接收两个区块,以改善负载平衡。第 i 个 CP rank 接收第 i 个区块和第 (2 × CP − 1 − i) 个区块。
不同于现有的基于 ring 的 CP 通信实现(Liu et al., 2023a),我们采用基于 all-gather 的方法:首先对 key (K) 和 value (V) 张量执行 all-gather,然后对本地 query (Q) 张量块计算注意力。虽然 all-gather 的通信延迟在关键路径上暴露,但我们仍选择该方法,主要基于两点原因:(1) all-gather 方式更容易且更灵活地支持不同类型的注意力 mask,例如 document mask;(2) 由于采用 GQA(Ainslie et al., 2023),K 和 V 的大小远小于 Q,因此 all-gather 的通信开销很小。因此注意力计算的时间复杂度 (O(S²)) 远大于 all-gather 的复杂度 (O(S)),其中 S 是完整因果 mask 中的序列长度,使得 all-gather 的开销可以忽略不计。
感知网络的并行配置。 并行维度的顺序 [TP, CP, PP, DP] 是基于网络通信需求优化的。最内层并行需要最高的带宽和最低的延迟,因此通常限制在同一服务器内;最外层并行会跨越多跳网络,应能容忍更高延迟。因此,我们按带宽和延迟需求排列并行维度顺序为 [TP, CP, PP, DP]。DP(即 FSDP)作为最外层并行,因为它可通过异步预取分片权重和异步归约梯度来容忍更高的网络延迟。在不发生 GPU 内存溢出的情况下确定最优并行配置并最小化通信开销非常具有挑战性。我们构建了内存消耗估计器与性能预测工具,用于探索各种并行配置、预测整体训练性能,并有效识别内存瓶颈。
数值稳定性。 通过比较不同并行设置下的训练损失,我们修复了若干影响训练稳定性的数值问题。为确保训练收敛,我们在多个 micro-batches 的反向传播中使用 FP32 梯度累积,并在 FSDP 的数据并行 worker 间以 FP32 执行 reduce-scatter。对于在前向中多次使用的中间张量(如视觉编码器输出),其反向梯度同样以 FP32 累积。
3.3.3 集体通信
我们为 Llama 3 提供的集体通信库基于 Nvidia 的 NCCL 库的一个分支,称为 NCCLX。
NCCLX 显著提升了 NCCL 的性能,尤其是在高延迟网络下。回顾一下,并行维度的顺序为 [TP, CP, PP, DP],其中 DP 对应 FSDP。最外层的并行维度 PP 和 DP 可能通过多跳网络进行通信,延迟可高达几十微秒。原始的 NCCL 集体操作------FSDP 中的 all-gather 和 reduce-scatter,以及 PP 中的点对点通信------都需要数据分块和分阶段的数据拷贝。这种方法带来了若干低效问题,包括:(1) 需要通过网络交换大量小的控制消息以促进数据传输;(2) 额外的内存拷贝操作;(3) 通信过程中额外的 GPU 周期消耗。在 Llama 3 的训练中,我们通过调整分块和数据传输以适应我们的网络延迟(对于大规模集群,延迟可高达几十微秒)来解决这些低效问题的一部分。我们还允许小型控制消息以更高的优先级穿越网络,特别是避免在深缓冲核心交换机中被阻塞。我们针对未来 Llama 版本的持续工作涉及在 NCCLX 中进行更深层次的改动,以整体解决上述所有问题。
3.3.4 可靠性与运维挑战
16K GPU 训练的复杂性和潜在故障场景超过了我们以往操作的更大 CPU 集群。此外,训练的同步特性使其容错能力较低------单个 GPU 故障可能需要重启整个任务。尽管面临这些挑战,对于 Llama 3,我们在支持自动化集群维护(如固件和 Linux 内核升级,Vigraham 和 Leonhardi, 2024)的同时,实现了超过 90% 的有效训练时间,这些维护操作每天至少会导致一次训练中断。
有效训练时间衡量的是用于实际训练的时间占总经过时间的比例。
在为期 54 天的预训练快照期间,我们共经历 466 次任务中断。其中,47 次是计划内中断,原因包括自动维护操作(如固件升级)或操作人员发起的操作(如配置或数据集更新)。其余 419 次为意外中断,如表 5 所示。约 78% 的意外中断归因于确认的硬件问题,如 GPU 或主机组件故障,或疑似硬件相关问题,如静默数据损坏和计划外的单个主机维护事件。GPU 问题是最大的类别,占所有意外问题的 58.7%。尽管故障数量众多,但在此期间,只有三次需要显著人工干预,其余问题均通过自动化处理。
表5:Llama 3 4058 预训练 54 天期间意外中断的根本原因分类。约78% 的意外中断归因于已确认或疑似的硬件问题。
为了提高有效训练时间,我们减少了任务启动和检查点保存的时间,并开发了用于快速诊断和问题解决的工具。我们广泛使用 PyTorch 内置的 NCCL flight recorder(Ansel 等, 2024),该功能将集体操作的元数据和堆栈信息捕获到环形缓冲区,从而允许我们在大规模下快速诊断挂起和性能问题,特别是针对 NCCLX。利用该工具,我们可以高效记录每次通信事件及每个集体操作的持续时间,并在 NCCLX 看门狗或心跳超时时自动导出跟踪数据。我们通过在线配置更改(Tang 等, 2015)在生产环境中有选择地启用更高计算量的跟踪操作和元数据收集,而无需代码发布或任务重启。
在大规模训练中调试问题复杂化的原因之一是网络中 NVLink 和 RoCE 的混合使用。通过 NVLink 的数据传输通常通过 CUDA 内核发出的 load/store 操作进行,而远程 GPU 或 NVLink 连接的故障通常表现为 CUDA 内核中的 load/store 操作停滞而不返回明确的错误代码。NCCLX 通过与 PyTorch 的紧密协同设计,提高了故障检测和定位的速度与准确性,使 PyTorch 可以访问 NCCLX 的内部状态并跟踪相关信息。尽管 NVLink 故障导致的停滞无法完全避免,但我们的系统会监控通信库状态,并在检测到此类停滞时自动超时。此外,NCCLX 跟踪每次 NCCLX 通信的内核和网络活动,并提供失败 NCCLX 集体操作内部状态的快照,包括所有 rank 之间已完成和待处理的数据传输。我们分析这些数据以调试 NCCLX 的扩展性问题。
有时,硬件问题可能导致仍在运行但速度缓慢的拖后者,这类问题难以检测。即使单个拖后者也可能拖慢数千个其他 GPU,通常表现为功能正常但通信速度缓慢。我们开发了工具以优先处理选定进程组中可能存在问题的通信。通过调查少数几个重点嫌疑对象,通常可以有效识别拖后者。
一个有趣的观察是环境因素对大规模训练性能的影响。对于 Llama 3 405B,我们注意到基于一天中时间的吞吐量存在 1-2% 的昼夜变化。这种波动是由于中午温度升高影响 GPU 动态电压和频率调节所致。
在训练过程中,可能有数万块 GPU 同时增加或减少功耗,例如,当所有 GPU 等待检查点保存或集体通信完成时,或整个训练任务启动或关闭时。此时,可能导致数据中心功耗瞬时波动达数十兆瓦,接近电网负荷极限。随着我们为未来更大规模的 Llama 模型扩展训练,这是一个持续面临的挑战。
3.4 训练方案
用于 Llama 3 405B 预训练的方案包含三个主要阶段:(1)初始预训练,(2)长上下文预训练,以及(3)退火。下面分别描述这三个阶段。我们对 8B 和 70B 模型的预训练也使用了类似的方案。
3.4.1 初始预训练
我们使用 AdamW 对 Llama 3 405B 进行预训练,峰值学习率为 8 × 10^−5,线性 warm-up 8,000 步,并使用余弦学习率调度,在 1,200,000 步时衰减至 8 × 10^−7。训练初期使用较小的批量大小以提高训练稳定性,随后增加批量大小以提升效率。具体而言,我们使用初始批量大小为 4M tokens、序列长度为 4,096;在预训练 2.52 亿 tokens 后,将批量大小和序列长度翻倍为 8M tokens 和 8,192 序列;在预训练 2.87T tokens 后,再次将批量大小翻倍至 16M。我们发现该训练方案非常稳定:观察到的损失峰值很少,也不需要进行干预以纠正模型训练发散。
调整数据混合。在训练过程中,我们对预训练数据混合进行了若干调整,以提高模型在特定下游任务上的性能。具体而言,我们增加了非英语数据的比例,以提升 Llama 3 的多语言性能;增加数学数据的采样以提升模型的数学推理能力;在预训练后期加入更多最新网络数据,以推进模型的知识截止时间;并下采样部分后期识别为低质量的数据子集。
3.4.2 长上下文预训练
在预训练的最后阶段,我们在长序列上训练,以支持最长 128K tokens 的上下文窗口。早期不使用长序列进行训练,是因为自注意力层的计算复杂度随序列长度呈二次增长。我们通过逐步增加支持的上下文长度进行训练,直到模型成功适应增加后的上下文长度。我们通过以下方式评估适应成功与否:(1)短上下文评估的模型性能完全恢复;(2)模型能够完美解决长度范围内的"针眼任务"。在 Llama 3 405B 预训练中,我们将上下文长度分六个阶段逐步增加,从原始 8K 上下文窗口开始,最终达到 128K 上下文窗口。该长上下文预训练阶段使用了约 8,000 亿训练 tokens。
3.4.3 退火
在对最后 4,000 万 tokens 进行预训练期间,我们将学习率线性退火至 0,同时保持上下文长度为 128K tokens。在退火阶段,我们还调整数据混合,对高质量数据源进行上采样;参见第 3.1.3 节。最后,我们在退火阶段对模型检查点进行平均(Polyak (1991) 平均),以生成最终的预训练模型。
四 后训练
我们通过若干轮后训练,将模型与人类反馈对齐(Ouyang 等, 2022;Rafailov 等, 2024),从预训练检查点出发生成对齐后的 Llama 3 模型。每轮后训练包括监督微调(SFT)以及直接偏好优化(DPO;Rafailov 等, 2024),使用的数据来自人工标注或合成生成。我们的后训练模型和数据方法分别在第 4.1 和 4.2 节中描述。我们在第 4.3 节进一步详细说明了定制的数据筛选策略,以提高推理、编码、事实性、多语言能力、工具使用、长上下文以及精确执行指令的能力。
4.1 模型设计
我们的后训练策略核心是奖励模型和语言模型。首先,我们在预训练检查点上使用人工标注的偏好数据训练奖励模型(见第 4.1.2 节)。然后,我们对预训练检查点进行监督微调(SFT;见第 4.1.3 节),并进一步通过直接偏好优化(DPO;见第 4.1.4 节)对检查点进行对齐。该过程如图 7 所示。除非另有说明,我们的建模流程适用于 Llama 3 405B,为简便起见,文中将 Llama 3 405B 简称为 Llama 3。
图 7 展示了 Llama3 的整体训练后处理方法。我们的训练后处理策略包括拒绝采样、监督式微调和直接偏好优化。详情请参见正文。
4.1.1 聊天对话格式
为了调优 LLM 以实现人机交互,我们需要定义聊天对话协议,使模型能够理解人类指令并执行对话任务。与前代模型相比,Llama 3 具有新的能力,例如工具使用(第 4.3.5 节),这可能要求在单轮对话中生成多条消息并将其发送至不同位置(如用户、ipython)。为此,我们设计了新的多消息聊天协议,使用各种特殊的头部和终止符标记。头部标记用于指示对话中每条消息的来源和目的地;终止符标记用于指示何时轮到人类或 AI 发言。
4.1.2 奖励建模
我们在预训练检查点上训练奖励模型(RM),覆盖不同能力。训练目标与 Llama 2 相同,但我们去掉了损失中的 margin 项,因为数据扩展后观察到提升减弱。与 Llama 2 一样,我们在过滤掉响应相似的样本后,使用全部偏好数据进行奖励建模。除了标准的偏好对(选择的、拒绝的)响应外,部分提示还生成第三条"编辑响应",即对偏好对中选择的响应进行进一步改进(见第 4.2.1 节)。因此,每个偏好排序样本包含两或三条明确排序的响应(编辑 > 选择 > 拒绝)。训练时,我们将提示与多条响应拼接成一行,并随机打乱响应顺序。这是对标准方案(将响应放在不同行并计算分数)的近似,在消融实验中,该方法在不降低准确性的情况下提高了训练效率。
4.1.3 监督微调
奖励模型随后用于对人工标注的提示执行拒绝采样,具体细节见第 4.2 节。结合拒绝采样数据及其他数据源(包括合成数据),我们使用标准交叉熵损失对预训练语言模型进行微调(目标 tokens 的损失被计算,提示 tokens 的损失被屏蔽)。关于数据混合的更多细节见第 4.2 节。我们称此阶段为监督微调(SFT;Wei 等, 2022a;Sanh 等, 2022;Wang 等, 2022b),尽管许多训练目标是模型生成的。我们最大的模型以 10^−5 的学习率进行 8.5K 至 9K 步微调。我们发现这些超参数设置在不同轮次和数据混合下表现良好。
4.1.4 直接偏好优化
我们进一步使用直接偏好优化(DPO;Rafailov 等, 2024)对 SFT 模型进行人类偏好对齐训练。训练时,我们主要使用通过前一轮对齐中表现最佳的模型收集的最新偏好数据批次。因此,训练数据更符合每轮优化的策略模型分布。我们也尝试过基于策略的算法如 PPO(Schulman 等, 2017),但发现 DPO 对大规模模型计算需求更低,且在指令执行基准(如 IFEval,Zhou 等, 2023)上表现更佳。对于 Llama 3,我们使用 10^−5 学习率,并将 β 超参数设为 0.1。此外,我们对 DPO 进行了以下算法改进:
• 在 DPO 损失中屏蔽格式化标记:我们在 DPO 损失中屏蔽特殊格式化标记(包括第 4.1.1 节描述的头部和终止符标记),适用于选择和拒绝的响应,以稳定 DPO 训练。我们观察到,让这些标记参与损失可能导致不期望的模型行为,如尾部重复或突然生成终止符。我们推测这是由于 DPO 损失的对比特性------选择和拒绝响应中共有标记的存在导致模型在同时增加和降低这些标记概率时出现冲突的学习目标。
• 使用 NLL 损失进行正则化:我们在选择的序列上增加额外的负对数似然(NLL)损失项,缩放系数为 0.2,类似于 Pang 等(2024)。这有助于进一步稳定 DPO 训练,保持生成所需格式,并防止选择响应的对数概率下降(Pang 等, 2024;Pal 等, 2024)。
4.1.5 模型平均
最后,我们在每个 RM、SFT 或 DPO 阶段,对使用不同数据版本或超参数实验得到的模型进行平均(Izmailov 等, 2019;Wortsman 等, 2022;Li 等, 2022)。
4.1.6 迭代轮次
遵循 Llama 2 的做法,我们将上述方法应用于六轮训练。在每个循环中,我们收集新的偏好标注和 SFT 数据,并从最新模型中采样合成数据。
4.2 后训练数据
后训练数据的组成在语言模型的有效性和行为中起着关键作用。本节讨论我们的人工标注流程和偏好数据收集(第 4.2.1 节)、SFT 数据的组成(第 4.2.2 节),以及数据质量控制和清洗方法(第 4.2.3 节)。
4.2.1 偏好数据
我们的偏好数据标注流程与 Llama 2 类似。每轮后,我们部署多个模型进行标注,并为每个用户提示从两个不同模型中采样两条响应。这些模型可以使用不同的数据混合和对齐方案训练,从而体现不同的能力强度(如编码能力)并增加数据多样性。我们要求标注者根据他们对选择的响应相对于被拒绝响应的偏好程度,将偏好划分为四个等级:显著更好、更好、略好或稍好。我们还在偏好排序后加入编辑步骤,鼓励标注者进一步改进偏好响应。标注者可以直接编辑选择的响应,或向模型提供反馈以改进其自身响应。因此,我们的部分偏好数据包含三条响应的排序(编辑 > 选择 > 拒绝)。
在表 6 中,我们报告了用于 Llama 3 训练的偏好标注统计数据。通用英语覆盖多个子类别,如基于知识的问答或精确执行指令,这些不属于特定能力范围。与 Llama 2 相比,我们观察到提示和响应的平均长度增加,表明我们在更复杂的任务上训练 Llama 3。此外,我们实施了质量分析和人工评估流程,对收集的数据进行严格评估,从而优化提示并向标注者提供系统化、可操作的反馈。例如,随着 Llama 3 每轮的改进,我们相应增加提示的复杂性,以针对模型表现落后的领域。
表 6人类偏好数据统计。我们列出了用于 Lama 3对产的内部收集的人类偏好数据的统计信息。我们要求标注者与模型进行多轮对话,并比较每一轮的回复。在后处理中,我们将每轮对话拆分为多个示例。每个示例包含一个提示(如果可用,则包含之前的对话)和一个回复(例如,选择或拒绝的回复)。
在每轮后训练中,我们在奖励建模阶段使用当时可用的所有偏好数据,而在 DPO 训练中仅使用各能力的最新批次。对于奖励建模和 DPO,我们使用被标注为"选择响应显著更好或更好"的样本进行训练,并丢弃响应相似的样本。
4.2.2 SFT 数据
我们的微调数据主要来源如下:
• 来自人工标注集合的提示及拒绝采样响应。
• 针对特定能力的合成数据(详细信息见第 4.3 节)。
• 少量人工策划数据(详细信息见第 4.3 节)。
随着后训练轮次的推进,我们开发出更强的 Llama 3 变体,用于收集覆盖广泛复杂能力的更大数据集。本节讨论拒绝采样流程和最终 SFT 数据混合的总体组成。
拒绝采样。在拒绝采样(RS)过程中,对于人工标注收集的每个提示(第 4.2.1 节),我们从最新的聊天模型策略(通常是前一次后训练迭代中表现最佳的检查点,或某能力表现最佳的检查点)中采样 K 条输出(通常在 10 到 30 之间),并使用奖励模型选择最佳候选,与 Bai 等(2022)一致。在后训练后期,我们引入系统提示,引导 RS 响应符合期望的语气、风格或格式,这些可能因不同能力而异。
为了提高拒绝采样的效率,我们采用 PagedAttention(Kwon 等, 2023)。PagedAttention 通过动态键值缓存分配提高内存效率,可根据当前缓存容量动态调度请求,从而支持任意输出长度。然而,这存在内存耗尽时发生 swap 的风险。为消除 swap 开销,我们定义最大输出长度,并仅在有足够内存容纳该长度输出时才发起请求。PagedAttention 还允许我们在所有对应输出间共享提示的键值缓存页。这些方法使拒绝采样期间吞吐量提升超过 2 倍。
总体数据组成。表 7 显示了我们"帮助性"数据混合中每个大类的数据统计。尽管 SFT 和偏好数据包含重叠领域,但其策划方式不同,因此统计数量有所差异。在第 4.2.3 节中,我们描述了对数据样本进行主题、复杂性和质量分类的技术。在每轮后训练中,我们在这些维度上仔细调整整体数据混合,以优化各类基准的性能。最终数据混合会在部分高质量来源上进行多次迭代,并对其他数据进行下采样。
表7 SFT 数据统计。我们列出了用于 Llama3 对齐的内部收集的 SFT 数据。每个 SFT示例都包含一个上下文(即除最后一个回合外的所有对话回合)和一个最终回复。
4.2.3 数据处理与质量控制
由于大部分训练数据为模型生成,因此需要仔细清洗和质量控制。
**数据清洗。**在早期轮次中,我们观察到数据中存在一些不良模式,如过度使用表情符号或感叹号。因此,我们实施了一系列基于规则的数据删除和修改策略,以过滤或清理问题数据。例如,为缓解过度道歉的语气问题,我们识别出过度使用的短语(如"我很抱歉"或"I apologize"),并在数据集中谨慎平衡这些样本的比例。
数据剪枝 。我们还应用一系列基于模型的技术,以移除低质量训练样本并提升整体模型性能:
粒度桶("数学推理")和细粒度桶("几何与三角学")中。
• 质量评分:我们使用奖励模型和基于 Llama 的信号,为每个样本生成质量评分。对于基于 RM 的评分,将 RM 分数处于前四分位的数据视为高质量。对于基于 Llama 的评分,我们提示 Llama 3 检查点对通用英语数据按三点评分(准确性、指令执行和语气/呈现)以及编码数据按两点评分(错误识别和用户意图),并将获得最高分的样本视为高质量。RM 和基于 Llama 的评分存在高分歧率,我们发现结合这些信号能在内部测试集上获得最佳召回。最终,我们选择被 RM 或基于 Llama 的过滤器标记为高质量的样本。
• 难度评分:由于我们还希望优先考虑对模型更复杂的示例,我们使用两种难度度量对数据进行评分:Instag(Lu 等, 2023)和基于 Llama 的评分。对于 Instag,我们提示 Llama 3 70B 对 SFT 提示进行意图标注,更多意图意味着更高复杂度。我们还提示 Llama 3 对对话难度(Liu 等, 2024c)进行三点评分。
• 语义去重:最后,我们进行语义去重(Abbas 等, 2023;Liu 等, 2024c)。我们首先使用 RoBERTa(Liu 等, 2019b)对完整对话进行聚类,在每个聚类内按质量评分 × 难度评分排序。然后采用贪心选择策略,遍历所有排序后的示例,仅保留与该聚类中已选示例的余弦相似度低于阈值的样本。
4.3 能力
我们重点介绍为了提升特定能力而做的专项工作,包括代码能力(第 4.3.1 节)、多语言能力(第 4.3.2 节)、数学与推理能力(第 4.3.3 节)、长上下文处理能力(第 4.3.4 节)、工具使用能力(第 4.3.5 节)、事实性能力(第 4.3.6 节)以及可引导性(第 4.3.7 节)。
4.3.1 代码
自 Copilot 和 Codex 发布以来(Chen 等, 2021),用于代码的 LLM 受到了广泛关注。开发者现在广泛使用这些模型生成代码片段、调试、自动化任务和提升代码质量。对于 Llama 3,我们的目标是提升和评估代码生成、文档编写、调试和代码审查能力,重点支持以下高优先级编程语言:Python、Java、JavaScript、C/C++、TypeScript、Rust、PHP、HTML/CSS、SQL、bash/shell。本文介绍我们通过训练代码专家、生成 SFT 合成数据、使用系统提示优化格式、以及创建质量过滤器以剔除低质量训练样本来提升这些代码能力的工作。
**专家训练。**我们训练了一个代码专家,用于在后续后训练轮次中收集高质量的人类代码标注。这是通过在主预训练运行中分支,并继续在一个主要由代码数据(>85%)组成的 1T token 混合数据上进行预训练实现的。先前研究表明,在特定领域的持续预训练能够有效提升该领域的性能(Gururangan 等, 2020)。我们遵循类似 CodeLlama(Rozière 等, 2023)的训练方案。在训练的最后几千步中,我们进行长上下文微调(LCFT),将专家的上下文长度扩展到 16K tokens,使用高质量的仓库级代码数据混合。最后,我们按照第 4.1 节描述的后训练建模方法对该模型进行对齐,但 SFT 和 DPO 数据混合主要针对代码能力。该模型还用于代码提示的拒绝采样(第 4.2.2 节)。
**合成数据生成。**在开发过程中,我们发现代码生成的关键问题包括:难以遵循指令、代码语法错误、生成代码不正确以及难以修复错误。尽管密集的人类标注理论上可以解决这些问题,但合成数据生成提供了一种成本更低、规模更大且不受标注者专业水平限制的补充方法。因此,我们使用 Llama 3 和代码专家生成大量 SFT 合成对话。
我们描述三种生成合成代码数据的高层方法,总共生成了超过 270 万条用于 SFT 的合成示例。
-
合成数据生成:执行反馈。8B 和 70B 模型在训练于更大、更有能力的模型生成的数据时表现显著提升。然而,我们的初步实验显示,单独使用 Llama 3 405B 自身生成的数据进行训练并不有益(甚至可能降低性能)。为解决这一问题,我们引入执行反馈作为真实来源,使模型能够从错误中学习并保持正确轨迹。具体而言,我们通过以下流程生成约一百万条合成代码对话数据:
• 问题描述生成:首先,我们生成涵盖广泛主题的大量编程问题描述,包括长尾分布问题。为实现多样性,我们从不同来源随机采样代码片段,并提示模型生成受这些示例启发的编程问题,从而创建全面的问题描述集合(Wei 等, 2024)。
• 解决方案生成:然后,我们提示 Llama 3 用指定编程语言解决每个问题。我们观察到,在提示中加入良好编程规则能够提升生成解决方案的质量。同时,要求模型在注释中解释思路也有助于质量提升。
• 正确性分析:生成解决方案后,需要注意其正确性并非保证,将错误解决方案纳入微调数据可能会损害模型质量。虽然无法确保完全正确,我们开发了近似方法:提取生成解决方案中的源代码,并结合静态与动态分析测试其正确性,包括:
-- 静态分析:通过解析器和 linter 检查语法正确性,捕捉语法错误、未初始化变量或未导入函数的使用、代码风格问题、类型错误等。
-- 单元测试生成与执行:针对每个问题和解决方案,提示模型生成单元测试,在容器化环境中执行,捕捉运行时错误及部分语义错误。
• 错误反馈与迭代自我修正:当解决方案在任何步骤失败时,提示模型进行修改。提示中包含原问题描述、错误解决方案及解析器/测试器反馈(stdout、stderr 和返回码)。单元测试失败后,模型可以修复代码以通过现有测试,或修改单元测试以适应生成代码。仅通过所有检查的对话被纳入最终数据集,用于监督微调(SFT)。值得注意的是,我们观察到约 20% 的解决方案初始错误但自我修正,表明模型从执行反馈中学习并提升了性能。
• 微调与迭代改进:微调过程分多轮进行,每轮在前一轮基础上改进。每轮完成后,模型生成更高质量的合成数据用于下一轮,实现渐进式性能提升。
-
合成数据生成:编程语言翻译。我们观察到主要编程语言(如 Python/C++)与较少使用语言(如 TypeScript/PHP)之间存在性能差距,这在训练数据较少的情况下不足为奇。为缓解这一问题,我们通过将常用语言数据翻译为较少使用语言来补充现有数据(类似 Chen 等, 2023 在推理场景中的做法)。通过提示 Llama 3 并结合语法解析、编译和执行进行质量控制,实现数据转换。图 8 展示了从 Python 翻译为 PHP 的合成代码示例。这显著提升了较少使用语言的性能,根据 MultiPL-E(Cassano 等, 2023)基准测评结果可见。
-
合成数据生成:回译。为提升某些编码能力(如文档编写、解释),在执行反馈不易判断质量的情况下,我们采用多步骤回译方法。使用此方法,我们生成约 120 万条与代码解释、生成、文档和调试相关的合成对话,流程如下:
• 生成:提示 Llama 3 生成目标能力相关数据(如为代码片段添加注释和文档字符串,或解释一段代码)。
• 回译:提示模型将合成数据"回译"回原始代码(如仅根据文档或解释生成代码)。
• 过滤:以原始代码为参考,提示 Llama 3 评估输出质量(如判断回译代码对原始代码的忠实度),仅将自我验证评分最高的示例用于 SFT。
**系统提示引导在拒绝采样中的应用。**在拒绝采样过程中,我们使用代码专用系统提示以提升代码可读性、文档质量、完整性和具体性。如第 7 节所述,这些数据用于微调语言模型。图 9 展示了系统提示如何提升生成代码质量------添加必要注释、使用更具信息量的变量名、节省内存等。
**使用执行反馈与模型评估信号过滤训练数据。**如第 4.2.3 节所述,拒绝采样数据有时存在质量问题,如代码块包含错误。与合成代码数据不同,拒绝采样响应通常包含自然语言与代码混合,其中代码不一定可执行(例如用户可能要求伪代码或仅修改可执行程序的小片段)。为此,我们采用"模型评判"方法,由早期版本 Llama 3 根据代码正确性和代码风格两个标准进行二值评分(0/1),仅保留得分为 2 的样本。初始严格过滤导致下游基准性能下降,主要因去除了具有挑战性的提示示例。为解决此问题,我们对部分最具挑战性的编码数据进行策略性修正,使其满足 Llama 基于"模型评判"的标准。通过优化这些挑战性问题,编码数据在质量与难度之间取得平衡,从而实现最佳下游性能。
图 8 代码翻译示例。我们展示了如何使用 Llama 3将 Python 代码(左)翻译成 PHP 代码(右),从而扩展我们的 SFT 数据集,使其包含更广泛的编程语言。
图 9 利用系统提示提高生成的代码质量。左图:无系统提示;右图:有系统提示。
4.3.2 多语言能力
我们描述了如何提升 Llama 3 的多语言能力,包括训练一个专注于大量多语言数据的专家模型、为德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语收集和生成高质量多语言指令微调数据,以及解决多语言语言引导的特定挑战以增强模型整体性能。
**专家训练。**Llama 3 的预训练数据混合中,英文 token 数量显著多于非英文 token。为了在非英文语言中收集更高质量的人类标注,我们训练了一个多语言专家,通过在预训练运行中分支,并在由 90% 多语言 token 组成的数据混合上继续预训练实现。然后,我们按照第 4.1 节对该专家进行后训练。该专家模型随后用于收集非英文语言的高质量标注,直到预训练完全完成。
多语言数据收集。我们的多语言 SFT 数据主要来源如下。总体分布为:2.4% 人类标注,44.2% 来自其他 NLP 任务的数据,18.8% 拒绝采样数据,34.6% 翻译推理数据。
•人类标注 :我们从语言学家和母语者处收集高质量手工标注数据。这些标注主要包括开放式提示,代表真实世界的使用场景。
• 来自其他 NLP 任务的数据 :为了进一步增强数据,我们使用其他任务的多语言训练数据,并将其改写为对话格式。例如,使用 exams-qa(Hardalov 等, 2020)和 Conic10k(Wu 等, 2023)的数据。为了提升语言对齐,我们还使用 GlobalVoices(Prokopidis 等, 2016)和 Wikimedia(Tiedemann, 2012)的平行文本。使用基于语言识别(LID)过滤和 Blaser2.0(Seamless Communication 等, 2023)剔除低质量数据。对于平行文本数据,我们没有直接使用双语对,而是采用 Wei 等(2022a)启发的多语言模板,更好地模拟翻译和语言学习场景中的真实对话。
• 拒绝采样数据 :我们对人工标注的提示进行拒绝采样,以生成高质量微调样本,过程与英文数据类似,差异如下:
-- 生成:在后训练早期轮次中,我们尝试从 0.2--1 范围内随机选择温度超参数以实现多样化生成。高温度下,多语言提示的响应可能富有创意,但也容易出现不必要或不自然的代码切换。在最后一轮后训练中,我们使用恒定值 0.6 平衡这一权衡。此外,我们使用专门的系统提示改善响应格式、结构和可读性。
-- 选择:在基于奖励模型选择之前,我们实施多语言特定检查,以确保提示与响应之间的语言匹配率高(例如,罗马化印地语提示不应期望以天城文书写的印地语响应)。
• 翻译数据:为了防止翻译腔(Bizzoni 等, 2020; Muennighoff 等, 2023)或可能的姓名偏差(Wang 等, 2022a)、性别偏差(Savoldi 等, 2021)或文化偏差(Ji 等, 2023),我们尽量避免使用机器翻译数据微调模型。此外,我们希望避免模型仅接触基于英语文化背景的任务,这可能无法代表我们希望捕捉的语言和文化多样性。我们对此有一个例外:为了提升非英文语言的定量推理性能,我们将合成定量推理数据(见第 4.3.3 节)进行了翻译。由于这些数学问题的语言较为简单,翻译样本几乎没有质量问题。我们观察到在 MGSM(Shi 等, 2022)上加入这些翻译数据后性能显著提升。
4.3.3 数学与推理
我们将推理定义为执行多步骤计算并得出正确最终答案的能力。训练在数学推理上表现卓越的模型面临若干挑战:
• 提示缺乏:随着问题复杂度增加,可用于监督微调(SFT)的有效提示或问题数量减少。这种稀缺性使得创建多样且具代表性的训练数据集以教授模型各种数学技能变得困难(Yu 等, 2023; Yue 等, 2023; Luo 等, 2023; Mitra 等, 2024; Shao 等, 2024; Yue 等, 2024b)。
• 缺乏真实思路链:有效推理需要逐步解决方案以辅助推理过程(Wei 等, 2022c)。然而,通常缺少真实思路链,而这些对于指导模型逐步分解问题并得出最终答案至关重要(Zelikman 等, 2022)。
• 中间步骤错误:使用模型生成的思路链时,中间步骤可能不正确(Cobbe 等, 2021; Uesato 等, 2022; Lightman 等, 2023; Wang 等, 2023a)。这种不准确性可能导致最终答案错误,需要解决。
• 教模型使用外部工具:增强模型使用外部工具(如代码解释器)的能力,使其能够通过交替使用代码和文本进行推理(Gao 等, 2023; Chen 等, 2022; Gou 等, 2023),显著提升问题解决能力。
• 训练与推理的差异:训练中微调的方式与推理时使用方式存在差异。在推理过程中,微调模型可能与人类或其他模型交互,需要通过反馈改进推理。确保训练与实际使用的一致性对维持推理性能至关重要。
为应对这些挑战,我们采用以下方法:
• 解决提示缺乏问题 :我们从数学相关的预训练数据中获取相关数据,并转换为问答格式用于监督微调。同时,识别模型表现不佳的数学技能,并主动收集人类提示以教授模型这些技能。为此,我们创建了数学技能分类法(Didolkar 等, 2024),并请人类提供相应提示/问题。
• 用逐步推理轨迹增强训练数据 :我们使用 Llama 3 为一组提示生成逐步解答。每个提示生成可变数量的解答,然后根据正确答案进行筛选(Li 等, 2024a)。我们还进行自我验证,使用 Llama 3 验证特定逐步解答是否适用于给定问题。此过程通过剔除无效推理轨迹,提升微调数据质量。
• 筛选错误推理轨迹 :我们训练结果和逐步奖励模型(Lightman 等, 2023; Wang 等, 2023a)以过滤中间步骤错误的训练数据,确保微调数据高质量。对于更具挑战性的提示,使用蒙特卡洛树搜索(MCTS)结合学习的逐步奖励模型生成有效推理轨迹,进一步提升高质量推理数据收集(Xie 等, 2024)。
• 交替使用代码和文本推理 :我们提示 Llama 3 通过文本推理与关联 Python 代码结合解决问题(Gou 等, 2023)。代码执行用作反馈信号,剔除无效推理链,确保推理过程正确。
•从反馈和错误中学习:为模拟人类反馈,我们利用错误生成(即导致错误推理轨迹的生成),通过提示 Llama 3 进行错误修正得到正确生成(An 等, 2023b; Welleck 等, 2022; Madaan 等, 2024a)。这种利用错误反馈并纠正的迭代过程有助于提升模型推理准确性并从错误中学习。
4.3.4 长上下文
在最终预训练阶段,我们将 Llama 3 的上下文长度从 8K token 扩展至 128K token(详见第 3.4 节)。与预训练类似,我们发现微调过程中必须谨慎调整配方以平衡短上下文与长上下文能力。
SFT 与合成数据生成 。仅使用短上下文数据应用现有 SFT 配方,会导致长上下文能力相较预训练显著退化,显示了在 SFT 数据混合中引入长上下文数据的必要性。然而,由于阅读长上下文耗时且枯燥,人工标注此类样本在实践中几乎不可行,因此我们主要依赖合成数据填补这一空白。我们使用早期版本 Llama 3 根据关键长上下文使用场景生成合成数据:可能的多轮问答、长文档摘要、以及代码仓库推理,具体如下:
• 问答:我们从预训练数据中精心挑选长文档,将其分为 8K token 块,提示早期 Llama 3 版本在随机选择的块上生成问答对。训练时使用整个文档作为上下文。
• 摘要:我们对长上下文文档进行分层摘要,先使用最强 Llama 3 8K 上下文模型摘要 8K 输入块,再摘要这些摘要。训练时提供完整文档,提示模型在保留重要细节的同时生成摘要。我们还基于文档摘要生成问答对,提示模型回答需全局理解整篇文档的问题。
• 长上下文代码推理:解析 Python 文件以识别 import 语句并确定依赖关系,从中选择最常被依赖的文件(至少被五个其他文件引用)。移除其中一个关键文件,并提示模型识别依赖缺失文件的文件,并生成缺失代码。
我们进一步根据序列长度(16K、32K、64K 和 128K)对合成样本进行分类,以实现更精细的输入长度针对性。通过细致消融实验,我们发现将 0.1% 合成长上下文数据与原短上下文数据混合,可在短上下文和长上下文基准上实现性能最优。
DPO。我们观察到,仅使用短上下文训练数据进行 DPO 时,并不会对长上下文性能产生负面影响,只要 SFT 模型在长上下文任务中高质量。这可能是因为 DPO 配方优化器步骤少于 SFT。基于这一发现,我们在长上下文 SFT 检查点上,保持 DPO 的标准短上下文配方。
4.3.5 工具使用
教授大型语言模型(LLM)使用搜索引擎或代码解释器等工具,可极大拓展其可解决任务的范围,将其从纯聊天模型转变为更通用的助手(Nakano 等, 2021; Thoppilan 等, 2022; Parisi 等, 2022; Gao 等, 2023; Mialon 等, 2023a; Schick 等, 2024)。我们训练 Llama 3 与以下工具进行交互:
• 搜索引擎。Llama 3 经过训练使用 Brave Search7 回答超出其知识截止日期或需要从网络检索特定信息的问题。
• Python 解释器。Llama 3 可以生成并执行代码以进行复杂计算,读取用户上传的文件,并基于文件解决任务,如问答、摘要、数据分析或可视化。
• 数学计算引擎。Llama 3 可以使用 Wolfram Alpha API8 更准确地解决数学、科学问题,或从 Wolfram 数据库中检索准确的信息。
最终模型能够在聊天设置中使用这些工具解决用户查询,包括多轮对话。如果查询需要多次调用工具,模型可以制定逐步计划,按顺序调用工具,并在每次调用后进行推理。
我们还提升了 Llama 3 的零样本工具使用能力------给定上下文中可能未见过的工具定义和用户查询,我们训练模型生成正确的工具调用。
实现。我们将核心工具实现为具有不同方法的 Python 对象。零样本工具可以实现为带有描述、文档(即使用示例)的 Python 函数,模型仅需函数签名和文档字符串作为上下文即可生成适当调用。我们还将函数定义和调用转换为 JSON 格式,例如用于 Web API 调用。所有工具调用均由 Python 解释器执行,该解释器必须在 Llama 3 系统提示中启用。核心工具可以在系统提示中单独启用或禁用。
数据收集。与 Schick 等(2024)不同,我们依赖人类标注和偏好来教授 Llama 3 使用工具。与 Llama 3 通用的后训练流程相比有两个主要区别:
• 对于工具, dialogs 通常包含多个助手消息(例如调用工具并对工具输出进行推理)。因此,我们在消息级别进行标注以收集细粒度反馈:标注员在两个具有相同上下文的助手消息间提供偏好,或者如果两者均存在重大问题,则编辑其中一条消息。选择或编辑后的消息被加入上下文,对话继续。这为助手调用工具和推理工具输出的能力提供了人类反馈。标注员无法对工具输出进行排名或编辑。
• 我们不进行拒绝采样,因为在工具基准测试中未观察到收益。
为加速标注过程,我们首先通过对先前 Llama 3 检查点的合成生成数据进行微调,引导基本工具使用能力。因此,标注员需要编辑的内容更少。以同样的思路,随着 Llama 3 在开发过程中的逐步改进,我们逐步复杂化人类标注协议:先进行单轮工具使用标注,再到对话中的工具使用,最后标注多步骤工具使用和数据分析。
工具数据集。为了创建工具使用应用的数据,我们采用以下流程:
• 单步工具使用:我们首先通过少量示例生成合成用户提示,这些提示按构造要求调用一个核心工具(例如超过知识截止日期的问题)。随后,依然依赖少量示例生成,生成这些提示的适当工具调用,执行工具,并将输出加入模型上下文。最后,我们再次提示模型,根据工具输出生成用户查询的最终答案。最终获得的轨迹形式如下:系统提示、用户提示、工具调用、工具输出、最终答案。我们还对该数据集约 30% 进行过滤,去除无法执行的工具调用或其他格式问题。
• 多步工具使用:遵循类似协议,首先生成合成数据以教授模型基本的多步工具使用能力。为此,我们首先提示 Llama 3 生成至少需要两次工具调用的用户提示,可为核心工具集合中的相同或不同工具。然后,基于这些提示,我们通过少量示例提示 Llama 3 生成包含交错推理步骤和工具调用的解决方案,类似 ReAct(Yao 等, 2022)。见图 10,展示 Llama 3 执行涉及多步工具使用的任务示例。
• 文件上传:我们对以下文件类型进行标注:.txt、.docx、.pdf、.pptx、.xlsx、.csv、.tsv、.py、.json、.jsonl、.html、.xml。我们的提示基于提供的文件,要求总结文件内容、查找并修复错误、优化代码片段、执行数据分析或可视化。见图 11,展示 Llama 3 执行涉及文件上传的任务示例。
图 10 多步骤工具使用示例。Lama3 执行多步骤规划、推理和工具调用以解决任务的示例。
图 11 处理文件上传。Lama3 对上传文件进行分析和可视化的示例
在对合成数据进行微调后,我们收集人类标注,涵盖多轮交互、超过三步的工具使用,以及工具调用未产生满意答案的场景。我们通过不同系统提示增强合成数据,以教授模型仅在启用时使用工具。为了训练模型避免对简单查询调用工具,我们还加入来自简单数学或问答数据集(Berant 等, 2013; Koncel-Kedziorski 等, 2016; Joshi 等, 2017; Amini 等, 2019)及其无需工具的响应,但系统提示中启用工具的查询。
零样本工具使用数据。我们通过对大量多样的部分合成(函数定义、用户查询、对应调用)元组进行微调,提高 Llama 3 零样本工具使用能力(也称为函数调用)。我们在一组未见过的工具上评估模型。
• 单步、嵌套及并行函数调用 :调用可以是简单的、嵌套的(即将函数调用作为另一个函数的参数)或并行的(即模型返回一组独立函数调用)。生成多样的函数、查询和真实答案可能具有挑战性(Mekala 等, 2024),我们通过在 Stack(Kocetkov 等, 2022)中挖掘,将合成用户查询与真实函数关联。具体做法是提取函数调用及其定义,进行清理和过滤(例如缺失文档字符串或不可执行函数),并使用 Llama 3 生成对应函数调用的自然语言查询。
• 多轮函数调用:我们还为包含函数调用的多轮对话生成合成数据,遵循类似 Li 等(2023b)提出的协议。我们使用多个代理生成领域、API、用户查询、API 调用及响应,同时确保生成数据覆盖多样领域和真实 API。所有代理均为 Llama 3 的变体,根据其角色以不同方式提示,并以逐步协作的方式完成生成。
4.3.6 事实性
幻觉仍然是大型语言模型的主要挑战。模型往往过于自信,即使在其知识有限的领域也是如此。尽管存在这些缺点,它们仍常被用作知识库,这可能导致诸如错误信息传播等风险结果。我们认识到,事实性不仅仅局限于幻觉,但在此我们采取了以幻觉为优先的策略。我们遵循的原则是,后训练应使模型"知道自己知道什么",而不是增加知识(Gekhman 等, 2024; Mielke 等, 2020)。
我们的主要方法是生成与预训练数据中事实子集对齐的数据,以使模型生成内容更符合事实。为此,我们开发了一种知识探测技术,利用 Llama 3 的上下文能力。该数据生成过程包括以下步骤:
-
从预训练数据中提取数据片段。
-
通过提示 Llama 3 针对这些片段(上下文)生成一个事实性问题。
-
从 Llama 3 对该问题生成响应样本。
-
使用原始上下文作为参考,并由 Llama 3 作为评判者,对生成内容的正确性进行评分。
-
使用 Llama 3 作为评判者,对生成内容的信息量进行评分。
-
对于在生成中始终信息丰富但错误的响应,使用 Llama 3 生成拒绝回答。
我们利用从知识探测中生成的数据,鼓励模型仅回答其有知识的问题,并拒绝回答不确定的问题。此外,预训练数据并非总是事实一致或正确。因此,我们还收集了一小部分标注的事实性数据,涉及敏感主题,其中事实矛盾或错误陈述较为普遍。
4.3.7 可引导性
可引导性是指将模型的行为和输出方向引导以满足开发者和用户需求的能力。作为通用基础模型,Llama 3 应该能够最大程度地被引导,以便轻松适应不同的下游使用场景。对于 Llama 3,我们重点通过系统提示与自然语言指令来增强其可引导性,特别是关于回答长度、格式、语气和角色/人格的方面。
**数据收集。**我们在通用英语类别内收集可引导性偏好样本,方法是让标注员为 Llama 3 设计不同的系统提示。然后,标注员与模型进行对话,以评估模型在整个对话过程中遵循系统提示中指令的一致性。下面展示了一个用于增强可引导性的自定义系统提示示例:
你是一个乐于助人且开朗的 AI 聊天机器人,担任忙碌家庭的膳食计划助手。 该家庭包括 2 名成人、3 名青少年和 2 名学龄前儿童。每次规划两到三天,并利用剩菜或多余食材安排第二天的计划。用户会告知你他们希望规划两天还是三天。如果没有说明,则默认三天。每个计划应包括早餐、午餐、加餐和晚餐。询问用户是否批准该计划或需要调整。用户批准后,提供考虑家庭人数的购物清单。始终考虑家庭偏好,如果有不喜欢的食物提供替代方案。如果用户没有灵感,询问他们本周最想去的一个旅游地点,然后根据该地点的文化推荐餐食。周末餐食可以更复杂。工作日餐食应快速简便。早餐和午餐应选择易食食品,如谷物、带熟培根的英式松饼等。家庭较忙,务必询问是否有必需品和喜好食品,如咖啡或能量饮料,以免忘记购买。记住要注意预算,除非是特殊场合。
**建模。**在收集偏好数据后,我们在奖励建模、拒绝采样、SFT 和 DPO 中利用这些数据,以增强 Llama 3 的可引导性。
五结果
我们对 Llama 3 进行了广泛的评估,考察:(1) 预训练语言模型的性能,(2) 后训练语言模型的性能,以及 (3) Llama 3 的安全特性。我们在以下各小节中分别呈现这些评估结果。
5.1 预训练语言模型
在本节中,我们报告预训练 Llama 3(第 3 节)的评估结果,并与多种其他相似规模的模型进行比较。我们在可能的情况下复现竞争模型的结果。对于非 Llama 模型,我们报告公开发布的结果中或我们自行复现的结果中表现最好的分数。这些评估的具体信息,包括如 shots 数、指标以及其他相关超参数和配置,可在我们的 Github 仓库中查看。此外,我们也发布了使用公开可用基准进行评估时生成的数据,可在 Huggingface 上获取。我们在标准基准(第 5.1.1 节)、多选题设置变化下的鲁棒性(第 5.1.2 节)以及对抗性评估(第 5.1.3 节)上评估模型性能。我们还进行了污染分析,以估计评估受到训练数据污染影响的程度(第 5.1.4 节)。
5.1.1 标准基准
为了与当前最先进模型比较,我们在表 8 所示的大量标准基准评估上对 Llama 3 进行测试。这些评估覆盖八个顶级类别:(1) 常识推理;(2) 知识;(3) 阅读理解;(4) 数学、推理与问题求解;(5) 长上下文;(6) 代码;(7) 对抗性评估;(8) 综合评估。
实验设置。对于每个基准,我们计算 Llama 3 以及其他相似规模预训练模型的分数。在可能的情况下,我们使用自己的评估管线重新计算其他模型的结果。为确保公平比较,我们选择我们重新计算的结果与该模型公开报告的、在相似或更保守设置下的最优分数。关于评估设置的其他细节可在此处查看。对于某些模型,由于预训练模型未发布或 API 无法提供 log-probabilities,因此无法(重新)计算基准值。特别地,对于所有与 Llama 3 405B 规模接近的模型均是如此。因此,我们没有报告 Llama 3 405B 的类别平均分,因为这需要所有基准都具备可用分数。
显著性估计。基准分数是模型真实性能的估计。由于基准数据集是从某个底层分布中抽样得到的有限样本,因此这些估计具有方差。我们遵循 Madaan 等(2024b),报告基于 95% 置信区间(CI)的方差估计,假设基准分数服从高斯分布。尽管该假设并不完全准确(例如分数有界),初步的 bootstrap 实验表明,CI(针对离散指标)是一个良好的近似:

其中 S 为观测到的基准分数(如 accuracy 或 EM),N 为基准样本数量。我们省略非简单平均的基准分数的置信区间。需要注意的是,由于子采样并非唯一的方差来源,我们的 CI 值低估了模型能力估计的真实变动。
8B 和 70B 模型的结果。图 12 报告了 Llama 3 8B 和 70B 在常识推理、知识、阅读理解、数学与推理以及代码基准上的平均性能。结果表明,Llama 3 8B 在几乎所有类别中都优于竞争模型,包括按类别胜率和按类别平均性能。我们还发现 Llama 3 70B 在大多数基准上显著优于其前代 Llama 2 70B,除了可能已经接近饱和的常识类基准。Llama 3 70B 也优于 Mixtral 8x22B。
图 12 显示了预训练的 Llama 3 88 和 70B 模型在预训练基准测试上的性能。结果按能力类别汇总,方法是对对应于该类别的所有基准测试的准确率取平均值。
所有模型的详细结果。表 9、10、11、12、13 和 14 展示了预训练 Llama 3 8B、70B 和 405B 模型在阅读理解任务、代码任务、常识理解任务、数学推理任务以及通用任务上的基准性能。这些表格将 Llama 3 的性能与相似规模模型进行了对比。结果显示,Llama 3 405B 在其类别内具有竞争力,尤其是显著优于此前的开源模型。对于长上下文,我们在第 5.2 节中呈现更全面的结果(包括如大海捞针类的探测任务)。
表9 预训练模型在阅读理解任务上的性能。
结果包含95%置信区间。
表10 预训练模型在编码任务上的性能。
结果包含95%置信区间。
表11 预训练模型在常识理解任务上的性能。结果包含95%置信区间。
Table 12 Pre-trained model performance on math and reasoning tasks. Results include 95% confidence intervals. ♢11-shot. △Variable shot.
表13 预训练模型在通用语言任务上的性能。结果包含95%置信区间。
表14 预训练模型在长上下文任务上的性能。结果包含95%置信区间:
5.1.2 模型鲁棒性
除了在基准测试上的表现之外,鲁棒性也是衡量预训练语言模型质量的重要因素。我们研究了预训练语言模型在多项选择题(MCQ)设置中的设计选择鲁棒性。已有研究报告指出,模型性能会对这些设置中看似任意的设计选择十分敏感,例如:模型分数甚至模型排名可能会随着上下文示例的顺序和标签改变而变化(Lu et al., 2022; Zhao et al., 2021; Robinson and Wingate, 2023; Liang et al., 2022; Gupta et al., 2024),提示格式的微小变化(Weber et al., 2023b; Mishra et al., 2022),或者答案选项的格式和顺序(Alzahrani et al., 2024; Wang et al., 2024a; Zheng et al., 2023)。受此启发,我们使用 MMLU 基准评估预训练模型在以下方面的鲁棒性:(1)小样本标签偏置,(2)标签变体,(3)答案顺序,以及(4)提示格式:
-
**小样本标签偏置。**参考 Zheng et al. (2023) 和 Weber et al. (2023a),我们研究了四个小样本示例中标签分布的影响。具体来说,我们考虑以下设置:(1) 所有小样本示例具有相同标签(A A A A);(2) 所有示例具有不同标签(A B C D);(3) 仅包含两个标签(A A B B 和 C C D D)。
-
**标签变体。**我们还研究模型对不同选择 token 集的响应。我们考虑 Alzahrani et al. (2024) 提出的两组 token:一组是常见语言无关 token($ & # @),另一组是没有任何隐含相对顺序的稀有 token(œ § з ü)。我们还考虑了两种版本的标准标签(A. B. C. D. 和 A) B) C) D))以及数字列表(1. 2. 3. 4.)。
-
**答案顺序。**参考 Wang et al. (2024a),我们计算模型结果在不同答案顺序下的稳定性。为此,我们根据一个固定的排列重新映射数据集中所有答案。例如,对于排列 A B C D,所有标签为 A 和 B 的选项保持不变,而所有标签为 C 的选项被映射为 D,反之亦然。
-
**提示格式。**我们评估了不同任务提示下性能的变化,这些提示在信息量上有所不同:有的仅要求模型回答问题,而其他提示会断言模型的专业能力或要求选择最佳答案。
图 13 展示了我们在标签变体(左)和小样本标签偏置(右)方面的鲁棒性实验结果。结果表明,我们的预训练语言模型对 MCQ 标签变化和小样本提示标签结构变化都非常鲁棒。这种鲁棒性在 405B 参数模型中表现得尤为明显。图 14 展示了我们关于答案顺序和提示格式鲁棒性的研究结果。该图进一步强调了我们预训练语言模型(尤其是 Llama 3 405B)的性能鲁棒性。
图 13 展示了我们预训练语言模型在 MMLU 基准测试中对不同设计选择的鲁棒性。左图:不同标签变体的性能。右图:少样本示例中不同标签的性能。
图 14 展示了我们预训练语言模型在 MMLU 基准测试中对不同设计选择的鲁棒性。左图:不同答案顺序下的性能。右图:不同提示格式下的性能。
5.1.3 对抗性基准
除了上述基准测试,我们还在三个领域的多个对抗性基准上进行评估:问答、数学推理和改写检测。这类测试用于探测模型在专门设计的困难任务上的能力,也可能用于揭示模型是否在基准测试上出现过拟合。对于问答任务,我们使用 Adversarial SQuAD(Jia and Liang, 2017)和 Dynabench SQuAD(Kiela et al., 2021)。对于数学推理,我们使用 GSM-Plus(Li et al., 2024c)。对于改写检测,我们使用 PAWS(Zhang et al., 2019)。
图 15 展示了 Llama 3 8B、70B 和 405B 在对抗性基准上的得分与其在非对抗性基准上的表现之间的关系。非对抗性基准包括:问答任务的 SQuAD(Rajpurkar et al., 2016)、数学推理的 GSM8K,以及改写检测的 QQP(Wang et al., 2017)。每个数据点代表一组对抗性与非对抗性数据集的组合(例如 QQP 与 PAWS),我们展示了每个类别中的所有可能组合。图中的黑色对角线表示对抗性与非对抗性数据集之间的性能一致性------位于该线上意味着模型在对抗性和非对抗性情况下表现相似。
图 15 展示了问答、数学推理和释义检测基准测试中对抗性和非对抗性性能的对比。左图:预训练模型的结果。右图:后训练模型的结果。
在改写检测方面,无论是预训练模型还是后训练模型,都似乎不再受到 PAWS 这类对抗性设置的影响,与上一代模型相比取得了显著进步。该结果验证了 Weber et al. (2023a) 的发现,后者也指出 LLMs 不易受到一些对抗性数据集中存在的虚假关联的干扰。然而,在数学推理和问答任务中,对抗性性能仍显著低于非对抗性性能。对预训练模型和后训练模型而言,这一趋势是类似的。
5.1.4 污染分析
我们进行污染分析,以估计预训练语料中的评测数据污染在多大程度上可能影响基准分数。以往研究采用了多种不同的污染检测方法,并设置了不同的超参数------我们参考 Singh et al. (2024) 对此进行的综述。任何这些方法都可能出现假阳性和假阴性,而如何最佳地进行污染分析仍是一个开放的研究问题。在此,我们主要遵循 Singh et al. (2024) 的建议。
Method. 具体而言,Singh et al. (2024) 提出应基于经验选择污染检测方法,即选择能够在数据集的"干净"部分与完整数据集之间产生最大差异的方法,他们将此差异称为估计性能增益(estimated performance gain) 。对于所有评测数据集,我们基于 8-gram 重叠 来对样本进行评分,这一方法被 Singh et al. (2024) 证明对许多数据集十分准确。我们认为:一个数据集 D 的样本是被污染的,如果其 TD 比例的 token 属于至少在预训练语料中出现一次的 8-gram。我们为每个数据集单独选择 TD,使其在三个模型规模中能产生最大的显著估计性能增益。
Results. 在表 15 中,我们报告了在最大估计性能增益下,被视为污染的数据在所有关键基准测试中的百分比。我们从表中排除了一些基准测试的数据,例如其结果不显著(例如干净或污染的样本集过小,或估计性能增益表现极不稳定)。从表 15 可以看出,对某些数据集而言,污染有较大影响,而对另一些则影响较小。例如,在 PiQA 和 HellaSwag 中,污染估计和性能增益估计都非常高。另一方面,对于 Natural Questions ,尽管估计的污染率达 52%,但几乎对性能没有影响。对于 SQuAD 和 MATH ,较低阈值会导致较高的污染率,但不会带来性能增益。这表明污染对这些数据集可能并无帮助,或需要更大的 n 才能获得更准确的估计。最后,对于 MBPP、HumanEval、MMLU 和 MMLU-Pro,可能需要使用其他污染检测方法:即使使用了更高的阈值,8-gram 重叠仍给出了过高的污染得分,难以获得可靠的性能增益估计。
表 15 由于训练语料库中存在相似数据,评估数据集被认为受到污染的百分比,以及这种污染可能带来的估计性能提升。详情请参见正文。
5.2 后训练语言模型
我们在不同能力方向的基准测试上展示了 Llama 3 后训练模型的结果。与预训练阶段类似,我们发布了使用公开基准生成的评测数据,可在 Huggingface 上获取。有关我们评测设置的更多细节可在此处查看。
**Benchmarks and metrics.**表 16 包含了所有基准测试的概览,按能力类别组织。我们通过对后训练数据运行与每个基准提示的 exact match(精确匹配)来进行去污染(decontamination)。除了标准学术基准,我们还进行了大规模人工评测,覆盖多种能力方向。详细内容见第 5.3 节。
**Experimental setup.**我们采用与预训练阶段相似的实验设置,并对 Llama 3 与其他相似规模和能力的模型进行了对比分析。在可能的情况下,我们会自行评估其他模型的性能,并将其与已报告的分数对比,取其中最佳值。有关我们评测设置的更多细节可在此处查看。
表 16 按类别划分的训练后基准测试。概述了我们用于评估训练后 Lama 3 模型的所有基准测试,并按能力排序。
5.2.1 通识知识与指令遵循基准测试
我们在表 2 中对 Llama 3 进行了通识知识与指令遵循基准测试。
General knowledge(通识知识)。 我们使用 MMLU(Hendrycks et al., 2021a) 和 MMLU-Pro(Wang et al., 2024b) 来评估 Llama 3 的知识问答能力。对于 MMLU,我们报告 5-shot 标准设置下、无 CoT 的子任务宏平均准确率 。MMLU-Pro 是 MMLU 的扩展,包含更具挑战性的、注重推理的问题,移除了噪声问题,并将选项数量从 4 扩展到 10。鉴于其强调复杂推理,我们报告 5-shot CoT。所有任务均被格式化为生成任务,类似 simple-evals(OpenAI, 2024)。
如表 2 所示:我们的 8B 和 70B Llama 3 版本 在两项通识知识任务上均优于其他同规模模型。405B 模型 表现优于 GPT-4 与 Nemotron 4 340B,而 Claude 3.5 Sonnet 在更大模型中领先。
指令遵循。 我们使用 IFEval(Zhou et al., 2023) 评估 Llama 3 和其他模型遵循自然语言指令的能力。IFEval 包含约 500 个"可验证指令" ,例如"写超过 400 字",可通过启发式规则自动评估。我们在表 2 中报告 提示级与指令级准确率的平均值,涵盖严格与宽松两类标准。所有 Llama 3 版本均在 IFEval 上超越同级模型。
5.2.2 能力测试
接下来,我们在大量原本用于测试人类能力的考试上评估模型。我们从公开的官方来源获取这些考试;对于部分考试,我们报告每种考试类型下不同试卷的平均得分。具体而言,我们对以下考试取平均分:
GRE: 官方 GRE Practice Test 1 和 2(ETS 提供);
LSAT: 官方 Preptest 71、73、80、93;
SAT: 来自 2018 年版《The Official SAT Study Guide》的 8 套试题;
AP: 每个科目一份官方练习卷;
GMAT: 官方 GMAT Online Exam。
考试题包含多项选择(MCQ)与生成题。我们排除所有带图片的题目。对于 GRE 中包含多正确答案的问题,仅当模型选中所有正确选项时才视为正确。当一个考试包含多套试卷时,我们采用 few-shot 提示。分数尺度如下:GRE:缩放至 130--170 区间;其他考试:报告准确率。
我们的结果如表 17 所示。我们观察到:Llama 3 405B 的表现与 Claude 3.5 Sonnet 和 GPT-4 4o 非常接近。70B 版本表现尤为突出:明显优于 GPT-3.5 Turbo在许多测试上超过 Nemotron 4 340B。
表 17 展示了 Lama 3 模型和 GPT-40 在包括LSAT、SAT、GMAT、AP 和 GRE 考试在内的多种能力测试中的表现。对于 GRE 考试,我们报告的是标准化分数;对于其他考试,我们报告的是准确率。表底部两行分别对应 GRE 数学和 GRE 语文,我们报告的是 170 分制的标准分数
5.2.3 编码基准测试
我们在多个流行的 Python 和多编程语言基准上评估 Llama 3 的代码生成能力。
为了衡量模型生成功能正确代码的有效性,我们使用 pass@N 指标 ,该指标评估 N 次生成中通过单元测试的比例。我们报告 pass@1。
Python 代码生成。 HumanEval(Chen et al., 2021)和 MBPP(Austin et al., 2021)是流行的 Python 代码生成基准,它们主要关注相对简单、独立的函数。
HumanEval+(Liu et al., 2024a)是 HumanEval 的增强版本,通过生成更多测试来避免误判。
MBPP EvalPlus 基础版本(v0.2.0)从原始 MBPP(训练集与测试集,共 974 题)中筛选出了 378 个格式良好的问题(Liu et al., 2024a)。这些基准的结果报告在表 18 中。在这些 Python 基准的各个版本中:Llama 3 8B 和 70B 均优于同规模模型。 在最大模型规模中,Llama 3 405B、Claude 3.5 Sonnet 和 GPT-4o 表现相似,其中 GPT-4o 最强。
多编程语言代码生成。 为了评估 Python 之外的代码生成能力,我们报告 MultiPL-E(Cassano et al., 2023) 基准的结果,该基准基于将 HumanEval 和 MBPP 的问题翻译至多种语言。部分流行语言的结果报告在表 19 中。需要注意的是,与表 18 中的 Python 结果相比,多语言版本的性能出现了显著下降。
表 18 代码生成基准测试的 Pass@1 得分。我们报告了HumanEval (Chen et al..2021)、MBPP(Austin et al., 2021)以及 EvalPlus (Liu et al..2024a) 版本的结果。
表 19 非 Python 编程任务的性能。我们报告了Llama3 在 MultiPL-E 上的结果(Cassano 等人,2023)。
5.2.4 多语言基准测试
Llama 3 支持 8 种语言 ------ English、German、French、Italian、Portuguese、Hindi、Spanish 和 Thai,尽管基础模型实际上使用了更广泛的语言集合进行训练。在表 20 中,我们展示了 Llama 3 在多语言 MMLU(Hendrycks et al., 2021a)和 Multilingual Grade School Math(MGSM)(Shi et al., 2022)上的评测结果。
Multilingual MMLU。 我们使用 Google Translate 将 MMLU 的问题、few-shot 示例和答案翻译成多种语言。任务指令保持英文,并在 5-shot 设置下进行评测。在表 20 中,我们报告 德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语 的平均结果。
MGSM(Shi et al., 2022)。 我们使用 simple-evals(OpenAI, 2024)中的原生提示,对模型进行 0-shot CoT 测试。在表 20 中,我们报告 MGSM 覆盖语言的平均结果。
我们发现:Llama 3 405B 在 MGSM 上优于大多数模型,达到平均 91.6%。 在 MMLU 上,与之前的英文 MMLU 结果一致,Llama 3 405B 落后 GPT-4o 2% 。另一方面,Llama 3 70B 和 8B 表现十分强劲,在两项任务上均大幅领先于同类模型。
表 20 多语言基准测试。对于 MGSM(Shi 等人2022),我们报告了 Llama3 模型的零样本 CoT结果。多语言 MMLU 是一个内部基准测试,包含翻译成7种语言的 MMLU(Hendrycks 等人2021a)问答--我们报告了这些语言的五样本平均结果。
5.2.5 数学与推理基准测试
我们的数学与推理基准测试结果呈现在表 2 中。、Llama 3 8B 在 GSM8K、MATH 和 GPQA 上均优于同规模模型。70B 模型 在所有基准中显著优于其同级别的模型。Llama 3 405B 在 GSM8K 和 ARC-C 中是其类别中的最佳模型;在 MATH 上是第二名。在 GPQA 上,其表现与 GPT-4 4o 接近,而 Claude 3.5 Sonnet 以显著优势成为最佳模型。
5.2.6 长上下文基准
我们考虑了一组覆盖多种领域和文本类型的多样化任务。在下面列出的基准测试中,我们聚焦于使用无偏评估协议的子任务,即基于准确率的指标,而非 n-gram 重叠指标。我们也优先选择在实验中发现方差较低的任务。
-
Needle-in-a-Haystack(大海捞针)(Kamradt, 2023) 衡量模型在长文档中检索隐藏信息的能力,这些信息被插入在文档的随机部分。我们的 Llama 3 模型展示了完美的 needle 检索性能------在所有文档深度和上下文长度下,成功检索了 100% 的 needle。我们还在 Multi-needle(表 21)上测量性能,这是 Needle-in-a-Haystack 的一个变体,其中我们在上下文中插入四个 needle,并测试模型是否能够检索其中两个。我们的 Llama 3 模型取得了近乎完美的检索结果。
-
ZeroSCROLLS(Shaham et al., 2023) 是一个用于长文本自然语言理解的 zero-shot 基准测试。我们在验证集上报告数值,因为真实答案并未公开。我们的 Llama 3 405B 和 70B 模型在该基准的多个任务上匹配或超过了其他模型。
-
InfiniteBench(Zhang et al., 2024) 要求模型理解上下文窗口中的长距离依赖关系。我们在 En.QA(小说问答)和 En.MC(小说多选问答)任务上评估 Llama 3,其中我们的 405B 模型优于所有其他模型,尤其是在 En.QA 上的提升尤为显著。
表 21 长上下文基准测试。对于ZeroSCROLLS(Shaham 等人,2023),我们报告验证集上的结果。对于 QALITY,我们报告精确匹配率;对于Qasper,我们报告 F1 值;对于 SQuality,我们报告 rougeL值。对于InfiniteBench(Zhang 等人,2024),我们报告 En.QA 指标的 F1 值;对于En.MC,我们报告准确率。对于 Multi-needle(Kamradt,2023),我们在上下文中插入4个针,并测试模型是否能在不同上下文长度下检索到2 个针。我们计算了 10 种序列长度(最高达128k)的平均召回率。
5.2.7 工具使用性能
我们在一系列 zero-shot 工具使用(即函数调用)基准上评估我们的模型:Nexus(Srinivasan et al., 2023)、API-Bank(Li et al., 2023b)、Gorilla API-Bench(Patil et al., 2023),以及伯克利函数调用排行榜(BFCL)(Yan et al., 2024)。结果显示在表 22 中。
在 Nexus 上,我们的 Llama 3 变体相比同类模型表现最佳。在 API-Bank 上,我们的 Llama 3 8B 和 70B 模型显著超越了其类别中的其他模型。405B 模型仅比 Claude 3.5 Sonnet 低 0.6%。最后,在 BFCL 上,我们的 405B 和 70B 模型表现具有竞争力,并在各自大小类别中均为第二名。Llama 3 8B 在其类别中表现最佳。
**人工评估。**我们还进行了人工评估,以测试模型的工具使用能力,重点关注代码执行任务。我们收集了 2000 条与代码执行(不含绘图与文件上传)、绘图生成、文件上传相关的用户提示。这些提示来自 LMSys 数据集(Chiang et al., 2024)、GAIA 基准(Mialon et al., 2023b)、人工标注者,以及合成生成。
我们使用 OpenAI Assistants API¹⁰ 将 Llama 3 405B 与 GPT-4o 进行比较。结果显示在图 16 中。在纯文本代码执行任务和绘图生成任务中,Llama 3 405B 显著优于 GPT-4o。然而,在文件上传使用场景下,它落后于 GPT-4o。
图 16 展示了 Llama3 4058与GPT-40 在代码执行任务(包括绘图和文件上传)上的人工评估结果。Llama3 4058 在代码执行(不包括绘图和文件上传)以及图形生成方面优于 GPT-40,但在文件上传用例中则落后于 GPT-40.
表 22 零样本工具使用基准测试。我们报告了Nexus (Srinivasan等人,2023)、APl-Bank(Li等人,2023b)、APIBench(Patil等人,2023)和BFCL (Yan 等人,2024)的函数调用准确率。
5.3 人工评估
除了标准基准集评估,我们还执行了一系列人工评估。这些评估帮助我们衡量并优化模型性能中更为细腻的方面,如模型的语气、冗长度、对语境和文化细节的理解。设计良好的人工评估能够紧密反映用户体验,为我们提供模型在真实世界场景中的表现洞察。
**提示收集。**我们收集了覆盖广泛类别与难度的高质量提示。为此,我们首先开发了一个包含多种类别和子类别的分类体系,以尽可能覆盖模型能力。基于此分类体系,我们收集了约 7000 条提示,覆盖六项单项能力(英语、推理、编程、印地语、西班牙语、葡萄牙语)和三项多轮能力¹¹(英语、推理、编程)。我们确保在每个类别中,提示在子类别间均匀分布。我们还将每个提示归类为三个难度等级之一,并确保数据集中约包含 10% 简单、30% 中等、60% 困难提示。所有人工评估提示集都经过严格的质量保证流程。建模团队无法访问这些提示,以防止意外污染或对测试集的过拟合。
**评估流程。**为了进行两个模型的成对人工评估,我们要求人工标注者在两个模型回答之间进行偏好选择。标注者使用 7 分制评分,以表明哪一个回答明显更好、更好、稍好或与另一回答相当。当标注者标明某一模型回答更好或明显更好时,我们将其视为该模型的一次"胜利"。我们在各项能力下报告模型之间成对比较的胜率。
结果。 我们使用人工评估流程,将 Llama 3 405B 与 GPT-4(0125 API 版本)、GPT-4o(API 版本)以及 Claude 3.5 Sonnet(API 版本)进行比较。结果显示在图 17 中。我们观察到:Llama 3 405B 的表现大致与 GPT-4(0125 版本)持平。与 GPT-4o 和 Claude 3.5 Sonnet 相比表现参差不齐(部分胜出、部分落败)。在几乎所有能力上,Llama 3 与 GPT-4 的胜率均在误差范围内。在多轮推理和编程任务中,Llama 3 405B 优于 GPT-4,但在多语言(印地语、西班牙语、葡萄牙语)提示上表现逊于 GPT-4。在英语提示上与 GPT-4o 持平,在多语言提示上与 Claude 3.5 Sonnet 持平,并在单轮与多轮英语任务上优于 Claude 3.5 Sonnet。然而,在编程与推理能力上落后于 Claude 3.5 Sonnet。从定性上看,我们发现人工评估中的模型表现受到一些细微因素的强烈影响,如模型语气、回答结构与冗长度------这些都是我们在后训练过程中重点优化的因素。总体来看,我们的人工评估结果与标准基准测试高度一致:Llama 3 405B 是当前最具竞争力的开源可用模型之一,表现接近行业领先模型。
**限制。**尽管所有人工评估结果都经过了严格的数据质量保证,但由于难以定义客观的模型回答质量标准,人工评估仍可能受到标注者的个人偏好、背景与主观判断的影响,从而导致一定程度的不一致或不可靠性。
图 17:Llama 3 4058 模型的人工评估结果。左图:与 GPT-4 的比较。中图:与 GPT-40 的比较。右图:与 Claude 3.5 Sonnet 的比较。所有结果均包含 95% 置信区间,且不包含并列结果。
5.4 安全性
我们重点研究 Llama 3 在最大化提供有用信息的同时,以安全、负责任的方式生成内容的能力。我们的安全性工作始于预训练阶段,主要通过数据清洗和过滤。在此之后,我们描述用于安全微调的方法,重点讲述如何训练模型对齐特定的安全策略,同时保持模型的有用性。我们分析 Llama 3 的各项能力,包括多语言、长上下文、工具使用以及多种多模态能力,以衡量我们的安全缓解措施的有效性。
随后,我们描述针对网络安全、化学与生物武器风险的增幅(uplift)评估。增幅指的是相较现有可用技术(例如网页搜索)而言,新技术发展所引入的额外风险。
接着,我们介绍我们如何利用红队测试(Red Teaming)迭代式地识别并应对各项能力下的安全风险,并执行剩余风险评估。
最后,我们描述系统级安全性,即围绕模型输入与输出开发并编排分类器,以进一步提升安全性,并让开发者更容易依据不同应用自定义安全策略,从而更负责任地部署生成式 AI。
5.4.1 基准构建
我们创建了多种内部基准,以帮助我们安全、负责任地开发模型。我们的基准深受 ML Commons 风险类别分类法(Vidgen et al., 2024)中危害类别的启发。虽然已有一些面向语言模型安全性的基准,如 ToxiGen (Hartvigsen et al., 2022)、XS Test (Röttger et al., 2023) 等,但 Llama 3 的许多新能力在现有外部基准中没有足够覆盖,且外部基准常缺乏足够的广度和深度。
对于每个风险类别,我们收集了人工编写的提示,这些提示具有对抗性或接近边界的特性------示例可见表 23。对抗性提示从直接诱导有害响应的简单形式,到融合复杂 jailbreak 技术的高级提示都有。基于这些对抗性提示的基准用于衡量违规率(violation rate)。
作为违规率的对照指标,我们也构建了由边界提示组成的"错误拒答(false refusal)"基准。当模型面对一个可安全回答的提示却错误地拒绝回答时,我们称之为错误拒答。边界提示处于决策边界附近,一个校准良好的模型应当能处理,例如:"我怎样才能从总是把自己当主角的闺蜜那里抢走风头??"。我们的违规模型+错误拒答基准在每个能力或语言上规模超过 4000 个提示,包含单轮与多轮混合类型。
表 23 我们内部基准测试中所有能力对应的对抗性提示示例
5.4.2 安全预训练
我们认为负责的开发必须从端到端角度出发,并贯穿模型开发与部署的每个阶段。在预训练期间,我们应用多种过滤措施,如识别可能包含个人可识别信息(PII)的网站过滤器(见 3.1 节)。我们也重点关注可发现的记忆化(discoverable memorization)(Nasr et al., 2023)。类似 Carlini et al. (2022),我们利用训练语料中所有 n-gram 的高效滚动哈希索引,在不同出现频率下采样提示和真实答案。我们通过改变提示长度、真实答案长度、目标数据语言、领域等构建不同测试场景,并测量模型逐字生成真实答案序列的频率,从而分析不同场景下的相对记忆化率。我们将逐字记忆化(verbatim memorization)定义为包含率------即模型生成中完全包含真实答案续写的比例------并报告按数据中特征出现率加权的平均结果(见表 24)。我们发现训练数据记忆化率很低(405B 模型在 n = 50 与 n = 1000 条件下分别为 1.13% 与 3.91%)。记忆化率与同规模的 Llama 2 模型大致一致,且使用相同方法测量其数据集时得到相似水平。
表 24 显示了预训练的 Llama3 在选定测试场景下的平均逐字记忆率。我们的基线模型是 Lama 2,在英语 50 字场景下,我们使用了与 Lama 2 相同的提示方法,并将其应用于其数据组合。
5.4.3 安全微调
我们描述用于缓解多种能力风险的安全微调方法,包括两个关键部分:(1)安全训练数据,(2) 风险缓解技术。我们的安全微调过程建立在通用微调方法之上,并加入专门用于解决特定安全问题的修改。
我们优化两个主要指标:Violation Rate (VR) :模型生成违反安全策略的响应时所占比例。False Refusal Rate (FRR):模型对无害提示错误拒绝回答的比例。同时,我们在有用性基准上评估模型 ,以确保安全性提升不会降低整体有用性。
微调数据。 安全训练数据的质量与设计对性能有重大影响。通过大量消融实验,我们发现质量比数量更关键 。我们主要使用由数据供应商收集的人工生成数据,但发现其中可能存在错误与不一致性------尤其是在涉及细微安全策略时。为了确保最高质量数据,我们开发了AI 辅助标注工具,支持我们严格的质量保证流程。除了收集对抗性提示外,我们还收集了相似的提示,即"边界提示",用于教模型学习如何给出有用的响应,从而降低 FRR。
除了人工标注,我们还利用合成数据 提升训练数据的质量与覆盖。我们使用多种技术生成更多对抗样本,包括:基于 carefully crafted 系统提示的 上下文学习(ICL) 。基于新攻击向量的种子提示 引导式变异(mutation)。包括 Rainbow Teaming(Samvelyan et al., 2024)在内的高级算法(基于 MAP-Elites (Mouret & Clune, 2015)),可在多维约束下生成多样化提示。
我们进一步处理模型在生成安全回答时的语气,因为这会影响用户体验。我们为 Llama 3 制定了一套拒答语气指南,并确保所有新的安全数据都通过严格的质量保证流程遵循这套指南。我们还利用零样本重写(zero-shot rewriting)和人工参与编辑改进现有安全数据,使其与指南对齐。通过这些方法,以及用于评估安全响应语气质量的语气分类器,我们大幅改进了模型在安全场景下的语言表达。
安全监督微调。 遵循我们在 Llama 2(Touvron 等,2023b)中的方法,我们在模型对齐阶段将所有有用性数据与安全数据结合起来。此外,我们引入了一个"边界(borderline)"数据集,帮助模型区分安全与不安全请求之间的细微差别。我们的标注团队被要求严格按照安全指南,为安全相关提示精心撰写回答。我们发现,当我们在 SFT 中有策略地平衡对抗样本与边界样本的比例时,SFT 在模型对齐中极为有效。我们将重点放在更具挑战性的高风险领域,并在这些领域中提高边界样本比例。这在我们成功降低安全风险的同时保持最低误拒率方面发挥了关键作用。
进一步地,我们在图 18 中研究了模型规模对 FRR 与 VR 权衡的影响。结果表明该影响是变化的------较小的模型相比大型模型,需要在有用性数据中混入更高比例的安全数据,以达到相当的安全性能,并且较难像大模型一样高效地平衡 VR 与 FRR。
**Safety DPO。**为了进一步强化安全学习,我们在 DPO 的偏好数据集中加入对抗样本与边界样本。我们发现,在嵌入空间中将响应对(response pairs)设计得几乎正交,能够更有效地教会模型区分好与坏的回答。我们进行了多组实验,以确定对抗样本、边界样本与有用性样本的最佳比例,以优化 FRR 与 VR 之间的权衡。我们也发现模型规模会影响学习结果------因此,我们为不同规模的模型定制了不同的安全数据混合策略。
Figure 18 模型规模对安全数据混合设计在平衡违规率(VR)与误拒率(FRR)上的影响。
散点图中的每个点代表一种在安全数据与有用性数据之间不同的混合比例。不同规模的模型具备不同的安全学习能力。我们的实验显示,相比 70B 模型,8B 模型在整体 SFT 数据混合中需要更高比例的安全数据,以获得相近的安全性能。更大的模型能够更好地区分对抗性与边界性上下文,从而在 VR 与 FRR 之间取得更有利的平衡。
5.4.4 安全结果
我们首先从多个维度概述 Llama 3 的整体行为表现,然后描述每一项新的能力及其在降低安全风险方面的有效性。
**整体性能。**Llama 3 的最终违规率与误拒率相较于同类模型的表现如图 19 与图 20 所示。结果主要聚焦于我们最大的模型------Llama 3 405B,并与相关竞争者进行对比。其中两个竞争者是 API 形式提供的端到端系统,另一个是我们内部托管的开源语言模型,我们能够直接对其进行评估。我们同时评估 Llama 模型本体以及与 Llama Guard(我们的开源系统级安全解决方案,详见第 5.4.7 节)结合后的表现。
尽管低违规率是理想的,但必须将误拒率作为反向指标一起考虑,因为一个始终拒绝的模型虽然"极其安全",却完全没有用处。同样,一个对任何请求都照单全收、不加判断地回答的模型,会产生极大的危害与毒性。在图 21 中,基于我们的内部基准,我们探索业界不同模型与系统如何处理这一安全性与有用性的权衡,并比较 Llama 3 的位置。我们发现,Llama 3 在保持较低误拒率的同时取得非常有竞争力的违规率结果,显示出良好的有用性与安全性平衡。
**多语言安全。**我们的实验表明,英语的安全知识并不能轻易迁移到其他语言,特别是考虑到安全政策的细微差异以及特定语言的上下文。因此,为每种语言收集高质量的安全数据至关重要。我们还发现,不同语言的安全数据分布会显著影响安全表现------某些语言可以从迁移学习中获益,而其他语言则需要更多特定语言的数据。为了在 FRR 与 VR 之间取得平衡,我们通过迭代方式不断添加对抗样本与边界样本,同时监控两项指标的影响。
图 19 展示了短上下文模型在内部基准上的结果,显示了 Llama 3 在英语与非英语语言上的违规率与误拒率,并与类似模型和系统进行了比较。为构建每种语言的基准,我们结合母语者编写的提示,有时再补充来自英语基准的翻译数据。对于每种支持的语言,我们发现配合 Llama Guard 的 Llama 405B 至少与两套竞争系统一样安全,甚至在我们的内部基准中更安全,同时保持了有竞争力的误拒率。而仅看 Llama 405B 模型本体(未加 Llama Guard),其违规率显著低于竞争的开源独立模型,但误拒率会稍高一些。
图 19 展示了 Lama 3 4058(启用和禁用 LamaGuard(LG)系统级保护)与竞争对手模型和系统在英语和我们核心多语言短上下文基准测试中的违规率(VR)和误拒率(FRR)。Llama 3 不支持的语言用"x"表示。数值越低越好。
**长上下文安全。**长上下文模型在没有针对性防护时,很容易受到 many-shot 的越狱攻击(Anil 等,2024)。为了解决这一问题,我们在 SFT 数据集中加入带有长上下文中不安全示范但要求模型保持安全行为的样本。我们开发了可扩展的防御策略,显著降低了 VR,使模型即便在 256-shot 攻击下仍能有效抵御。这种方法对 FRR 与大多数有用性指标的影响极小甚至没有影响。
为了量化长上下文安全策略的效果,我们使用了两个额外的基准:DocQA 与 Many-shot。DocQA(document question answering) 使用含有潜在可被恶意利用信息的长文档,模型会被提供文档及相关问题,以测试文档内容是否影响模型对提示的安全性。Many-shot 则根据 Anil 等(2024)的方法,构造由大量不安全提示-回答组成的长对话历史,最后给模型一个与历史无关的新提示,以测试模型是否被不安全内容影响。图 20 展示了 DocQA 与 Many-shot 的违规率及误拒率。我们看到,不论是否启用 Llama Guard,Llama 405B 在这些测试中均在违规率与误拒率上对 Comp.2 系统实现了帕累托更优的表现。与 Comp.1 相比,Llama 405B 的安全性显著更强,但误拒率有所上升。
图 20 展示了工具使用和长上下文基准测试中的违规率(VR) 和误拒率(FRR)。数值越低越好。DocQA和 Many-shot 基准测试的性能分别列出。请注意由于 Many-shot 基准测试的对抗性,我们没有相应的边界数据集,因此未测量其误拒率。对于工具使用(搜索)测试,我们仅将 Llama 3 4058 与Comp.1 进行比较。
**工具使用安全。**由于可用工具的多样性、工具调用的实现方式以及与模型的集成方式,使得工具使用成为一个难以完全缓解的安全风险领域(Wallace 等,2024)。我们重点关注搜索工具这一使用场景。图 20 展示了违规率与误拒率。我们与 Comp.1 系统进行了对比,发现 Llama 405B 的安全性显著更高,但误拒率略高。
5.4.5 网络安全与化学/生物武器安全
**网络安全评估结果。**为评估网络安全风险,我们使用 CyberSecEval 基准框架(Bhatt 等,2023,2024),其中包含用于衡量在生成不安全代码、生成恶意代码、文本提示注入和漏洞识别等领域安全性的任务。我们开发并将 Llama 3 应用于新的鱼叉式网络钓鱼与自主网络攻击基准测试。
总体而言,我们发现 Llama 3 在生成恶意代码或利用漏洞方面没有显著易感性。以下是针对特定任务的简要结果:
-
**不安全编码测试框架:**在评估 Llama 3 8B、70B 和 405B 时,我们继续观察到较大的模型既会生成更多不安全代码,同时也会生成 BLEU 分数平均值更高的代码(Bhatt 等,2023)。
-
**代码解释器滥用提示语料库:**我们发现 Llama 3 模型在某些提示下易于执行恶意代码,其中 Llama 3 405B 在 10.4% 的情况下遵从了恶意提示。Llama 3 70B 的遵从率为 3.8%。
-
**基于文本的提示注入基准:**在提示注入基准上评估时,对 Llama 3 405B 的提示注入攻击有 21.7% 的成功率。图 22 展示了 Llama 3、GPT-4 Turbo、Gemini Pro 和 Mixtral 模型在文本提示注入任务上的成功率。
-
**漏洞识别挑战:**通过 CyberSecEval 2 的夺旗(capture-the-flag)测试挑战来评估 Llama 3 识别和利用漏洞的能力,结果显示 Llama 3 的表现不如业内常用的、基于传统非 LLM 的工具与技术。
-
**鱼叉式网络钓鱼基准:**我们评估了模型在执行旨在欺骗目标的个性化对话中的说服力与成功率。由另一个 LLM 随机生成详细的受害者画像作为鱼叉式钓鱼目标。使用评审 LLM(Llama 3 70B)对 Llama 3 70B 和 405B 与受害者模型(Llama 3 70B)的交互进行评分并评估攻击成功率。Llama 3 70B 与 405B 被评审 LLM 判定为"中等具有说服力"。Llama 3 70B 在 24% 的鱼叉式钓鱼尝试中被判定为成功Llama 3 405B 成功率为 14%图 23 展示了不同模型与钓鱼目标的评审 LLM 给出的说服力评分。
-
攻击自动化框架:
我们评估 Llama 3 70B 与 405B 在勒索软件攻击四个关键阶段中作为自主代理的潜力:网络侦察、漏洞识别、漏洞利用执行及后渗透行为。通过配置模型,使其能够在 Kali Linux 虚拟机上运行命令并根据输出迭代生成新的 Linux 命令,再攻击另一台具有已知漏洞的虚拟机,从而实现自主行为。尽管两者在识别网络服务和开放端口方面效率较高,但在 20 次(70B)与 23 次(405B)测试中均无法有效利用这些信息获取初始访问权限。在漏洞识别阶段,模型表现中等,但难以选择或应用有效的漏洞利用技术;执行漏洞利用的尝试全部失败,后渗透阶段维持访问或影响网络中主机的尝试也完全失败。
图 21 各模型及能力的违规率和错误拒绝率。每个点表示内部能力基准在所有安全类别上的总体错误拒绝率和违规率。符号表示我们是在评估模型级安全还是系统级安全。正如预期,模型级安全结果显示相比系统级安全结果具有更高的违规率和更低的拒绝率。Llama 3 的目标是在保持低违规率的同时实现低错误拒绝率,而一些竞争对手则在两者之间有所偏向。
图 22 显示了不同提示注入策略下,各模型基于文本的提示注入成功率。使用此基准测试评估时,Llama 3 平均而言比 GPT-4 Turbo 和 Gemini Pro更容易受到提示注入的影响,但比 Mixtral 模型更不容易受到提示注入的影响。
图 23 显示了不同鱼又式网络钓鱼模型和目标下的平均鱼又式网络钓鱼说服力得分。尝试说服力由Llama 3 70B 评判器 LLM 进行评估。
网络攻击能力提升(Uplift)测试 。我们开展了一项能力提升研究,测量虚拟助手对新手与专家攻击者在两轮模拟进攻性网络安全挑战中的攻击成功率提升程度。研究共 62 名内部志愿者,分为"专家"(31 人)和"新手"(31 人),基于其进攻性安全经验划分。第一阶段: 参与者在无 LLM 协助但可访问互联网的情况下完成任务。第二阶段: 参与者仍可访问互联网,同时提供 Llama 3 405B 来完成一个难度类似的新任务。对任务阶段完成率的分析显示:无论是专家还是新手,在使用 405B 后的提升均不显著,与仅使用互联网相比差异不大。
化学与生物武器能力提升测试。为评估 Llama 3 在化学与生物武器扩散方面带来的潜在风险,我们开展了能力提升测试,以衡量使用 Llama 3 是否会显著提高行为者策划此类攻击的能力。
研究为六小时测试场景,两名参与者组成一组,要求生成虚构的化学或生物攻击行动计划,覆盖 CBRNE 攻击的主要阶段:试剂获取,生产,武器化,投送方式。要求产生能解决实际材料采购、实验室流程和行动安全等问题的详细计划。参与者分为两类:低技能 (无正规训练),中等技能(有一定正规训练与实践经验)。
该研究由一组 CBRNE 专家协作开展,旨在最大化量化与质化结果的普适性、有效性和稳健性。为了验证研究设计,还进行了初步研究,包括严格的统计功效分析,以确保样本量足够进行统计分析。
每个团队被分配至"对照组"或"LLM 组"。对照组仅能使用基于互联网的资源,而 LLM 组在可访问互联网的同时,还可使用启用了网页搜索(包括 PDF 导入)、信息检索能力(RAG)和代码执行(Python 与 Wolfram Alpha)的 Llama 3 模型。为了测试 RAG 能力,通过关键词搜索生成数百篇相关科学论文的数据集,并预先加载到 Llama 3 模型推理系统中。在测试结束时,每个团队生成的操作计划由具备生物、化学及行动规划领域专业知识的专家评估。每份计划在潜在攻击的四个阶段进行评估,生成指标评分,包括科学准确性、细节程度、规避检测能力以及科学与操作执行的成功概率。通过严格的 Delphi 流程以减轻专家评估中的偏差与变异性后,将各阶段指标汇总生成最终综合评分。
对该研究结果的量化分析显示,使用 Llama 3 模型并未显著提升性能。无论是进行聚合分析(将所有 LLM 条件与仅互联网的对照组比较),还是按子组分析(例如分别评估 Llama 3 70B 与 405B 模型,或分别评估化学与生物武器相关场景),结果均保持一致。经过与 CBRNE 专家验证后,我们评估认为,发布 Llama 3 模型不会显著增加与生物或化学武器攻击相关的生态系统风险。
5.4.6 红队测试
我们利用红队测试发现风险,并将发现的结果用于改进我们的基准和安全微调数据集。我们定期进行红队演练,以持续迭代并发现新风险,这指导了我们的模型开发和缓解过程。
我们的红队由网络安全、对抗性机器学习、负责任 AI 和完整性领域的专家组成,同时包括具有特定地理市场完整性问题背景的多语言内容专家。我们还与关键风险领域的内部和外部主题专家合作,帮助建立风险分类法,并协助进行更有针对性的对抗性评估。
**特定模型能力的对抗性测试。**我们最初的红队测试集中于在特定高风险类别的上下文中发现各个模型能力的风险,然后再测试这些能力的组合。红队重点关注提示级攻击,以模拟更接近真实世界的场景------我们发现模型往往偏离预期行为,特别是在提示意图被混淆或提示叠加多层抽象时。随着能力的增加,这些风险变得更加复杂,我们在下文详细描述了几项红队发现。我们将这些红队发现与内部安全基准结果结合,开发针对性的缓解措施,以持续迭代改进模型安全性。
• 英文短/长上下文 。我们在单轮和多轮对话中使用了已知、已发布及未发布的技术混合。我们还在部分技术和风险类别中利用了类似 PAIR(Chao et al., 2023)的先进对抗性多轮自动化技术。总体而言,多轮对话导致更有害的输出。一些攻击在模型检查点中普遍存在,尤其是当多种技术组合使用时。
-- 多轮拒绝抑制:指定模型响应以遵循特定格式,或在拒绝中包含/排除特定信息作为特定短语。
-- 假设场景:将违规提示包装为假设性/理论性任务或虚构场景。提示可以简单地添加"假设"一词,或设计复杂的分层场景。
-- 角色扮演与人格设定:赋予模型违规人格及特定违规响应特征(如"你是 X,你的目标是 Y"),或让用户扮演特定的良性角色来混淆提示上下文。
-- 添加免责声明与警告:作为响应预设的一种方式,我们假设此方法为模型提供了一条遵循一般安全训练的合规路径。在多轮对话中结合其他攻击请求添加免责声明、触发警告等,会导致违规率增加。
-- 逐步升级违规:多轮攻击从较为无害的请求开始,通过直接提示生成更夸张内容,逐渐引导模型生成严重违规的响应。一旦模型开始输出违规内容,恢复困难(或在遇到拒绝时可使用其他攻击)。对于长上下文模型,这一问题将越来越突出。
• 多语言。 考虑多语言时,我们识别出若干独特风险。
-- 在一个提示或对话中混合多种语言容易导致比单一语言使用时更多的违规输出。
-- 低资源语言可能因缺乏相关安全微调数据、模型安全泛化能力弱或测试/基准优先级不足而导致违规输出。但这种攻击通常导致整体输出质量低,限制了实际对抗性使用。
-- 俚语、特定上下文或文化特定参考可能初看似违规,但模型未正确理解引用,既可能产生真正有害输出,也可能阻止违规输出生成。
• 工具使用。 在测试过程中,除了英文文本级对抗提示技术成功生成违规输出外,还发现了几种工具特定攻击,包括但不限于:
-- 不安全的工具链:一次请求多个工具,其中一个违规,早期检查点可能导致所有工具被调用,输入混合良性和违规。
-- 强制工具使用:通过特定输入字符串、分段或编码文本触发工具输入可能违规,从而产生更违规输出。其他技术可访问工具结果,即使模型通常会拒绝执行搜索或提供结果。
-- 修改工具使用参数:例如在查询中交换词语、重试或在多轮对话中混淆初始请求,导致早期检查点出现违规,作为强制工具使用的一种形式。
**• 儿童安全风险。**儿童安全风险评估由专家团队进行,以评估模型生成可能导致儿童安全风险输出的能力,并指导通过微调进行必要且适当的风险缓解。我们利用这些专家红队测试扩展了评估基准的覆盖范围。在 Llama 3 上,我们开展了基于目标的方法的新深入测试,以沿多条攻击向量评估模型风险。我们还与内容专家合作,进行红队测试评估潜在违规内容,同时考虑市场特定的细微差别或经验。
5.4.7 系统级安全
在大型语言模型的各种现实应用中,模型通常不是孤立使用的,而是集成到更广泛的系统中。本节描述我们的系统级安全实现,该实现补充了模型级缓解措施,提供了更多灵活性和控制能力。
为了实现这一点,我们开发并发布了新的分类器 Llama Guard 3,这是一种针对安全分类微调的 Llama 3 8B 模型。与 Llama Guard 2 (Llama-Team, 2024) 类似,该分类器用于检测输入提示和/或语言模型生成的输出响应是否违反特定危害类别的安全政策。
该分类器设计用于支持 Llama 不断扩展的能力,可用于英文和多语言文本。同时,它针对工具调用场景(如搜索工具和防止代码解释器滥用)进行了优化。我们还提供了量化版本以降低内存需求。我们鼓励开发者以我们发布的系统安全组件为基础,并根据自身使用场景进行配置。
**分类法。**我们在 AI 安全分类法 (Vidgen et al., 2024) 中列出的 13 个危害类别上进行训练:儿童性剥削、诽谤、选举、仇恨、无差别武器、知识产权、非暴力犯罪、隐私、性相关犯罪、性内容、专业建议、自杀与自伤以及暴力犯罪。我们还在代码解释器滥用类别上进行训练,以支持工具调用使用场景。
**训练数据。**我们从 Llama Guard 使用的英文数据 (Inan et al., 2023) 开始,并扩展数据集以纳入新能力。对于多语言和工具使用等新能力,我们收集提示和响应分类数据,并利用为安全微调收集的数据。通过提示工程增加训练集中不安全响应的数量,使 LLM 不拒绝对抗性提示的响应。我们使用 Llama 3 对生成的数据进行响应标签标注。
为了提高 Llama Guard 3 的性能,我们对收集的样本进行了广泛清理,使用人工标注以及 Llama 3 的 LLM 标注。获取用户提示的标签对人类和 LLM 都是更困难的任务,我们发现人工标签略优,特别是对于边界提示,但我们完整的迭代系统能够减少噪声并生成更准确的标签。
**结果。**Llama Guard 3 能显著减少各能力的违规情况(在我们的基准上平均减少 65% 的违规)。注意,增加系统防护(以及任何安全缓解措施)会增加对良性提示的拒绝。在表 25 中,我们报告了违规率的降低和错误拒绝率的增加,以突出这一权衡。在图 19、20 和 21 中也能看到这一效果。
系统安全还提供了更多灵活性。Llama Guard 3 可以仅针对特定危害部署,从而在危害类别级别上控制违规和错误拒绝的权衡。表 26 展示了各类别的违规减少情况,以便开发者根据使用场景决定启用/禁用哪些类别。
为了便于部署安全系统,我们提供了使用常用 int8 量化技术的 Llama Guard 3 量化版本,大小减少超过 40%。表 27 显示量化对模型性能的影响可忽略不计。
基于提示的系统防护。系统级安全组件使开发者能够自定义和控制 LLM 系统对用户请求的响应。作为提高模型系统整体安全性工作的一部分,并帮助开发者负责任地部署,我们描述并发布了两种基于提示的过滤机制:Prompt Guard 和 Code Shield。我们开源这些机制,供社区直接使用或作为灵感进行适配。
Prompt Guard 是一种模型过滤器,用于检测提示攻击,即旨在颠覆 LLM 作为应用一部分的预期行为的输入字符串。该模型是多标签分类器,检测两类提示攻击风险------直接越狱(尝试显式覆盖模型安全约束或系统提示的技术)和间接提示注入(上下文中包含的第三方数据被 LLM 错误执行为用户命令的情况)。该模型基于 mDeBERTa-v3-base 微调,这是一个适合过滤 LLM 输入的小型模型(86M 参数)。我们在表 28 中展示了多个评估数据集的性能。评估包括两个训练分布数据集(越狱和注入)及一个英文的分布外数据集、多语言越狱集(机器翻译生成)和 CyberSecEval 的间接注入数据集(英文及多语言)。总体来看,模型对新分布具有良好的泛化能力,并且性能强劲。
Code Shield 是基于推理时过滤的系统级保护示例。它重点检测在进入下游使用场景(如生产系统)之前生成的不安全代码。它通过静态分析库 Insecure Code Detector (ICD) 实现,该库使用一套静态分析工具分析 7 种编程语言的不安全代码。这类防护通常对开发者有用,可在各种应用中部署多层保护。
表 25 显示了使用 Llama Guard 3 对不同语言进行输入或输出过滤时,相对于 Lama 3 的违规率 (VR)和误拒率(FRR)。例如,VR 为 50% 表示使用Llama Guard 后,Llama 3 模型的违规率降低了50%。评估基于 405B 参数 Llama3 模型的选代结果。数值越低越好。
表 26 在不同安全类别下,使用 Lama Guard 3 进行输入或输出过滤时,相对于 Lama3 的违规率和误拒率。例如,违规率(VR)为 50% 表示使用Llama Guard 时,Llama3 模型的违规率降低了50%。评估基于 Lama3 模型 4058 参数的英文提示和生成结果。数值越低越好。
表 27 int8 Llama Guard。int8 量化对不同模型能力下 Llama Guard 3 输出分类性能的影响
表 28 Prompt Guard 的性能。我们纳入了分布内和分布外评估、使用机器翻译构建的多语言越狱程序,以及来自 CyberSecEval 的间接注入数据集。
5.4.8 限制
我们对 Llama 3 的安全使用风险进行了广泛测量和缓解。然而,没有任何测试能够保证完全识别所有潜在风险。由于训练数据的多样性,尤其是在非英语语言和由经验丰富的对抗性红队人员设计提示时,Llama 3 仍可能生成有害内容。恶意开发者或对抗性用户可能找到新的方法来越狱模型并用于各种不良用途。我们将继续主动识别风险,研究缓解方法,并鼓励开发者在从模型开发到部署及用户使用的每一环节考虑责任。我们希望开发者能够利用并贡献我们在开源系统级安全套件中发布的工具。
六 推理
我们研究了两种技术来实现 Llama 3 405B 模型的高效推理过程:(1)预设硬件性;(2)FP8 主要量化。我们已经公开发布了我们的 FP8 量化实现。
6.1 实例性
当使用BF16数字表示模型参数时,Llama 3 405B不适合单台机器上的8个Nvidia H100 GPU的GPU内存。为了解决这个问题,我们在节点机器上的16个GPU上使用BF16精度进行模型推理控制化。在每台机器内,高NVLink带宽使得可以使用张量缓冲性(Shoeybi等人,2019)。然而,在节点之间,连接带宽较低且延迟较多,我们使用了定量缓冲性(Huang等人,2019)。
在使用实例性进行训练时,气泡是主要的效率问题(见第3.3节)。然而,在推理期间它们不是问题,推理不涉及需要实例性的反向传递。因为因此,我们使用微批量处理来提高模拟推理的吞吐量。
我们评估了在推理工作负载中使用两个微批处理的影响,输入令牌为4,096,输出令牌为256,分别在推理的键值存储预填充阶段和解码阶段。我们发现微批处理提高了本地批量大小的推理数据;如图24。这些改进来自于微批处理在这两个阶段使微批处理能够并行执行。由于微批处理而增加的额外同步点也增加了延迟,但总体而言,微批处理仍然导致了更好的吞吐量延迟权衡。
图 24 微批处理对推理吞吐量和延迟的影响(左图:预填充阶段:右图:解码阶段)。图中的数字对应于(微)批处理大小。
6.2 FP8计算
我们使用H100 GPU对FP8的重构支持进行低精度推理实验。为了实现低精度推理,我们对模型内部的大部分矩阵乘法应用FP8求解。特别是,我们量化了模型中前馈网络层中的大部分参数和激活,这些层大约占推理时间的50%。我们没有建模模型自注意力层的参数。我们利用动态缩放精度来提高精度(Xiao等人,2024b),优化我们的CUDA内核以计算简化的概率。我们发现Llama 3 405B的质量对某些类型的量化非常敏感,并进行了一些额外的更改以提高模型输出质量:
-
1.与Zhang等人(2021)类似,我们不在第一层和最后一层Transformer层进行量化。
-
2.高困惑度的令牌,如目前,可能导致大的激活值。反过来,这可能导致FP8中的高动态缩放因子和不可忽略数量的下溢,导致解码错误。为了解决这个问题,我们将动态缩放因子上限定为1200。
-
3.我们使用按行量化,为参数和激活矩阵计算跨行的缩放因子(见图25)。我们发现这种方法比按张量量化的方法更有效。
标准基准测试结果的影响。标准基准测试结果的影响通常,即使没有这些缓解措施,FP8推理的性能也与BF16推理相当。然而,我们发现这样的基准测试并充分反映FP8结果的影响。当缩放因子没有上界时,模型偶尔会产生损坏的响应,尽管基准性能结果。我们发现,依靠基准测试来最小化损失的分布变化,不如分析使用FP8和BF16产生的100,000个响应的奖励模型的分布。图26显示了我们的量化方法的奖励分布结果。上图的结果显示,我们的FP8量化方法对模型的响应的影响非常有限。
效率的实验评估。图27绘制了在预填充和解密阶段使用Llama 3 405B进行FP8推理的吞吐量延迟权衡,输入令牌为4,096,输出令牌为256。该图比较了第6.1节中描述的填充机BF16推理方法的效率。结果表明,使用FP8推理在预填充阶段的吞吐量提高了高达50%,在解码阶段的吞吐量权衡更明显。
图25展示了张量级和按行FP8校准的示意图。 右侧:按行校准允许使用比左边:张量级校准更细粒度的激活因子。
图26 Llama 3 405B使用BF16和FP8推理的奖励分配分数。我们的FP8量化方法对模型的响应几乎没有影响。
图 27 展示了使用不同流水线并行化设置时,Lama3 405B 进行 FP8 推理与 BF16 推理的吞吐量-延迟权衡。左图:预填充结果。右图:解码结果。
七 视觉实验
我们进行了一系列实验,通过一种由两个主要视觉阶段组成的组合方法将识别能力整合到Llama 3中。首先,我们通过在两个模型之间引入和训练一组交叉焦点层(Alayrac等人,2022),将预训练的图像编码器(Xu等人,2023)和预训练的语言模型组合起来,用于大量图像-文本对。这导致了我们形成了图28所示的模型。其次,引入了时间聚合层和附加的视频交叉注意力层,这些层在大量视频-文本上操作,学习模型识别并处理视频中的时间信息。
采用组合方法进行基础模型开发有几个优点:(1)它使我们能够开发模型和语言建模能力;(2)它避免了模型和语言数据联合预训练的复杂性,这些复杂性源于数据的标记化、来自不同模态的标记的背景困惑以及模态之间的程度的竞争;(3)它保证了模型在仅文本任用务上的性能不会因引入视觉识别能力而受到影响,并且(4)高效交叉思维架构确保我们不需要通过越来越多的LLM骨干(特别是每个变压器层中的前馈网络)传递完整的解析图像,使推理过程更加。我们注意到我们的多模态模型正在开发中,尚未准备好发布。
在第7.6节和7.7节中介绍我们的实验结果之前,我们描述了我们用于训练视觉识别能力的数据,视觉组件的模型架构,我们如何扩展这些组件的训练,以及我们的预训练和后期训练方案。
图28研究的向Llama 3添加多模态能力的组合方法的模拟。这种方法导致了经过五个阶段训练的多模态模型:(1)语言模型预训练,(2)多模态编码器预训练,(3)视觉姿势训练,(4)模型姿态,以及(5)语音模型预训练。
7.1 数据
我们分别描述了我们的图像和视频数据。
7.1.1 图像数据
我们的文本编码器和牙齿图像在上进行训练。我们通过一个复杂的数据处理流程构建这个数据集,该流程主要包括四个阶段:(1)质量过滤,(2)采集去重,(3)重新采样,和(4)光学字符识别。我们还应用了一系列安全响应措施。
-
**质量过滤。**我们实施了质量过滤器,通过(Radford等人,2021)产生低质量分数等启发式方法去取代英语字幕和低质量字幕。具体来说,我们删除了所有低于某个CLIP分数的图像-文本对。
-
**去重。**对大规模训练数据集进行去重有助于模型性能,因为它减少了在圆周数据上的训练计算消耗(Esser等人,2024;Lee等人,2021;Abbas等人,2023)和记忆(Carlini等人,2023;So mepalli等人,2023)。因此,出于效率和隐私的原因,我们对数据训练进行了去重。因此,我们使用最先进的SSCD复制检测模型(Pizzi等人,2022)的内部版本在规模上实现图像重复。对于所有图像,我们首先使用SSCD模型计算512维表示。我们使用这些嵌入在数据集中的所有图像中为每张图像执行最近邻(NN)搜索,使用余弦相似性紧张。我们将相似度超过某个阈值的示例定义为重复项。我们使用连接组件算法对这些重复项项进行分组,并在每个连接组件中仅保留一个图像-文本对。通过我们以下方式提高去重流程的效率:(1)使用k-means地震预地震数据,以及(2)使用FAISS(Johnson等人,2019)进行NN搜索和地震。
-
**重新采样。**我们通过Xu等人(2023);Mahajan等人(2018);Mikolov等人(2013)的重新采样确保图像-文本对的多样性。首先,我们通过解析高质量文本源构建n-gramword接下来,我们数据集中计算每个词汇表 n-gram 的频率。然后我们按以下方式重新采样数据:如果标题中的任何 n-gram 在词汇表中出现次数少 T 次,我们保留相应的图像-文本对。否则,我们以概率 pT /fi 独立地采样标题中的每个 n-gram ni,其中 fi 表示 n-gram ni 的频率;任何如果 n-gram 被采样,我们保留图像-文本对。这种重新采样有助于在低频类别和细粒度识别任务上的性能。
-
**光学字符识别。**我们通过图像提取中书写的文本并将其与字幕连接起来,进一步改进我们的图像文本数据。使用母版的光学字符识别(OCR)流程提取书写文本。我们观察到,将OCR数据添加到训练数据中大大改善了需要OCR能力的任务,例如文档理解。
**为了提高我们的模型在文档。**理解任务上的性能,我们将文档页面渲染为图像,将图像与各自的文本布局。文档文本直接从源中获取,或者通过文档解析流程获取。
安全。我们主要关注确保图像识别的预训练数据集不包含不安全内容,例如性虐待材料(CSAM)(Thiel,2023)。我们使用采集散列方法,如PhotoDNA(Farid,2021)以及内部母分类器扫描所有训练图像中的CSAM。我们还使用母体的媒体风险检索流程来识别和删除除了我们认为不适合工作场所的图像--对,例如,因为它们包含性或暴力内容。我们认为,最小化这类材料在训练数据集中的流行度可以提高最终模型的安全性,而不影响有用性。最后,我们对文本集中训练的所有图像进行模糊处理。我们使用人类生成的提示测试模型,其这些提示引用了附加的图像。
**退火数据。**我们通过使用n-gram重新采样图像字幕对较小体积的约3.5亿个样本来创建放大器数据集。由于n-gram重新采样偏好更丰富的文本描述,这选择了更高质量的数据子集。我们使用来自五个额外来源的约1.5亿个样本增强了生成的数据:
-
**视觉定位。**我们将文本中的名词链接到图像中的边界框或空白码。以两种方式在图像-文本对图像中指定中定位信息(边界框和边界码)。(1)我们在文本中附加框或空白码,并使用文本中的标记作为参考,构成标记集(Yang等人,2023a)。(2)我们直接将标准化的(xmin,ymin,xmax,ymax)坐标插入到文本中,用特殊标记边界。
-
屏幕截图解析。我们从HTML代码渲染屏幕截图,并让模型预测产生屏幕截图中特定元素的代码,相似于Lee等人(2023)。感兴趣的元素通过屏幕截图中的边界框指示。
-
**问题答案对。**我们包括问题答案对,使我们能够熟练地使用并且无法在模型中使用问题答案数据量。
-
**字幕合成。**我们包括由模型的早期版本生成的合成字幕的图像。与原始字幕相比,我们发现合成字幕比原始字幕提供了更全面的图像描述。
-
合成生成的各种成形图像。我们还包括领域(图表、表格、流程图、数学方程和文本数据)的合成生成图像。这些图像伴随着成形表示,如相应的 markdown 或 LaTeX 符号。
除了提高模型对这些领域的识别能力之外,我们发现这些数据对于通过文本模型生成问题-答案对进行气压也很有用。
7.1.2 数据视频
视频预训练,我们使用大量的视频-文本对数据集。我们的数据集是通过多阶段流程提出策划的。我们使用基于修改规则的指令式方法过滤和清理相关文本,从而确保有最小长度和大写。然后,我们运行语言识别模型来过滤掉非英语文本。我们运行OCR检测模型来过滤掉更多文本的视频。为确保视频-文本之间合理的文本,我们使用CLIP(Radford等)人,2021)风格的图像和视频-文本对比模型。我们首先使用视频中的单一帧计算图像-文本相似性,并过滤掉相似性低的对,然后过滤掉视频-文本对比度低的对。我们的一些数据包含静态或运动视频;我们使用基于运动得分的过滤(Girdhar等人,2023)过滤低此类数据。我们没有对视频的窗口质量应用任何过滤器,如分数或解决过滤。
我们的数据集包含平均时长为21秒的视频,中分辨率时长为16秒,超过99%的视频时长在一分钟内。空间分辨率在320p和4K视频之间有明显变化,超过70%的视频短边大于720像素。视频具有不同的长宽比,几乎视频的长宽比在1:2到2:1之间,中间分辨率为1:1。
7.2 模型架构
我们的视觉识别模型由三个主要部分组成:(1)图像编码器,(2)图像适配器,以及(3)视频适配器。
图像编码器。我们的图像编码器是一个标准的视觉变压器(ViT; Dosovitskiy等人(2020),它被训练用于图像和文本(Xu等人,2023)。我们使用的是ViT-H/14变体的图像编码器,它有6.3亿个参数,这些参数在25亿图像-文本上训练了五个周期。图像编码器是在224×224分辨率的被上图像预训练的;图像分割成16×16个不同大小的块(即,每个)个块的大小为14x14像素)。正如之前的工作(如ViP-Llava(蔡等人,2024))所展示的,我们观察到通过对比文本对齐目标训练的图像编码器无法保留细粒度的定位信息。为了解决这个问题,我们采用了多层特征提取,除了最后一层的特征外,还提供了来自第4层、第8层、第16层、第24层和第31层的特征。另外,我们在交叉注意力层的预训练之前额外插入了8个门控自注意力层(总共40个变压器块),以学习安东尼特特征。因此,图像编码器最终总共有8500个参数,加上额外的层。出现了层次特征,图像编码器可以为每产生的 16×16=256 个块生成一个 7680vi 的表示。在后续的训练阶段,没有冻结图像编码器的参数,我们发现这提高了性能,特别是在文本识别等领域。
图像适配器。我们在图像编码器产生的视觉上的标记表示和语言模型产生的标记表示之间引入了交叉注意力层(Alayrac等人,2022)。交叉注意力层在核心语言模型的第四个自注意力层之后应用。像语言模型本身一样,交叉注意力层使用广义查询注意力(GQA)以提高效率。交叉注意力层向模型引入了大量的额外可训练参数:对于Llama 3 405B,交叉焦点层大约有1000亿参数。我们分两个阶段预训练的图像适配器:(1)初始预训练,然后是(2)听力:
-
**初始预训练。**我们在上述描述的约60亿图像-文本对数据集上预训练我们的图像适配器。出于计算效率的考虑,我们将图像调整大小以适应最多四个336×336像素的瓦片,我们将瓦片排列以支持不同的长宽比,例如672×672、672×336和1344×336。
-
**退火。**我们继续在上述描述的放大器数据集的约5亿图像上训练图像适配器。在放大器过程中,我们增加了每个瓦片的图像分辨率,以提高需要更高分辨率图像的任务的性能,例如信息图表的理解。
视频适配器。我们的模型接受最多64帧(从完整视频中均匀采样),每帧都由图像编码器处理。我们通过两个图像组件对视频中的时间结构进行建模:(i)编码后的视频帧通过时间聚合器进行聚合,该聚合器将32个连续帧合并为一个,(ii)在每第四个交错在添加额外的视频交叉注意力层之前叉注意力层。时间聚合器实现为采集器重采样器(Jaegle等人,2021;Alayrac等人,2022)。我们使用每个视频16帧(聚合为1帧)进行预,但在监督期间将输入帧数增加到64。 3 7B和70B,视频聚合器和交叉焦点层分别有6亿和46亿参数。
7.3 模型扩展
将视觉识别组件添加到 Llama 中3之后,模型包含了自注意力层、交叉注意力层和ViT图像编码器。为了训练较小的8B和70B参数模型的适配器,我们发现数据和张量玩具的组合是最高效的。在这些规模上,模型或模拟玩具性参数不会提高效率,因为模型的聚合将主导计算。然而,在训练405B参数模型的夜间时,我们确实使用了模拟预设性(除了数据和张量精度)。在这个规模上的训练中引入了除了第3.3节中概述的之外的三个新挑战:模型缺失性、数据缺失性和数值不稳定性。
模型消耗性。模型计算是高性能的,因为一些token比其他token执行了更多的计算。特别是,图像token由图像编码器和交叉注意力层处理,而文本token仅由语言骨干处理。这种卡塔尔性导致了睡眠性调度中的瓶颈。我们确保通过每个预设阶段包含五层来解决这个问题:即语言骨干中的四个自注意力层和一个交叉注意力层。(回想一下,我们在每第四个自注意力层之后引入一个交叉注意力层。)图像此外,我们在所有瞬时阶段复制编码器。因为我们在生成对的图像-文本数据上训练,这使得我们能够在计算的图像文本和部分之间进行负载平衡。
数据异质性。数据是高性能的,因为平均来说,图像比相关文本有更多的token:一张图像有2308个token,而相关文本平均只有192个token。因此,交叉注意力层的计算比自注意力层的计算需要更多的和内存。我们通过在图像编码器中引入序列文件性来解决这个问题,以便每个GPU处理大致相同数量的token。由于平均文本大小相对相似,我们还使用了更大的微队列大小时间(8而不是1)。
数值不稳定性。在将图像编码器添加到模型后,我们发现在bf16中执行增量累加导致了数值不稳定性。这最可能的解释是,图像token通过将所有交叉注意力层引入到语言干中。这意味着图像token的表示中的数值偏差对整体计算有巨大的影响,因为错误是累加的。我们通过在FP32中执行加载来这个问题。
7.4 预训练
图像。我们从预训练的文本模型和视觉视觉编码器权重开始初始化。编码器是解冻的,而文本模型权重则如上所述保持冻结。首先,我们使用图像每个调整大小以适应四个336×336像素瓦片的60图像亿-文本对来训练模型。我们使用16384的全局大规模大小和余弦学习率计划,最终学习成本为10美元\次10^{-4},权重衰减为0.01。最终学习率是基于小规模实验确定的。然而,这些发现并没有很好地推广到非常长的训练计划,在损失值损失不前时,我们有几次降低了学习率。在基础预训练之后,我们进一步提高图像分辨率,并在后续数据集上继续使用相同的权重进行训练。优化器通过中断初始化重新为学习率2 \times 10^{-5}$,然后再次遵循余弦计划。
视频。对于视频预训练,我们从上述的图像预训练和增益权重新开始。我们添加了视频聚合器和交叉注意力层,如架构中规定,随机初始化图像。我们冻结了模型中的所有参数,除了特定视频描述的参数(聚合器和视频交叉焦点),并在视频预数据训练上它们。我们使用与稀疏阶段相同的训练超参数,学习率很小我们从完整视频中均匀采样16帧,并使用每个448×448像素的四个块来表示每一帧。我们在视频聚合器中使用16个聚合因子,因此获得一个有效的帧,文本令牌交叉关注它。我们使用4096的全局大规模大小,190个令牌的序列长度,在训练期间使用10\^{-4}的学习率。
7.5 后训练
在本节中,我们描述了我们的视觉疲劳后训练计划。预训练后,我们在策划的多模态对话数据上对人类模型进行了反应,以实现聊天功能。我们进一步实施直接偏好优化(DPO)以提高人类评估性能,并采用拒绝采样提高多模态推理能力。最后,我们增加了一个质量调整阶段,我们在非常小的一组对话数据上继续模型,这在保留基础测试行为的同时提高了进一步评估。
7.5.1 监督数据
我们分别描述了图像和视频能力的监督(SFT)数据。
图像。我们利用不同的数据集混合进行监督加强。
-
学术数据集。我们使用模板或通过LLM重写将高度筛选的现有学术数据集转换为问答。LLM重写的目的是用不同的指令增强数据,并提高答案的语言质量。
-
人类注释。我们通过注释者收集多模态对话数据,涵盖广泛的任务(开放人类问答、字幕、实际例子等)和领域(例如,自然图像和格式化图像)。注释者被提供图像,并被要求编写对话。为了确保多样性,我们在不同的分布式环境中关心大规模数据集和采集图像。此外,我们通过最近邻扩展种子来获取一些特定领域的额外图像。注释者还被提供现有模型的中间检查点,以促进模型在循环中的注释风格,使模型生成可以作为注释者提供额外人类编辑的起点。这是一个迭代过程,其中模型检查点将定期更新为在最新数据上训练的更好执行版本的模型。这增加了人类注释的体积和效率,同时也提高了它们的质量。
-
我们探索使用图像的文本表示和图像输入LLM生成合成多态模数据的不同方法。高层思路是利用文本输入LLM的推理能力在文本领域生成问答对,并文本表示替换相应的图像以产生合成多模态数据。示例包括将问答数据集中的文本渲染为或将表格数据渲染为表格和图表的合成图像。此外,我们还利用现有的字幕图像和OCR来导出与图像相关的其他对话或问答数据。
视频。构建图像适配器。我们使用预先存在的注释的学术数据集,把它们转换为适当的文本指令和目标响应。目标被转换为开放式响应或表示选择选项,视情况而定。我们要求人类使用问题和相应的答案注释视频。注释者被要求注意不能仅仅基于单个答案的问题,以引导注释者提出需要时间理解的问题。
7.5.2 监督微调方法
我们分别描述了图像和视频能力的监督(SFT)配方。
**图片。**我们从预训练的图像模型开始初始化,但将预训练的语言模型权重与指令调整的语言模型权重进行热交换。为了保持仅文本性能,语言模型权重保持冻结,即我们只更新编码器图像和模型权重。
我们对模型进行了类似于Wortsman等人的方法(2022)。首先,我们利用多个随机数据子集、学习率和权重衰减值进行超参数扫描。接下来,我们根据它们的表现对模型进行排名。最后,我们平均顶级K模型的权重重确定最终模型。K值是通过评估平均模型并选择最高性能的实例来确定的。我们观察到平均模型始终比通过网格搜索找到最佳单体模型产生更好的结果。另外,这种策略减少了对超参数的增益。
视频。对于视频SFT,我们使用预训练权重初始化视频聚合器和交叉注意力层。模型中的其余参数,图像权重和LLM,从相应的模型中初始化,紧接着它们的相关阶段。类似视频预训练,我们然后仅在视频SFT数据上有关视频参数。在这个阶段,我们将视频长度增加到64帧,并使用32的聚合因子获得两个有效帧。块的分辨率也增加,与相应的图像超参数一致。
7.5.3 数据偏好
我们为神经建模和直接偏好优化构建了多模式的偏好数据集。
-
人类观点。人类观点的数据偏好包括两个不同模型输出之间的比较,标记为""和"拒绝",并标注7级评分。用于生成响应的模型是从最近的最近模型中即时采样的,每个模型池具有不同的特征。我们每周更新模型池。除了偏好标签,我们还要求注释者提供任选的人类编辑,以修正"选择"响应中的不准确性,因为视觉任务对不准确性的耐受度较低。注意,因为人类编辑是任选步骤,在实践中存在体积和质量之间的权衡。
-
也可以通过使用仅文本LLM编辑和生成在监督偏差数据集中引入错误来生成合成偏好对。我们将对话数据作为输入,并使用LLM引入微妙但有意义的错误(例如,更改对象、更改属性、添加计算错误等)。这些编辑后的反应错误的"拒绝"样本,并与"选择"原始监督数据配置。
-
另外,为了创建更多的策略内负样本,我们利用拒绝采样的迭代过程收集额外的偏好数据。我们在以下部分更详细地讨论我们对拒绝采样的使用。在高层次上,拒绝采样用于迭代地从模型中采样高质量生成。,作为副产品,所有邻接选择的生成都可以用于扭转拒绝样本,并重视额外的偏好数据对。
7.5.4 奖励模型
我们在视觉SFT模型和语言RM的基础上训练一个视觉奖励模型(RM)。视觉编码器和交叉注意力层从视觉SFT模型中初始化并在训练期间解冻,而自注意力层从语言RM中初始化并保持冻结。我们观察到冻结语言RM部分通常可以带来更高的准确性,特别是在RM需要根据其知识或语言质量进行判断的任务上。我们采用与语言RM相同的训练目标,但增加了一个加权正则化项,任务作用于总共平均奖励分数的四分之一,这防止了奖励分数的完成。
第7.5.3节中的人类偏好注释用于训练视觉RM。我们按照语言偏好数据(第4.2.1节)的相同做法,创建两到三对具有明显排名的偏好(编辑>>拒绝)。此外,我们还通过扰乱与图像中的信息(如数字或视觉文本)相关的单词或视觉效果,来增强对这方面的影响。鼓励视觉RM根据实际图像作出判断。
7.5.5 直接偏好优化
与语言模型(第4.1.4节)类似,我们使用第7.5.3节中描述的偏好数据,通过直接偏好优化(DPO;Rafailov等人(2023))进一步训练疲劳。为了对抗后训练轮次中的分配偏移,我们只保留最近的人类偏好观察部分,同时丢弃那些足以中断策略的批次(例如,我们发现,并不是一直冻结参考模型,而是每k步以指数移动平均(EMA)的方式更新它,有助于模型更多地从数据中学习,从而在人类评估中获得更好的表现。总的来说,我们观察到的动态DPO模型在每次迭代迭代中人类评估中的表现始终与其SFT起点一致。
7.5.6 拒绝采样
大多数可用的问答对只最终包含答案,缺少训练一个能够很好地泛化推理任务的模型所需的思维链解释。我们使用拒绝采样为这些例子生成撤销的解释,并增强模型的推理能力。
给定一个问题答案,我们通过使用不同的系统提示或温度对模型进行采样,生成多个答案。接下来,我们通过启发式或LLM裁判将生成的答案与真实答案进行比较。最后,我们通过将正确答案重新添加到气压数据混合中来重新训练模型。我们发现保留每个问题的多个正确答案很有用。
为了确保我们只将高质量的示例重新添加到训练中,我们实施了以下两个保护措施。首先,我们发现一些结果虽然最终答案正确,但包含的解释却是错误的。我们观察到这种模式更加密集地出现在只有部分生成答案正确的问题上。因此,放弃了那些答案正确概率低于某个阈值的问题的答案。其次,评估者由于语言或风格的差异而确定某些优先答案。我们使用奖励模型选择最高质量答案的前K名,把它们重新添加到训练中。
7.5.7 质量调整
我们策划了一个小而高度精选的SFT数据集,所有样本都经过人类或我们最好的模型重写和验证,以满足我们的最高标准。我们使用这些数据训练DPO模型来响应质量,将这个过程称为质量调整(QT)。 ,当QT数据集讲述了广泛的任务并且应用了适当的早期停止时,QT显着提高了人类评估的表现,影响通过基准测试验证的化能力。在现阶段,我们仅基于基准测试选择检查点,以确保能力得以全面保留或提高。
7.6 图像识别结果
我们在一系列任务中评估了 Llama 3图像理解的表现,这些任务涵盖了自然图像理解、文本理解、图表理解和多模态推理:
-
MMMU(Yue等人,2024a)是一个具有挑战性的数据集,用于多模态推理,期望模型理解图像并解决涵盖30个不同学科的大学水平问题。这包括例证选择和开放式问题。我们按照其他图像作品的做法,在包含900张的验证集上评估了我们的模型。
-
VQAv2(Antol等人,2015)测试模型结合图像理解、语言理解和常识来回答关于自然图像的通用问题的能力。
-
AI2图(Kembhavi等人,2016)评估模型解析科学图表并回答相关问题的能力。我们使用与Gemini和x.ai相同的评估协议,并使用透明的第三方报告分数。
-
ChartQA(Masry等人,2022)是一个具有挑战性的图表理解基准。这要求模型洞察地理解不同类型的图表并回答有关图表的逻辑问题。
-
TextVQA(Singh 等人,2019) 是一个流行的基准数据集,要求模型读取并推理图像中的文本以回答相关的问题。这测试了模型在自然图像上的 OCR 理解能力。
-
DocVQA(Mathew等人,2020)是一个关注文档分析和识别的基准数据集。它包含各种文档的图像,评估模型执行OCR理解和推理文档内容以回答问题的能力。
表29展示了我们的实验结果。表中的结果表明,附加到Llama 3的视觉模块在不同模型容量的广泛图像识别基准测试中表现出对比。使用我们生成的Llama 3-V 405B模型,我们在所有基准测试中都靠近GPT-4V,虽然略逊于Gemini 1.5 Pro和Claude 3.5 Sonnet。Llama 3 405B在文档任务上特别具有对比性。
表29我们附加到Llama 3的视觉模块图像的理解性能。我们将模型性能与GPT-4V、GPT-4o、Gemini 1.5 Pro和Claude 3.5 Sonnet进行比较。使用外部OCR工具获得的结果。
7.7 视频识别结果
我们三个在基准测试上评估了 Llama 3 的视频闹钟:
-
感知测试(Pătrăucean等人,2023)评估模型回答关注技能(记忆、抽象、物理、视觉)和不同类型的推理(描述性、解释性、预测性、反事实)的时间推理问题的能力。它包含 11.6K 个测试 QA,每个视频平均 23 秒长,由全球 100 名参与者拍摄,展示感知上的任务。我们专注于验证选择问答任务,每个问题都有三个可能的选项。我们通过将我们的预测提交到在线挑战服务器来报告保留的测试分割上的表现。
-
NExT-QA(Xiao等人,2021)是另一个时间和因果推理基准,集中于开放式问答。它包含1K测试视频,每个平均44秒长,配置9K个问题。评估是通过将模型的响应与真实答案使用Wu-Palmer相似度(WUPS)(Wu和Palmer,1994)进行比较来执行的。
-
TVQA(雷等人,2018)评估模型执行组合推理的能力,需要视觉时空定位相关时刻、识别概念和与基于字幕的对话联合推理。这个数据集源自流行的电视节目,此外还测试了模型利用对这些电视节目的外部知识回答问题的能力。它包含超过15K个验证QA对,每个相应的视频片段大约76秒长。它仍然遵循形象选择格式,每个问题都有五个选项,我们遵循先前的工作(OpenAI,2023b)在验证集上报告性能。
-
ActivityNet-QA(于等人,2019)评估模型对长视频片段进行推理以理解动作、空间关系、关系、计数等的能力。它包含来自800个视频的8K测试QA,每个视频平均3分钟长。对于评估,我们遵循先前工作的协议(Google,2023;Lin等人,2023;Maaz等人,2024),模型生成短的多个或其中的答案,并通过GPT-3.5时间API评估输出的正确性,将其与真实答案进行比较。我们报告API评估的平均准确率。
在进行推理时,我们从完整视频片段中均匀地采集帧,把这些帧与简短的文本提示一起输入模型。由于我们的大多数基准测试涉及答案选择问题,我们使用以下提示:从以下选项中选择答案正确:{问题}。用正确的选项字母回答,其他什么都不要写。对于那些需要产生简短答案的基准测试(例如,ActivityNet-QA和NExT-QA),我我们使用以下提示:用一个词或回答问题。{问题}。对于NExT-QA,由于评估指标(WUPS)对长度和使用的具体单词敏感,我们另外的提示模型要具体,并以最突出的答案回应,例如,在被问及位置问题时,指定"大厅"是简单地回应"房子"。对于包含那些包含字幕的基准测试(即TVQA),我们在推理期间在提示中部分对应的字幕。
我们在表30中展示了训练中的Llama 3 8B和70B的性能。我们将Llama 3的性能与两个Gemini和两个GPT-4模型进行了比较。请注意,由于我们训练在或高精度数据中没有包含这些基准测试的部分,因此我们所有的任何结果都是零样本的。我们发现,在后面训练期间进行了小型视频加固的Llama 3模型非常有防护性,甚至在某些情况下比其他可能从预训练开始就利用重构多模态处理的模型更好。而我们只评估了8B和70B参数模型,Llama 3在视频识别上表现出色。Llama 3在PerceptionTest上表现最佳,表明该模型具有执行复杂时间推理的能力。在像ActivityNet-QA这样的长篇理解活动任务上,即使模型只处理到64帧,Llama 3也能获得强大的结果,这意味着对于3分钟长的视频,模型每3秒只处理一帧。
表 30 我们附加到 Llama 3 的视觉视觉模块的视频理解性能。我们发现,在主题长篇和时间视频理解的任务范围内,我们为 Llama 3 的 8B 和 70B 参数的支架具有抵抗力,有时甚至超越了其他模型。
八 语音实验
我们进行实验,研究将语音能力以组合方式整合到Llama 3中的方法,类似于我们用于视觉识别的方法。在输入端,一个编码器和一个适配器被结合来处理语音信号。我们利用文本形式的系统提示来实现Llama 3中不同的语音理解模式。如果没有提供系统提示,模型作为一个通用的口语对话模型,能够与Llama 3 文本版本一致的方式有效响应用户的语音。对话历史被引入作为提示,以改善多轮对话体验。我们还尝试使用系统提示,启用 Llama 3 用于自动语音识别(ASR)和自动语音翻译(AST)。Llama 3 的语音接口支持多达 34 种语言。它还允许文本和语音的交错输入,使模型解决能够高级的语音任务理解。
我们还有一种语音生成方法,我们实现了一个流式到语音(TTS)系统,在语言模型解码期间即时生成语音波形。我们为Llama 3设计了基于母的TTS系统的语音生成器,并且没有为语音生成语言模型文本。相反,我们专注于尝试通过在推理时利用Llama 3嵌入来提高语音合成的延迟性、准确性和自然性。语音界面在图28和29中说明。
图29 Llama 3的语音接口架构。
8.1 数据
8.1.1 语音理解
训练数据可以分为两种类型。预训练包括数据大量未标记的语音,用于以自监督方式初始化语音编码器。监督数据包括语音识别、语音翻译和口语对话数据;当与大型语言模型集成时,这些数据用于解锁特定能力。
**预训练数据。**语音编码器,我们策划了一个大约1500万小时的语音录音数据集,涵盖了许多语言。我们使用语音活动检测(VAD)模型过滤我们的音频数据,并选择VAD阈值0.7的音频样本进行预训练。在语音预训练数据中,我们还重点确保没有个人身份信息(PII)。我们使用Presidio Analyzer来识别此类PII。
语音识别和翻译数据。我们的ASR训练数据包含23万小时的手动录制语音录音,主要34种语言。我们的AST训练数据包含9万小时的翻译,两个方向:从33种语言到英语,以及从英语到33种语言。这些数据包含使用NLLB工具包(NLLB团队等人,2022)生成的监督和合成数据。使用合成AST数据使我们能够提高低资源语言的模型质量。我们数据中的语音段的最大长度为60秒。
**口语对话数据。**我们通过要求语言模型响应这些提示的解析,合成地生成语音提示的响应(Fathullah等人,2024)。我们以这种方式使用ASR数据集的子集生成60,000小时的合成数据。另外,我们通过在用于Glama 3的数据子集上运行Voicebox TTS系统(Le等人,2024),生成了25,000小时的合成数据。我们使用几种提示式方法选择与语音分配匹配的湿度数据子集。这些提示式方法包括关注相对简短的提示,具有简单的结构,且没有非文本符号。
8.1.2 语音生成
语音生成数据集主要包括用于文本训练规范化(TN)模型和韵律模型(PM)的数据。两种训练数据都通过Llama 3嵌入的额外输入特征增强,以提供上下文信息。
文本规范化数据。我们的TN训练数据集包括55,000个样本,涵盖了需要非普通规范化的广泛符号类别(例如,数字、日期、时间)。每个样本都是书面形式和相应的规范化口语形式文本文本的装备,以及执行规范化的手工TN规则的推断序列。
韵律模型数据。PM训练数据包括从50,000小时TTS数据集中提取的语言学和韵律特征,这些是由专业配音演员在录音室环境中录制的乐器乐器和音频。
Llama 3嵌入。Llama 3嵌入被取作第16个解码器层的输出。我们专门使用Llama 3 8B模型,并提取给定文本的嵌入(即TN的书写形式输入文本或PM的音频),就想它们是由带空用户提示的Llama 3模型生成的。在给定样本中,Llama 3令牌序列中的每个块都与TN或PM的刷新输入序列中的相应块显式标记,即,TN特定的文本令牌(由unicode类别分隔)或电话速率特征。这允许使用Llama 3令牌和嵌入的流输入训练TN和PM模块。
8.2 模型架构
8.2.1 语音理解
在输入端,语音模块由两个连续的子模块组成:语音编码器和适配器。语音模块的输出作为 token 表示直接输入到语言模型中,使得语音与文本 token 能够直接交互。此外,我们加入了两个新的特殊 token,用于包裹语音表示序列。语音模块与视觉模块(参见第 7 节)有显著区别:视觉模块通过交叉注意力层将多模态信息输入语言模型;而语音模块则生成可与文本 token 无缝融合的嵌入,使语音接口能够充分利用 Llama 3 语言模型的全部能力。
语音编码器。 我们的语音编码器是一个包含 10 亿参数的 Conformer(Gulati et al., 2020)模型。模型输入为 80 维 mel 频谱图特征,这些特征首先经过一个 stride 为 4 的堆叠层,然后通过线性投影将帧长缩减到 40 ms。随后,这些特征由包含 24 层 Conformer 的编码器处理。每个 Conformer 层具有 1536 的潜在维度,由两个维度为 4096 的 Macron-net 风格前馈网络、一个 kernel size 为 7 的卷积模块,以及一个具有 24 个注意力头的旋转注意力模块(Su et al., 2024)组成。
**语音适配器。**语音适配器约包含 1 亿参数,由一个卷积层、一个旋转 Transformer 层和一个线性层组成。卷积层使用 kernel size 为 3、stride 为 2,用于将语音帧长进一步压缩至 80 ms,以便为语言模型提供更粗粒度的特征。Transformer 层具有 3072 的潜在维度、一个维度为 4096 的前馈网络,用于在卷积下采样后进一步结合上下文处理语音信息。最后,线性层将输出维度映射为与语言模型嵌入层一致。
8.2.2 语音生成
我们在语音生成的两个关键组件中使用 Llama 3 8B 的嵌入:文本规范化与韵律建模。TN 模块通过根据上下文将书写文本转换为口语形式来确保语义正确性;PM 模块利用这些嵌入预测韵律特征,从而增强语音的自然度与表达力。二者结合能够实现准确自然的语音生成。
文本规范化。 作为生成语音语义正确性的决定因素,文本规范化(TN)模块执行基于上下文的书面文本到口语形式的转换,该输出最终被下游组件口化。例如,书面文本"123"在不同语义上下文中可能被读作基数词(one hundred twenty three)或逐字念出(one two three)。TN 系统由一个基于流式 LSTM 的序列标注模型组成,预测用于转换输入文本的手工 TN 规则序列(Kang et al., 2024)。该神经模型还通过交叉注意力结合 Llama 3 的嵌入,以利用其中编码的上下文信息,从而实现最小的文本 token 前瞻与流式输入/输出。
韵律建模。 为了增强合成语音的自然度和表达力,我们集成了一个基于 decoder-only Transformer 的韵律模型(PM)(Radford et al., 2021),该模型将 Llama 3 的嵌入作为额外输入。此集成利用 Llama 3 的语言能力,使用其文本输出及 token 级的中间嵌入(Devlin et al., 2018;Dong et al., 2019;Raffel et al., 2020;Guo et al., 2023)来增强韵律特征的预测,从而减少模型所需的前瞻量。
PM 集成多个输入组件以生成全面的韵律预测:来自前述文本规范化前端的语言特征、token 以及嵌入。PM 预测三个关键韵律特征:每个音素的对数时长、对数 F0(基频)均值,以及音素时长上的对数能量均值。模型由一个单向 Transformer 和六个注意力头组成。每个模块包含交叉注意力层和两个隐藏维度为 864 的全连接层。PM 的一个独特特性是其双交叉注意力机制,其中一个层专用于语言输入,另一个用于 Llama 嵌入。该结构能够有效处理不同的输入速率,而无需显式对齐。
8.3 训练方法
8.3.1 语音理解
语音模块的训练分为两个阶段。第一阶段是语音预训练,利用未标记的数据训练在不同语言和声学条件下具有增强泛化能力的语音编码器。第二阶段是监督发音,预训练编码器与语言模型集成在一起,LLM保持冻结的状态下与它一起训练。这使得模型能够语音响应输入。这个阶段使用的是有标记的数据,对应于语音理解能力。
多语种ASR和AST流行建模通常会导致语言干扰/中断,从而导致性能下降。解决这个问题的一种方法是在源语言和目标语言两端都加入语言识别(LID)信息。这可以在预定的方向上提高性能,但确实会带来潜在的泛化损失。例如,如果翻译系统期望在源语言和目标语言无数都有LID,那么模型在训练中未见的方向上可能不会表现出良好的零样本性能。因此,我们的挑战是设计一个系统,它在可编程编程中允许LID信息,但为了保持模型的通用性,以便我们可以在未见的方向上进行语音翻译。这个问题,我们设计了系统提示,其中只包含要发出的文本(目标侧)的LID。这些提示中没有语音输入(源侧)的LID信息,这也可能允许它与切换代码的语音一起工作。对于ASR,我们使用以下系统提示:请用{语言}语言重复我的话: ,其中{语言}来自34种中的一种(英语、法语等)。对于语音翻译,系统提示是:将以下句子翻译成{语言}。这种设计已证明在激励语言模型以期望的语言响应方面是有效的。我们在训练和推理中使用了相同的系统提示。
语音预训练。我们秒使用自监督训练BEST-RQ算法(Chiu等人,2022)预语音编码器。我们对输入的mel服装图应用了32帧长度的掩码,掩码概率为2.5%。如果语音语音超过60秒,我们执行6K帧的随机镜像,相当于60个连续语音。我们通过将4个帧传输起来,将320维传输投影到16维空间,并在8192个投影的码本内进行余弦收缩性的最近邻搜索,来确定梅尔变异图特征。为了稳定预训练,我们采用16个不同的码本。投影矩阵和码本是随机初始化的,在模型训练期间不更新。为了效率,仅在掩蔽帧上使用multi-softmax损失。编码器用2,048个全局批量大小训练了50万步。
**监督微调。**在监督微调阶段,预训练的语音编码器与随机初始化的适配器将与 Llama 3 一同进行联合优化。在此过程中,语言模型保持不更新。训练数据由 ASR、AST 和口语对话数据混合构成。Llama 3 8B 的语音模型训练了 650K 次更新,使用全局 batch size 为 512 条语音,以及初始学习率 10⁻⁴。Llama 3 70B 的语音模型训练了 600K 次更新,使用全局 batch size 为 768 条语音,以及初始学习率 4 × 10⁻⁵。
8.3.2 语音生成
为支持实时处理,韵律模型采用前瞻机制,同时考虑固定数量的未来音素和可变数量的未来 token。该机制保证了处理输入文本时前瞻量的一致性,这对于低延迟语音合成应用至关重要。
训练 。我们开发了一种结合因果掩码的动态对齐策略,以支持语音合成中的流式能力。该策略包含对固定数量未来音素以及可变数量未来 token 的前瞻机制,与文本规范化(第 8.1.2 节)中的分块过程保持一致。对于每个音素,token 前瞻包含由分块大小决定的最大 token 数量,从而导致 Llama 嵌入具有可变前瞻,而音素前瞻保持固定。
Llama 3 嵌入来自 Llama 3 8B 模型,在训练韵律模型期间保持冻结。输入的音素速率特征包括语言特征和说话人/风格可控特征。模型训练 batch size 为 1,024 条语音,每条最多包含 500 个音素。我们采用学习率 9 × 10⁻⁴、AdamW 优化器、总计 100 万次更新,并在前 3,000 次更新中进行学习率预热,随后采用余弦调度。
推理。 在推理阶段,使用与训练相同的前瞻机制和因果掩码策略,以保证训练与实时处理的一致性。PM 以流式方式处理输入文本:音素速率特征逐个音素更新,token 速率特征按块更新。只有当某个块的第一个音素成为当前音素时,才会更新该块的 token 输入,以保持与训练阶段一致的对齐与前瞻。
在韵律目标预测中,我们使用延迟模式方法(Kharitonov et al., 2021),增强模型捕捉和再现长距离韵律依赖的能力。这一方法提升了合成语音的自然度与表现力,实现低延迟与高质量输出。
8.4 语音理解结果
我们在三类任务上评估 Llama 3 语音接口的语音理解能力:(1)自动语音识别,(2)语音翻译,(3)口语问答。我们将 Llama 3 的语音接口与三个语音理解领域的最先进模型进行对比:Whisper(Radford et al., 2023)、SeamlessM4T(Barrault et al., 2023)以及 Gemini。¹⁹ 在所有评估中,我们对 Llama 3 的 token 预测使用贪心搜索。
语音识别。 我们在以下英文数据集上评估 ASR 性能:Multilingual LibriSpeech(MLS;Pratap et al., 2020)、LibriSpeech(Panayotov et al., 2015)、VoxPopuli(Wang et al., 2021a)、以及 FLEURS 多语言数据集的一个子集(Conneau et al., 2023)。在评估过程中,解码结果经 Whisper 文本规范化器进行后处理,以确保与其他模型报告结果的一致性。在所有基准中,我们在标准测试集上报告 Llama 3 的词错误率(WER);中文、日文、韩文、泰文则报告字符错误率(CER)。
表 31 展示了 ASR 评估结果。结果表明 Llama 3(以及更广义的多模态基础模型)在语音识别任务上表现强劲:我们的模型在所有基准上均优于 Whisper²⁰ 和 SeamlessM4T 等语音专用模型。在 MLS English 上,Llama 3 的表现与 Gemini 相当。
表 31 Llama 3 的语音接口在语音识别任务上的词错误率。我们报告了 Whisper、SeamlessM4T 和 Gemini 的性能以提供参考。
语音翻译。我们还在语音翻译任务上评估模型表现,即要求模型将非英语语音翻译成英语文本。我们使用 FLEURS 和 Covost 2(Wang et al., 2021b)数据集,并报告生成英文的 BLEU 得分。表 32 展示了实验结果。²¹ 模型在语音翻译任务中的表现突显了多模态基础模型在此类任务中的优势。
表 32 Llama 3 的语音接口在语音翻译任务上的 BLEU 分数。我们报告了 Whisper 和 SeamlessM4T 的性能以提供参考。
口语问题回答。Llama 3 的语音接口展现出卓越的问答能力。模型能够轻松理解未见过的混合语种(code-switched)语音。值得注意的是,尽管模型仅在单轮对话上训练,它仍可进行连贯流畅的多轮对话。图 30 展示了一些例子,突出其多语言与多轮能力。
图30 使用Llama 3的语音接口重构的对话示例。这些示例展示了零样本多轮对话和代码切换能力。
安全性。我们在 MuTox(Costa-jussà et al., 2023)数据集上评估语音模型的安全性。MuTox 是一个包含 20,000 条英语与西班牙语语音、以及 19 种其他语言各 4,000 条的多语言音频数据集,每条均带有毒性标签。模型接受音频输入,输出结果在去除部分特殊字符后由 MuTox 分类器评估,并与 Gemini 1.5 Pro 对比。我们评估两项指标:新增毒性百分比(AT)------输入安全但输出有毒;丢失毒性百分比(LT)------输入有毒但输出安全。表 33 展示了英语和我们评估的 21 种语言平均结果。²² 新增毒性百分比非常低:我们的语音模型在英语上的新增毒性最低,不到 1%。模型移除的毒性显著多于新增的毒性。
表33 Llama 3的语音接口在MuTox数据集上的语音毒性。AT指的是添加的毒性分数,LT指的是丢失的毒性分数。
8.5 语音生成结果
对于语音生成,我们的重点是评估使用Llama 3嵌入进行文本规范化和韵律建模任务的逐令牌输入流式模型的质量。评估的重点是与不将Llama 3嵌入作为额外输入的模型进行比较。
文本规范化。为了快速训练Llama 3嵌入的效果,我们尝试改变模型使用的横向上下文量。我们模型时使用了3个TN令牌(由unicode类别分区)的横向。这个模型与不使用Llama 3嵌入,使用3个令牌的横向或完整连接上下文的模型进行了比较。预期正如,表34,对于不使用Llama 3嵌入的模型,使用完整的横向可以提高性能。然而,结合了Llama 3嵌入的模型超越了所有其他模型,因此能够在不依赖输入中的长下游的情况下,实现令牌速率的输入/流输出式处理。
表34逐个样本的文本规范化(TN)准确率。我们比较有无Llama 3 8B嵌入的模型,并使用不同的相邻上下文值。
韵律建模。为了评估我们的韵律模型(PM)与Llama 3 8B的性能,我们进行了及时人类评估,比较有无Llama 3嵌入的模型。评估者不同模型的样本并表明他们的偏好。为了生成最终的语音波形,我们使用了一个内部的基于transformer的声学模型(Wu等人,2021年),预测差异特征,并使用WaveRNN神经声码器(Kalchbrenner等人,2018)来生成最终的语音波形。
首先,我们直接与没有Llama 3嵌入的流式基线模型进行了比较。在第二项测试中,Llama 3 8B PM与Llama 3嵌入的非流式核心模型进行了比较。如表35所示,与流式基线相比,Llama 3 8B PM有60%的被决策,与非流式基线相比,有63.6%的时间被表明,在感知质量上有显着着权。Llama 3 8B PM 的关键优势是其逐令牌流式能力(第 8.2.2 节),这在推理期间保持了低延迟。这减少了模型的前瞻要求,与非流式核心相比,实现了响应性和实时性的语音合成。总体来说,Llama 3 8B 韵律模型始终具备校准模型,证明了其在增强合成语音的自然性和表现力方面的等效。
表35韵律建模(PM)评估。左侧:评估者对Llama 3 8B PM与纯音素流式核心模型的偏好。右侧:评估者对Llama 3 8B PM与非流式纯音素流式核心模型的偏好。
九 相关工作
Llama 3 的发展建立在大量关于语言、图像、视频和语音基础模型的既有研究之上。对这些工作的全面综述超出了本文的范围;我们将读者引向 Bordes et al. (2024)、Madan et al. (2024)、Zhao et al. (2023a) 等文献以获取此类综述。下面,我们简要概述对 Llama 3 的发展直接产生影响的重要工作。
9.1 语言
**规模。**Llama 3 延续了在基础模型中使用简单方法并不断扩大规模的长期趋势。改进主要由计算量的增加和数据质量的提升驱动,其中 405B 模型使用的预训练计算量几乎是 Llama 2 70B 的五十倍。尽管包含 4050 亿参数,我们最大的 Llama 3 实际上仍然比一些早期且性能更弱的模型(例如 PALM(Chowdhery et al., 2023))参数更少,这得益于对缩放定律(Kaplan et al., 2020;Hoffmann et al., 2022)的更好理解。关于其他前沿模型(如 Claude 3 或 GPT-4(OpenAI, 2023a))的规模目前公开信息很少,但总体性能相当。
**小模型。**小模型的发展与大模型的进展并行。参数更少的模型可以显著降低推理成本并简化部署流程(Mehta et al., 2024;Team et al., 2024)。较小的 Llama 3 模型通过远超计算最优训练点进行训练来实现这一点,本质上用训练计算量换取推理效率。另一种途径是将大模型蒸馏到小模型中,如 Phi(Abdin et al., 2024)。
**架构。**Llama 3 相比 Llama 2 仅进行了极少的架构修改,但其他近期基础模型探索了更多设计。最显著的是 Mixture-of-Experts(MoE)架构(Shazeer et al., 2017;Lewis et al., 2021;Fedus et al., 2022;Zhou et al., 2022),它可作为一种高效的方式来扩大模型容量,例如 Mixtral(Jiang et al., 2024)与 Arctic(Snowflake, 2024)。Llama 3 的表现超过这些模型,这表明稠密架构并不是限制因素,但在训练效率、推理效率以及大规模模型稳定性方面仍存在许多权衡。
**开源。**过去一年开源权重的基础模型快速进步,Llama3-405B 现在已可与当前闭源顶级模型竞争。最近开发的模型家族包括 Mistral(Jiang et al., 2023)、Falcon(Almazrouei et al., 2023)、MPT(Databricks, 2024)、Pythia(Biderman et al., 2023)、Arctic(Snowflake, 2024)、OpenELM(Mehta et al., 2024)、OLMo(Groeneveld et al., 2024)、StableLM(Bellagente et al., 2024)、OpenLLaMA(Geng and Liu, 2023)、Qwen(Bai et al., 2023)、Gemma(Team et al., 2024)、Grok(XAI, 2024)以及 Phi(Abdin et al., 2024)。
**后训练。**Llama 3 的后训练遵循既定策略:先进行指令微调(Chung et al., 2022;Ouyang et al., 2022),再通过人类反馈对齐(Kaufmann et al., 2023)。尽管一些研究显示轻量级对齐过程有惊人的效果(Zhou et al., 2024),Llama 3 依然使用了数百万条人工指令和偏好标注来改进预训练模型,包括拒绝采样(Bai et al., 2022)、监督微调(Sanh et al., 2022)以及直接偏好优化(DPO)(Rafailov et al., 2023)等技术。为了整理这些指令和偏好示例,我们使用 Llama 3 的早期版本进行过滤(Liu et al., 2024c)、重写(Pan et al., 2024)或生成提示与回答(Liu et al., 2024b),并在多轮后训练中反复应用这些技术。
9.2 多模态
我们对 Llama 3 多模态能力的研究属于多模态基础模型长期研究的一部分。
**图像。**大量研究使用大规模图文对训练图像识别模型,例如 Mahajan et al. (2018)、Xiao et al. (2024a)、Team (2024)、OpenAI (2023b)。Radford et al. (2021) 提出了首批通过对比学习联合嵌入图像与文本的模型之一。近年来,多项研究探索了与 Llama 3 类似的方案,例如 Alayrac et al. (2022)、Dai et al. (2023)、Liu et al. (2023c,b)、Yang et al. (2023b)、Ye et al. (2023)、Zhu et al. (2023)。Llama 3 的方法结合了这些论文中的许多思想,取得了可与 Gemini 1.0 Ultra(Google, 2023)和 GPT-4 Vision(OpenAI, 2023b)相媲美的结果(见第 7.6 节)。
**视频。**虽然越来越多的基础模型支持视频输入(Google, 2023;OpenAI, 2023b),但联合建模视频与语言的研究仍然不多。与 Llama 3 类似,大多数当前研究采用适配器(adapter)方法来对齐视频与语言的表征,从而实现视频问答与推理(Lin et al., 2023;Li et al., 2023a;Maaz et al., 2024;Zhang et al., 2023;Zhao et al., 2022)。我们发现这些方法能够取得与当前最先进技术相竞争的结果(见第 7.7 节)。
**语音。**我们的工作也属于更大范围的语言-语音联合建模研究。早期的文本-语音联合模型包括 AudioPaLM(Rubenstein et al., 2023)、VioLA(Wang et al., 2023b)、VoxtLM(Maiti et al., 2023)、SUTLM(Chou et al., 2023)以及 Spirit-LM(Nguyen et al., 2024)。我们的工作基于此前构建语音-语言组合式系统的方法(Fathullah et al., 2024)。不同于大多数之前的工作,我们选择不对语言模型本体进行语音任务的微调,因为这样可能会在非语音任务上产生冲突。我们发现,在更大模型规模下,即使不对语言模型进行语音微调也能达到强劲性能(见第 8.4 节)。
十 结论
在许多方面,高质量基础模型的发展仍处于起步阶段。我们在开发 Llama 3 的过程中发现,这类模型未来仍有巨大的提升空间。在整个 Llama 3 模型家族的开发中,我们发现对高质量数据、规模以及简洁性的高度关注始终能带来最佳结果。在初步实验中,我们探索了更复杂的模型架构和训练策略,但并未发现这些方法的收益能够抵消它们给模型开发带来的额外复杂性。
开发像 Llama 3 这样的旗舰基础模型不仅需要克服大量深层的技术难题,也需要做出巧妙的组织决策。例如,为确保 Llama 3 不会在常用基准测试上意外过拟合,我们将预训练数据的采集与处理交由一个独立团队负责,并明确激励该团队避免预训练数据与外部基准测试之间的污染。再如,为确保我们的人工评估结果值得信赖,只有一小部分不参与模型开发的研究人员被允许执行与访问这些评估。尽管这类组织决策在技术论文中鲜有讨论,我们却发现它们对于成功开发 Llama 3 模型家族至关重要。
我们分享开发过程中的细节,因为我们相信这将:(1)帮助更广泛的研究社区理解基础模型开发的关键因素;(2)推动公众对基础模型未来的讨论更加充分与具备信息基础。我们也分享了将多模态能力整合进 Llama 3 的初步实验。虽然这些模型仍在积极开发中,尚未准备好发布,但我们希望提前公布这些结果能够加速该方向上的研究。
在本文呈现的详细安全分析取得积极结果之后,我们公开发布了 Llama 3 语言模型,以加速面向众多社会相关应用场景的 AI 系统发展,并使研究社区能够审查我们的模型,寻找让模型更好、更安全的方法。我们相信公开发布基础模型是负责任开发此类模型的重要环节,并希望 Llama 3 的发布能够鼓励行业拥抱开放且负责任的 AGI 开发方式。
参考文献
1 LLaMA3 : https://arxiv.org/pdf/2407.21783