注:本文包含 AI 辅助创作
Paper Summary
- 评价:Llama3 作为 24 年最成功的开原模型,是非常值得敬佩的,Meta 为开源社区做的贡献值得永远铭记
- 论文介绍了一组原生支持多语言、编码、推理和工具使用的语言模型(Llama 3)
- 论文发布的最大的模型是具有 405B 参数的 Dense Transformer,上下文窗口可达 128K tokens
- 论文对 Llama 3 进行了广泛的实证评估,发现 Llama 3 在众多任务上的质量可与GPT-4等领先语言模型相媲美
- 论文公开发布了 Llama 3,包括 405B 参数语言模型的预训练和后训练版本,以及用于输入和输出安全的 Llama Guard 3 模型
- 论文还介绍了通过组合方法将图像、视频和语音能力集成到 Llama 3 中的实验结果
- 论文观察到,这种方法在图像、视频和语音识别任务上与最先进水平具有竞争力
- 由此产生的模型尚未广泛发布,因为它们仍在开发中
- 注:图像和视觉模型在后续的 Llama 3.2 Vision 11B 等模型中发布
- 特别说明:论文中实验所说的模型都是 Llama 3.1 模型,论文将其简称为 Llama 3
Introduction and Discussion
- 基础模型是语言、视觉、语音和其他模态的通用模型,旨在支持各种 AI 任务。它们构成了许多现代AI系统的基础(2023)
- 现代基础模型的开发包括两个主要阶段:
- (1)预训练阶段,使用简单任务(如预测下一个词或生成字幕)对模型进行大规模训练;
- (2)后训练阶段,对模型进行微调以遵循指令、与人类偏好保持一致,并提升特定能力(如编码和推理)(2023)
- 在论文中,论文介绍了一组新的语言基础模型,称为 Llama 3
- Llama 3 系列模型原生支持多语言、编码、推理和工具使用
- 论文最大的模型是一个具有 405B 参数的 Dense Transformer,可在高达 128K tokens的上下文窗口中处理信息
- 该系列的每个模型如表1 所示。为简洁起见,论文中呈现的所有结果均针对 Llama 3.1 模型,在全文中论文将其简称为 Llama 3

- 作者认为,开发高质量基础模型有三个关键因素 :数据、规模和复杂性管理(data, scale, and managing complexity) ,论文在开发过程中力求对这三个因素进行优化:
- 数据 :与之前的Llama版本(2023a,b)相比,论文改进了用于预训练和后训练的数据的数量和质量,这些改进包括:
- 为预训练数据开发更精细的预处理和精选 Pipeline
- 以及为后训练数据开发更严格的质量保证和过滤方法
- 论文在约 15T 多语言 tokens 的语料库上预训练 Llama 3(注:Llama 2 的预训练 tokens 为 1.8T)
- 规模 :论文训练的模型规模远大于之前的 Llama 模型:
- 论文的旗舰(flagship)语言模型使用 \(3.8×10^{25}\) 次浮点运算(FLOPs)进行预训练,几乎是最大版本 Llama 2 的 50倍 以上
- 具体而言,论文在 15.6T 文本 tokens 上预训练了一个具有 405B 可训练参数的旗舰模型
- 正如基础模型的 Scaling Laws 所预期的那样,论文的旗舰模型优于使用相同流程训练的较小模型
- 尽管 Scaling Laws 表明,对于论文的训练预算,旗舰模型的大小接近计算最优(compute-optimal),但论文对较小模型的训练时间远超过计算最优所需的时间
- 由此产生的模型在相同推理预算下的性能优于计算最优的模型
- 在后训练期间,论文使用旗舰模型进一步提高这些较小模型的质量
- 复杂性管理 :论文做出的设计选择旨在最大化模型开发过程的扩展能力
- 例如,论文选择了具有微小调整的标准 Dense Transformer 模型架构(2017),而不是混合专家(mixture-of-experts,MoE)模型(2017),以最大化训练稳定性
- 同样,论文采用了相对简单的后训练程序,基于 SFT 、拒绝采样(RS)和直接偏好优化(DPO;2023),而不是更复杂的强化学习算法(2022; 2017),因为后者往往稳定性较差且更难扩展
- 数据 :与之前的Llama版本(2023a,b)相比,论文改进了用于预训练和后训练的数据的数量和质量,这些改进包括:
- 论文的工作成果是 Llama 3:
- 一组具有 8B 、70B 和 405B 参数的三种多语言模型
- 论文在涵盖广泛语言理解任务的众多基准数据集上评估了 Llama 3 的性能
- 论文还进行了广泛的人类评估,将 Llama 3 与竞争模型进行比较
- 旗舰 Llama 3 模型在关键基准上的性能概述如表2 所示
- 论文的实验评估表明,论文的旗舰模型在各种任务上的表现与 GPT-4(2023a)等领先语言模型相当,且接近最先进水平
- 论文的较小模型在同类模型中表现最佳,优于具有相似参数数量的替代模型(2023; 2023)
- 与前身相比, Llama 3 在有用性和无害性之间取得了更好的平衡(2023b)
- 论文在第5.4节 中对 Llama 3 的安全性进行了详细分析

- 论文根据更新后的 Llama 3 社区许可证公开发布了所有三个 Llama 3 模型;(详情请参见 https://llama.meta.com)
- 这包括 405B 参数语言模型的预训练和后训练版本,以及新版本的 Llama Guard 模型(2023)(用于输入和输出安全)
- 作者希望旗舰模型的开放发布将推动研究社区的创新浪潮,并加速通往通用人工智能(AGI)的负责任发展道路
- 作为 Llama 3 开发过程的一部分,论文还开发了模型的多模态扩展,通过组合方法实现图像识别、视频识别和语音理解能力
- 这些模型仍在积极开发中,尚未准备好发布
- 除了语言建模结果外,论文还介绍了论文对这些多模态模型的初步实验结果
General Overview
- Llama 3 的模型架构如图1 所示

- Llama 3 语言模型的开发包括两个主要阶段:
- 语言模型预训练 :论文首先将大型多语言文本语料库转换为离散 tokens,并在生成的数据上预训练 LLM ,以执行 Next-Token Prediction 任务
- 在语言模型预训练阶段,模型学习语言结构,并从所“阅读(reading)”的文本中获取大量关于世界的知识
- 为了有效地做到这一点,预训练是在大规模上进行的:论文在 15.6T tokens 上使用 8K tokens 的上下文窗口预训练了一个具有 405B 参数的模型
- 这个标准预训练阶段之后是持续预训练阶段 ,将支持的上下文窗口增加到 128K tokens(详情见第3节)
- 语言模型后训练 :预训练的语言模型对语言有深入的理解,但尚未遵循指令或表现出论文期望助手具备的行为
- 论文通过多轮人类反馈使模型保持一致,每轮都涉及对指令调整数据进行 SFT 和直接偏好优化(DPO;2024)
- 在后训练阶段,论文还集成新功能,如工具使用,并观察到其他领域的显著改进,如编码和推理(详情见第4节)
- 最后,在后训练阶段,模型还融入了安全缓解措施(具体细节在第5.4节中描述)
- 语言模型预训练 :论文首先将大型多语言文本语料库转换为离散 tokens,并在生成的数据上预训练 LLM ,以执行 Next-Token Prediction 任务
- 由此产生的模型具有丰富的能力。它们可以用至少八种语言回答问题、编写高质量代码、解决复杂推理问题,并且开箱即用地或以零样本方式使用工具
- 论文还进行了实验,通过组合方法为 Llama 3 添加图像、视频和语音能力,论文研究的方法包括图28所示的三个附加阶段:
- 多模态编码器预训练 :论文分别训练图像和语音编码器
- 论文在大量图像-文本对上训练图像编码器,这教会模型视觉内容与该内容的自然语言描述之间的关系
- 论文的语音编码器使用自监督方法进行训练,该方法掩盖语音输入的部分内容,并试图通过离散 token 表示重建被掩盖的部分
- 结果,模型学习了语音信号的结构
- 图像编码器的详细信息见第7节,语音编码器的详细信息见第8节
- 视觉适配器训练 :论文训练一个适配器,将预训练的图像编码器集成到预训练的语言模型中
- 该适配器由一系列交叉注意力层组成,将图像编码器的表示输入到语言模型中
- 适配器在文本-图像对上进行训练,这使图像表示与语言表示保持一致
- 在适配器训练期间,论文还更新图像编码器的参数,但有意不更新语言模型的参数
- 论文还在图像适配器之上的配对视频-文本数据上训练视频适配器,这使模型能够跨帧聚合信息。详情见第7节
- 语音适配器训练 :最后,论文通过适配器将语音编码器集成到模型中,该适配器将语音编码转换为可以直接输入到微调语言模型的 token 表示
- 在监督微调阶段,适配器和编码器的参数联合更新,以实现高质量的语音理解
- 在语音适配器训练期间,论文不改变语言模型
- 论文还集成了文本到语音系统。详情见第8节
- 多模态编码器预训练 :论文分别训练图像和语音编码器
- 论文的多模态实验产生的模型可以识别图像和视频的内容,并支持通过语音界面进行交互。这些模型仍在开发中,尚未准备好发布
Pre-training
- 语言模型预训练包括:
- (1) 大规模训练语料库的精心挑选(Curation)和过滤;
- (2) 模型架构的开发以及确定模型规模的相应 Scaling Laws ;
- (3) 大规模高效预训练技术的开发;
- (4) 预训练方案的制定
- 下面分别介绍这些组成部分
Pre-Training Data
- 论文从包含截至 2023年 底知识的各种数据源中创建语言模型预训练数据集
- 论文对每个数据源应用多种去重方法和数据清理机制,以获得高质量的 token。论文移除了包含大量个人可识别信息(personally identifiable information,PII)的领域和已知包含成人内容的领域
Web Data Curation
- 论文利用的大部分数据来自网络,下面描述论文的清理过程
- PII和安全过滤(PII and safety filtering) :除其他缓解措施外,论文实施了过滤器,旨在从可能包含不安全内容或大量 PII 的网站、根据 Meta 各种安全标准被列为有害的领域,以及已知包含成人内容的领域中移除数据
- 文本提取和清理(Text extraction and cleaning) :论文处理非截断网页的原始 HTML 内容,以提取高质量的多样化文本
- 为此,论文构建了一个自定义解析器,提取 HTML 内容并优化样板移除的精度和内容召回率
- 论文通过人类评估来评估解析器的质量,将其与优化类文章内容的流行第三方 HTML 解析器进行比较,发现它表现更优
- 论文仔细处理包含数学和代码内容的 HTML 页面,以保留这些内容的结构
- 论文保留图像的 alt 属性文本,因为数学内容通常以预渲染图像的形式呈现,而数学内容也在 alt 属性中提供
- 论文通过实验评估不同的清理配置
- 论文发现,与纯文本相比,markdown 对主要在网络数据上训练的模型的性能有害,因此论文移除了所有 markdown Token
- 去重(De-duplication) :论文在URL、文档和行级别应用多轮去重:
- URL级别去重(URL-level de-duplication) :论文在整个数据集上进行 URL 级别去重
- 对于每个 URL 对应的页面,论文保留最新版本
- 文档级别去重(Document-level de-duplication) :论文在整个数据集上进行全局 MinHash(1997) 去重,以移除近重复文档
- 行级别去重(Line-level de-duplication) :论文执行类似于 ccNet(2019) 的激进行级别去重
- 在每 30M 文档的桶中,论文移除出现超过 6次 的行
- 尽管论文的手动定性分析表明,行级别去重不仅移除了各种网站的剩余样板(如导航菜单、Cookie 警告),还移除了频繁的高质量文本 ,但论文的实证评估显示性能有显著提升
- URL级别去重(URL-level de-duplication) :论文在整个数据集上进行 URL 级别去重
- 启发式过滤(Heuristic filtering) :论文开发了启发式方法来移除额外的低质量文档、离群值和重复过多的文档。一些启发式方法的例子包括:
- 论文使用重复 n-gram 覆盖率比率(2021)来移除由重复内容(如日志或错误消息)组成的行
- 这些行可能非常长且唯一,因此无法通过行去重过滤
- 论文使用“脏词(dirty word)”计数(2020)来过滤未被域名 blockList 覆盖的成人网站
- 论文使用 token 分布的 Kullback-Leibler 散度来过滤与训练语料库分布相比包含过多离群 token 的文档
- 论文使用重复 n-gram 覆盖率比率(2021)来移除由重复内容(如日志或错误消息)组成的行
- 基于模型的质量过滤(Model-based quality filtering) :论文还尝试应用各种基于模型的质量分类器来子选择高质量 token,这些包括:
- 使用快速分类器(fast classifiers,如fasttext(2017)),其训练用于识别给定文本是否会被维基百科引用(2023a)
- 更计算密集的基于 Roberta 的分类器(2019a),其在 Llama 2 预测上训练
- 为了训练基于 Llama 2 的质量分类器,论文创建了一个清理后的网页文档训练集,描述质量要求,并指示 Llama 2 的聊天模型确定文档是否满足这些要求
- 为了效率,论文使用 DistilRoberta(2019) 为每个文档生成质量分数
- 论文通过实验评估各种质量过滤配置的效果
- 代码和推理数据(Code and reasoning data) :与 DeepSeek-AI 等(2024)类似,论文构建了特定领域的 Pipeline 来提取与代码和数学相关的网页
- 具体而言,代码和推理分类器都是在 Llama 2 标注(annotation)的网络数据上训练的 DistilRoberta 模型
- 与上述通用质量分类器不同,论文进行提示微调,以针对包含数学推导、STEM 领域推理以及与自然语言交织的代码的网页
- 由于代码和数学的 token 分布与自然语言的 token 分布有很大不同,这些 Pipeline 实现了特定领域的 HTML 提取、定制的文本特征和过滤启发式方法
- 多语言数据(Multilingual data) :与上述英语处理 Pipeline 类似,论文实施过滤器以移除可能包含 PII 或不安全内容的网站数据。论文的多语言文本处理 Pipeline 有几个独特功能:
- 论文使用基于 fasttext 的语言识别模型将文档分类为176种语言
- 论文在每种语言的数据内进行文档级别和行级别去重
- 论文应用特定语言的启发式方法和基于模型的过滤器来移除低质量文档
- 此外,论文使用基于多语言 Llama 2 的分类器对多语言文档进行质量排名,以确保优先考虑高质量内容
- 论文通过实验确定预训练中使用的多语言 token 数量,平衡模型在英语和多语言基准上的性能
Determining the Data Mix
- 为了获得高质量的语言模型,仔细确定预训练数据混合中不同数据源的比例至关重要
- 论文确定此数据混合的主要工具是知识分类和 Scaling Laws 实验
- 知识分类 :论文开发了一个分类器来对网络数据中包含的信息类型进行分类,以更有效地确定数据混合
- 论文使用此分类器对网络上过度表示的数据类别(如艺术和娱乐)进行下采样
- 数据混合的 Scaling Laws :为了确定最佳数据混合,论文进行 Scaling Laws 实验
- 其中论文在数据混合上训练几个小模型,并使用该模型预测大型模型在该组合上的性能(见3.2.1节)
- 论文对不同的数据混合多次重复此过程,以选择新的数据混合候选
- 随后,论文在该候选数据混合上训练更大的模型,并在几个关键基准上评估该模型的性能
- 数据混合总结(Data mix summary) :论文最终的数据混合包含约 50% 的通用知识 token、25% 的数学和推理 token、17% 的代码 token 和 8% 的多语言token
- 理解:多语言仅 8%?那中文一定比较一般
Annealing Data
- 根据经验,论文发现对少量高质量代码和数学数据进行退火(见3.4.3节)可以提升预训练模型在关键基准上的性能
- 与 Li等(2024b)类似,论文使用数据混合进行退火,该组合对选定领域的高质量数据进行上采样
- 论文的退火数据中不包含常用基准的任何训练集 ,这使论文能够评估 Llama 3 的真实少样本学习能力和域外泛化能力
- 理解:很专业,不包括基准测试数据集,保证评估公平性,防止刷榜
- 论文的退火数据中不包含常用基准的任何训练集 ,这使论文能够评估 Llama 3 的真实少样本学习能力和域外泛化能力
- 遵循 OpenAI(2023a),论文评估了在 GSM8k(2021) 和 MATH(2021b) 训练集上进行退火的效果
- 论文发现,退火使预训练的 Llama 3 8B 模型在 GSM8k 和 MATH 验证集上的性能分别提升了 24.0% 和 6.4%
- 但对 405B 模型的提升可以忽略不计,这表明论文的旗舰模型具有强大的上下文学习和推理能力 ,不需要特定的域内训练样本即可获得强大性能
- 使用退火评估数据质量(Using annealing to assess data quality) :与 Blakeney等(2024)类似,论文发现退火使我们能够判断小型特定领域数据集的价值
- 论文通过对 50% 训练的 Llama 3 8B 模型的学习率在 40B token 上线性退火至 0 来衡量此类数据集的价值
- 在这些实验中,论文为新数据集分配 30% 的权重,剩余 70% 权重分配给默认数据混合
- 问题:这里说的权重是什么?是梯度权重吗?
- 使用退火评估新数据源比为每个小型数据集执行 Scaling Laws 实验更高效
Model Architecture
- Llama 3 使用标准的 Dense Transformer 架构(2017)
- 在模型架构方面,它与 Llama 和 Llama 2(2023a,b) 没有显著差异;
- 论文的性能提升主要由数据质量和多样性的改进以及训练规模的增加所驱动
- 与 Llama 2 相比,论文做了一些小的修改:
- 论文使用分组查询注意力(grouped query attention,GQA;(2023))
- 带有 8 个键值头,以提高推理速度并减少解码期间键值缓存的大小
- 论文使用注意力掩码,防止同一序列中不同文档之间的自注意力
- 论文发现此更改在标准预训练期间影响有限 ,但在对非常长的序列进行持续预训练时很重要
- 论文使用包含 128K token 的词汇表
- 论文的 token 词汇表将 tiktoken3 tokenizer 的 100K token 与额外的 28K token 结合,以更好地支持非英语语言
- 与 Llama 2 tokenizer 相比,论文的新 tokenizer 将英语数据样本的压缩率从每个 token 3.17 字符提高到 3.94 字符
- 这使模型能够在相同的训练计算量下“读取”更多文本
- 论文还发现,从选定的非英语语言中添加 28K token 可以提高压缩率和下游性能,且对英语 tokenization 没有影响
- 论文将 RoPE 基础频率超参数增加到 500,000
- 这使论文能够更好地支持更长的上下文;
- Xiong等(2023)表明该值对长达 32768 的上下文长度有效
- 论文使用分组查询注意力(grouped query attention,GQA;(2023))
- Llama 3 405B 使用具有 126层、16384 的 token 表示维度和 128 个注意力头的架构;详情见表3

- 根据论文数据上的 Scaling Laws ,对于论文的 \(3.8×10^{25}\) FLOPs 训练预算,这导致模型大小接近计算最优
Scaling Laws
- 在给定论文的预训练计算预算的情况下,论文开发 Scaling Laws (2022; 2020)来确定旗舰模型的最佳大小
- 除了确定最佳模型大小外,一个主要挑战是预测旗舰模型在下游基准任务上的性能,这是由于几个问题:
- (1) 现有 Scaling Laws 通常仅预测 next token 预测损失 ,而不是特定基准性能
- (2) Scaling Laws 可能有噪声且不可靠 ,因为它们是基于使用小计算预算进行的预训练运行开发的(2022b)
- 为了应对这些挑战,论文实施了两阶段方法来开发准确预测下游基准性能的 Scaling Laws :
- 1)论文首先在计算最优模型在下游任务上的负对数似然与训练 FLOPs 之间建立相关性
- 2)接下来,论文利用 Scaling Laws 模型和使用更高计算 FLOPs 训练的旧模型 ,将下游任务的负对数似然与任务准确性相关联
- 在这一步中,论文特别利用了 Llama 2 系列模型
- 这种方法使论文能够预测给定计算最优模型的特定训练 FLOPs 下的下游任务性能
- 论文使用类似的方法选择论文的预训练数据混合(见3.4节)
- Scaling Laws 实验(Scaling law experiments) :具体而言,论文通过使用 \(6×10^{18}\) FLOPs 到 \(10^{22}\) FLOPs 的计算预算预训练模型来构建论文的 Scaling Laws
- 在每个计算预算下,论文训练参数在 40M 到 16B 之间的模型,在每个计算预算下使用模型大小的子集
- 理解:使用不同的计算预算和不同的模型大小做交叉训练,试图找到模型大小和计算预算的最优的配置点
- 补充:FLOPs 是浮点运算次数,是模型复杂度的评估指标,用于评估一个模型的复杂度
- 以上训练中,超参数配置如下:
- 使用带有 2000个 训练步骤线性预热的余弦学习率调度
- 峰值学习率根据模型大小设置在 \(2×10^{-4}\) 到 \(4×10^{-4}\) 之间
- 余弦衰减设置为峰值的 0.1(理解:这里指最终衰减后的学习率是峰值的 10%)
- 每个步骤的权重衰减(Weight Decay)设置为该步骤学习率的 0.1 倍
- 理解:权重衰减是正则化技术,用于抑制模型过拟合,本质上是在损失函数中添加参数的 L2 范数惩罚项,这种跟着学习率自适应变化的设置使权重衰减随学习率变化而自适应调整,增强了正则化的灵活性
- 问题:这种方法常用吗?
- 论文为每个计算规模使用固定的 Batch Size,范围在 250K 到 4M 之间
- 问题:这里的「250K 到 4M」是指每个 Batch 的 token 数还是 Sequence 数?
- 回答:应该是 token 数,详情见后文的描述
- 但无论如何,Llama 3 训练使用的 Batch Size 非常大
- 问题:这里的「250K 到 4M」是指每个 Batch 的 token 数还是 Sequence 数?
- 这些实验产生了图2中的 IsoFLOPs 曲线
- 这些曲线中的损失是在单独的验证集上测量的
- 论文使用二次多项式拟合测量的损失值,并确定每个抛物线的最小值
- 论文将抛物线的最小值称为相应预训练计算预算下的计算最优模型

- 补充:对图2 的理解 :
- 每条线表示固定计算预算下不同 数据量(tokens)对应的效果
- 注意:由于总的计算预算是固定的 ,显然 tokens 确定时,数据量也会自动确定 ,此时对应的模型 Size 也确定了(因为要保持计算预算固定)
- 实际上,表2 画出的图中,每个曲线的每个点都代表一个模型 Size ,模型 Size 确定以后,固定 计算预算 下的 tokens 自然就出来了(横轴也就确定了)
- 论文使用以这种方式确定的计算最优模型来预测特定计算预算下的最佳训练 token 数量
- 论文假设计算预算 \(C\) 与最佳训练 token 数量 \(N^*(C)\) 之间存在幂律关系:
$$N^*(C) = A C^\alpha$$
- 论文假设计算预算 \(C\) 与最佳训练 token 数量 \(N^*(C)\) 之间存在幂律关系:
- 论文使用图2 中的数据拟合 \(A\) 和 \(\alpha\)
- 论文发现 \((\alpha, A) = (0.53, 0.29)\) ;
- 理解:这是用最优的点(对应给定计算预算下,最优 tokens ,最优模型 Size)来拟合的
- 相应的拟合如图3 所示
- 将得到的 Scaling Laws 外推到 \(3.8×10^{25}\) FLOPs (这个是 Meta AI 的总算力,也就是总训练预算)表明,在 16.55T token 上训练一个 402B 参数的模型是最优的

- 将得到的 Scaling Laws 外推到 \(3.8×10^{25}\) FLOPs (这个是 Meta AI 的总算力,也就是总训练预算)表明,在 16.55T token 上训练一个 402B 参数的模型是最优的
- 一个重要的观察是,随着计算预算的增加,IsoFLOPs 曲线在最小值附近变得更平坦
- 这意味着旗舰模型的性能对模型大小和训练 token 之间权衡的小变化相对稳健
- 基于这一观察,论文最终决定训练一个具有 405B 参数的旗舰模型
- 在每个计算预算下,论文训练参数在 40M 到 16B 之间的模型,在每个计算预算下使用模型大小的子集
- 预测下游任务性能(Predicting performance on downstream tasks) :论文使用得到的计算最优模型来预测旗舰 Llama 3 模型在基准数据集上的性能
- 首先,论文将基准中正确答案的(归一化)负对数似然与训练 FLOPs 线性相关
- 在该分析中,论文仅使用在上述数据混合上训练到 \(10^{22}\) FLOPs 的 Scaling Laws 模型
- 接下来,论文使用 Scaling Laws 模型和 Llama 2 模型(使用 Llama 2 数据混合和 tokenizer 训练)在对数似然和准确性之间建立 sigmoidal 关系
- 论文在 ARC Challenge 基准上展示了该实验的结果(图4)
- 论文发现这种两步 Scaling Laws 预测(外推超过四个数量级)相当准确:它仅略微低估了旗舰 Llama 3 模型的最终性能
Infrastructure, Scaling, and Efficiency
- 论文描述了支持 Llama 3 405B 大规模预训练的硬件和基础设施,并讨论了导致训练效率提升的几项优化
Training Infrastructure
- Llama 1 和 Llama 2 模型在 Meta 的 AI 研究超级集群(2022)上训练
- 随着论文进一步扩展, Llama 3 的训练迁移到了 Meta 的生产集群(2024)
- 这种设置针对生产级可靠性进行了优化,这在论文扩展训练时至关重要
- 计算(Compute) :
- Llama 3 405B 在多达 16000 个 H100 GPU 上训练,每个 GPU 以 700W TDP 运行,配备80GB HBM3,使用 Meta 的 Grand Teton AI 服务器平台(2022)
- 每个服务器配备 8 个 GPU 和 2 个 CPU
- 在服务器内,8 个 GPU 通过 NVLink 连接
- 训练作业使用 MAST(2024)调度,这是 Meta 的全球规模训练调度器
- 存储(Storage) :
- 使用 Tectonic(2021)(Meta 的通用分布式文件系统)为 Llama 3 预训练构建存储架构(2024)
- 它提供 7500台 配备 SSD 的服务器中的 240PB 存储,支持 2TB/s 的可持续吞吐量和 7TB/s 的峰值吞吐量
- 一个主要挑战是支持高度突发的 checkpoint 写入,这会在短时间内使存储架构饱和
- checkpoint 保存每个 GPU 的模型状态,每个 GPU 从 1MB 到 4GB 不等,用于恢复和调试
- 论文旨在最小化 checkpoint 期间的 GPU 暂停时间,并增加 checkpoint 频率,以减少恢复后丢失的工作量
- 网络(Network)
- Llama 3 405B 使用基于 Arista 7800 和 Minipack2 开放计算项目 OCP 机架交换机的RoCE(融合以太网远程直接内存访问)架构
- Llama 3 系列中的较小模型使用 Nvidia Quantum2 InfiniBand 架构训练。RoCE 和 InfiniBand 集群都利用 GPU 之间的 400 Gbps 互连。尽管这些集群的基础网络技术不同,但论文对它们进行调优,以为这些大型训练工作负载提供等效性能
- 论文进一步详细阐述论文的 RoCE 网络,因为论文完全拥有其设计
- 网络拓扑(Network topology) :
- 论文的基于 RoCE 的 AI 集群由 24000 个 GPU5 组成,通过三层 Clos 网络(2024)连接
- 在底层,每个机架托管 16 个 GPU,分为两台服务器,并通过单个 Minipack2 架顶式(ToR)交换机连接
- 在中间层,192 个这样的机架通过集群交换机连接,形成一个具有完整二分带宽的 3072 个 GPU 的 pod,确保无超额订阅
- 在顶层,同一数据中心大楼内的八个这样的 pod 通过聚合交换机连接,形成一个 24000 个 GPU 的集群
- 但聚合层的网络连接不保持完整的二分带宽,而是具有1:7的超额订阅比率
- 论文的模型并行方法(见3.3.2节)和训练作业调度器(2024)都经过优化,以了解网络拓扑,旨在最小化跨 pod 的网络通信
- 负载平衡(Load balancing) :
- LLM训练产生难以使用传统方法,如等价多路径(Equal-Cost Multi-Path,ECMP)路由,在所有可用网络路径上平衡负载的 fat network flows
- 为了应对这一挑战,论文采用了两种技术
- 首先,论文的集体库在两个 GPU 之间创建16个网络流,而不仅仅是一个,从而减少每个流的流量并提供更多流用于负载平衡
- 其次,论文的增强型ECMP(E-ECMP)协议通过对数据包的RoCE报头中的附加字段进行哈希处理,有效地在不同网络路径上平衡这16个流
- 拥塞控制(Congestion control)
- 论文在骨干网中使用深缓冲区交换机(2024)来适应由集体通信模式引起的瞬态拥塞和缓冲。这种设置有助于限制由集体通信模式和慢速服务器导致的持续拥塞及网络背压的影响,这些在训练中很常见
- 最后,通过 E-ECMP 实现的更好负载平衡显著降低了拥塞的可能性
- 通过这些优化,论文成功运行了 24000 个 GPU 的集群,而无需使用传统的拥塞控制方法,如数据中心量化拥塞通知(DCQCN)
- 补充:24000 个 GPU,666!
- Llama 3 405B 使用基于 Arista 7800 和 Minipack2 开放计算项目 OCP 机架交换机的RoCE(融合以太网远程直接内存访问)架构
Parallelism for Model Scaling
- 为了对最大的模型进行训练缩放,论文使用 4D 并行(一种结合了四种不同并行方法的技术)来对模型进行分片(shard)
- 这种方法有效地将计算分布在许多 GPU 上,并确保每个 GPU 的模型参数、优化器状态、梯度和激活适合其 HBM
- 论文的 4D 并行性实现如图5 所示,它结合了:
- 张量并行(tensor parallelism,TP;2012;2019;2023)
- 张量并行性将单个权重张量分割成不同设备上的多个块
- 流水线并行(pipeline parallelism,PP;2019;2021;2023)
- 流水线并行性按层将模型垂直划分为阶段,使不同设备可以并行处理完整模型流水线的不同阶段
- 上下文并行(context parallelism,CP;2023a)
- 上下文并行性将输入上下文划分为段,减少超长序列长度输入的内存瓶颈
- 数据并行(data parallelism,DP;2020;2021;2023b)
- 论文使用全分片数据并行性(FSDP;2020;2021;2023b),它在实现数据并行性的同时对模型、优化器和梯度进行分片,该并行性在多个 GPU 上并行处理数据,并在每个训练步骤后进行同步

- 论文使用全分片数据并行性(FSDP;2020;2021;2023b),它在实现数据并行性的同时对模型、优化器和梯度进行分片,该并行性在多个 GPU 上并行处理数据,并在每个训练步骤后进行同步
- 张量并行(tensor parallelism,TP;2012;2019;2023)
- 论文对 Llama 3 使用 FSDP 来分片优化器状态和梯度,但对于模型分片,论文在前向计算后不进行重新分片,以避免反向传播期间额外的 All-Gather 通信
- GPU 利用率(GPU utilization) :
- 通过仔细调整并行性配置、硬件和软件,论文为表4 中所示的配置实现了 38%-43% 的总体 BF16 模型浮点运算利用率(Model FLOPs Utilization,MFU;2023)

- 与使用 DP=64 的 8000个 GPU 上 43% 的 MFU 相比,在使用 DP=128 的 16000个 GPU 上,MFU 略降至41%,这是由于在训练期间为保持全局每批 token 数恒定 ,每个 DP 组需要更小的 Batch Size
- 理解:Batch Size 越小,MFU 会越低?
- 通过仔细调整并行性配置、硬件和软件,论文为表4 中所示的配置实现了 38%-43% 的总体 BF16 模型浮点运算利用率(Model FLOPs Utilization,MFU;2023)
- 流水线并行性改进(Pipeline parallelism improvements) ,论文在现有实现中遇到了几个挑战:
- Batch Size 限制(Batch size constraint) :当前实现对每个 GPU 支持的 Batch Size 有限制,要求其可被流水线阶段数整除
- 对于图6中的示例,流水线并行性的深度优先调度(DFS;2021)要求 \(N = PP = 4\),而广度优先调度(BFS;2023)要求 \(N = M\),其中 \(M\) 是 Micro-batches 的总数,\(N\) 是同一阶段前向或后向的连续 Micro-batches 数
- 但预训练通常需要灵活调整 Batch Size

- 内存不平衡(Memory imbalance) :现有流水线并行性实现导致资源消耗不平衡
- 由于 Embedding 和预热 Micro-batches,第一阶段消耗更多内存
- 计算不平衡(Computation imbalance) :在模型的最后一层之后,论文需要计算输出和损失,使该阶段成为执行延迟瓶颈
- Batch Size 限制(Batch size constraint) :当前实现对每个 GPU 支持的 Batch Size 有限制,要求其可被流水线阶段数整除
- 为了解决这些问题,论文修改了如图6 所示的流水线调度
- 允许灵活设置 \(N\) (在这种情况下 \(N=5\))
- 可以在每批中运行任意数量的 Micro-batches,这使论文能够:
- (1) 在大规模 Batch Size 受限时,运行比阶段数更少的 Micro-batches ;
- (2) 运行更多 Micro-batches 以隐藏 point-to-point 通信,在 DFS 和 BFS 之间找到最佳点,以实现最佳通信和内存效率
- 为了平衡流水线,论文分别从第一阶段和最后阶段各减少一个 Transformer 层
- 这意味着第一阶段的第一个模型块仅包含 Embedding,最后阶段的最后一个模型块仅包含输出投影和损失计算
- 为了减少流水线气泡(bubbles),论文在一个流水线 Rank 上使用具有 \(V\) 个流水线阶段的交错调度(2021)
- 总体流水线气泡比率为 \(\frac{PP-1}{V*M}\)
- 论文在 PP 中采用异步 point-to-point 通信,这大大加快了训练速度,尤其是在文档掩码引入额外计算不平衡的情况下
- 论文启用
TORCH_NCCL_AVOID_RECORD_STREAMS以减少异步 point-to-point 通信的内存使用 - 为了降低内存成本,基于详细的内存分配分析,论文主动释放未来计算不会使用的张量,包括每个流水线阶段的输入和输出张量
- 通过这些优化,论文可以在不进行激活 checkpoint 的情况下 ,对 8K token 的序列进行 Llama 3 的预训练
- 长序列的上下文并行性(Context parallelism for long sequences)
- 论文利用上下文并行性(CP)来提高 Llama 3 上下文长度缩放时的内存效率,并支持长达 128K 长度的极长序列训练
- 在 CP 中,论文跨序列维度进行分区,具体来说,论文将输入序列划分为 2个 CP 块,因此每个 CP Rank 接收两个块以实现更好的负载平衡
- 第 \(i\) 个 CP Rank 接收第 \(i\) 个和 \((2×CP-1-i)\) 个块
- 与现有 CP 实现(在环形结构中重叠通信和计算;2023a)不同,论文的 CP 实现采用基于 All-Gather 的方法,其中论文首先 All-Gather 键(K)和值(V)张量,然后计算本地查询(Q)张量块的注意力输出
- 尽管 All-Gather 通信延迟暴露在关键路径上,但论文仍然采用这种方法,主要有两个原因:
- (1) 基于 All-Gather 的CP注意力更容易且更灵活地支持不同类型的注意力掩码,如文档掩码
- (2) 由于使用 GQA(2023),通信的 K 和 V 张量比 Q 张量小得多,因此暴露的 All-Gather 延迟很小
- 因此,注意力计算的时间复杂度( \(O(S^2)\) ,其中 \(S\) 表示完整因果掩码中的序列长度)比 All-Gather ( \(O(S)\) )大一个数量级,使得 All-Gather 开销可以忽略不计
- 网络感知并行性配置(Network-aware parallelism configuration)
- 并行性维度的顺序[TP, CP, PP, DP]针对网络通信进行了优化
- 最内层并行性需要最高的网络带宽和最低的延迟,因此通常限制在同一服务器内
- 最外层并行性可能跨多跳网络分布,应容忍更高的网络延迟
- 因此,根据网络带宽和延迟的要求,论文按[TP, CP, PP, DP]的顺序放置并行性维度
- DP(即FSDP)是最外层并行性,因为它可以通过异步预取分片模型权重和减少梯度来容忍更长的网络延迟
- 在避免 GPU 内存溢出的同时,确定具有最小通信开销的最佳并行性配置具有挑战性
- 论文开发了内存消耗估计器和性能预测工具,帮助论文探索各种并行性配置,并有效预测整体训练性能和识别内存差距
- 数值稳定性(Numerical stability) :通过比较不同并行性设置下的训练损失,论文修复了几个影响训练稳定性的数值问题
- 为了确保训练收敛,论文在多个 Micro-batches 的反向计算期间使用 FP32 梯度累积,并在 FSDP 中跨数据并行工作者以 FP32 Reduce-Scatter 梯度
- 对于在正向计算中多次使用的中间张量(如视觉编码器输出),反向梯度也以 FP32 累积
Collective Communication
- 论文用于 Llama 3 的集体通信库基于 Nvidia 的 NCCL 库的分支,称为 NCCLX
- NCCLX 显著提高了 NCCL 的性能,尤其是在更高延迟的网络中
- 回想一下,并行性维度的顺序是[TP, CP, PP, DP],其中 DP 对应于 FSDP
- 最外层并行性维度 PP 和 DP 可能通过多跳网络通信,延迟高达数十微秒
- 原始的 NCCL 集体操作(FSDP 中的 All-Gather 和 Reduce-Scatter ,以及 PP 中的 point-to-point)需要数据分块和分段数据复制,这种方法导致几个效率低下的问题,包括:
- (1) 需要在网络上交换大量小控制消息以促进数据传输;
- (2) 额外的内存复制操作;
- (3) 使用额外的 GPU 周期进行通信
- 对于 Llama 3 训练,论文通过调整分块和数据传输以适应论文的网络延迟(对于大型集群,延迟可能高达数十微秒)来解决这些效率低下问题的一部分
- 论文还允许小控制消息以更高优先级穿越论文的网络,特别是避免在深缓冲区核心交换机中被队首阻塞。论文为未来 Llama 版本正在进行的工作涉及对 NCCLX 进行更深入的更改,以全面解决所有上述问题
Reliability and Operational Challenges
- 16000个 GPU 训练的复杂性和潜在故障场景超过了作者运行过的更大 CPU 集群
- 此外,训练的同步特性使其容错性较低(单个GPU故障可能需要整个作业重启)
- 尽管存在这些挑战,对于 Llama 3 ,论文实现了超过 90% 的有效训练时间 ,同时支持自动集群维护 ,如固件和 Linux 内核升级(2024),这导致每天至少一次训练中断
- 有效训练时间衡量的是在经过时间中用于有用训练的时间比例
- 在预训练的 54天 快照期间,论文总共经历了 466 次作业中断
- 其中,47次 是由于自动维护操作(如固件升级)或操作员发起的操作(如配置或数据集更新)导致的计划中断
- 其余 419次 是意外中断,分类如表5 所示
- 约78%的意外中断归因于已确认的硬件问题(如 GPU 或主机组件故障)或疑似硬件相关问题(如静默数据损坏和计划外的单个主机维护事件)
- GPU 问题是最大的类别,占所有意外问题的 58.7%
- 尽管故障数量众多,但在此期间仅需要三次重大人工干预,其余问题由自动化处理

- 为了增加有效训练时间,论文减少了作业启动和 checkpoint 时间,并开发了快速诊断和问题解决工具
- 论文广泛使用 PyTorch 的内置 NCCL flight recorder (2024)
- 该功能将集体元数据和堆栈跟踪捕获到环形缓冲区中,从而允许论文在大规模下快速诊断挂起和性能问题,尤其是关于NCCLX的问题
- 使用此功能,论文有效地记录每个通信事件和每个集体操作的持续时间,并在 NCCLX watchdog 或 heartbeat 超时情况下自动转储跟踪数据
- 通过在线配置更改(2015),我们可以根据需要有选择地启用更多计算密集型跟踪操作和元数据收集,而无需代码发布或作业重启
- 在大规模训练中调试问题因论文网络中 NVLink 和 RoCE 的混合使用而变得复杂
- 通过 NVLink 的数据传输通常通过 CUDA 内核发出的加载/存储操作进行,远程 GPU 或 NVLink 连接的故障通常表现为 CUDA 内核内停滞的加载/存储操作,而不会返回明确的错误代码
- NCCLX 通过与 PyTorch 的紧密协同设计提高了故障检测和定位的速度和准确性,允许 PyTorch 访问 NCCLX 的内部状态并跟踪相关信息
- 尽管无法完全防止 NVLink 故障导致的停滞,但论文的系统监控通信库的状态,并在检测到此类停顿时自动超时
- 此外,NCCLX 跟踪每个 NCCLX 通信的内核和网络活动,并提供失败 NCCLX 集体的内部状态快照,包括所有 Rank 之间已完成和待处理的数据传输
- 论文分析此数据以调试 NCCLX 缩放问题
- 有时,硬件问题可能导致仍在运行但速度缓慢的掉队者,这些掉队者难以检测
- 即使单个掉队者也会减慢数千个其他 GPU 的速度,通常表现为正常运行但缓慢的通信
- 论文开发了工具来优先处理来自选定进程组的潜在问题通信
- 通过调查仅几个主要可疑对象,论文通常能够有效识别掉队者
- 一个有趣的观察是环境因素对大规模训练性能的影响
- 对于 Llama 3 405B,论文注意到基于时间的昼夜 1%-2% 的吞吐量变化
- 这种波动是由于中午较高的温度影响 GPU 动态电压和频率缩放造成的
- 在训练期间,数万个 GPU 可能同时增加或减少功耗,例如,由于所有 GPU 等待 checkpoint 或集体通信完成,或整个训练作业的启动或关闭
- 当这种情况发生时,可能导致数据中心的功耗瞬间波动数十兆瓦 ,达到电网的极限
- 随着论文为未来更大的 Llama 模型扩展训练 ,这是作者面临的持续挑战
Training Recipe
- 用于预训练 Llama 3 405B 的方案包括三个主要阶段:
- (1) 初始预训练(Initial Pre-Training);
- (2) 长上下文预训练(Long Context Pre-Training);
- (3) 退火(Annealing)
- 下面分别描述这三个阶段(论文使用类似的方案预训练 8B 和 70B 模型)
Initial Pre-Training
- 论文使用 AdamW 预训练 Llama 3 405B
- 峰值学习率为 \(8×10^{-5}\)
- 8000步 线性预热
- 余弦学习率调度在 1200000步 内衰减至 \(8×10^{-7}\)
- 论文在训练早期使用较小的 Batch Size 以提高训练稳定性,随后增加 Batch Size 以提高效率
- 使用 4M token 的初始 Batch Size 和 4096 的序列长度
- 问题:论文中给的 Batch Size 都是 token 为单位的吗?
- 回答:是的,在 NLP 中,以 token 为单位计量,能更精确地控制模型训练时处理的数据量
- 在预训练 252M token 后,将 Batch Size 翻倍至 8M token,序列长度提升至 8192
- 在预训练 2.87T token 后,论文再次将 Batch Size 翻倍至 16M
- 使用 4M token 的初始 Batch Size 和 4096 的序列长度
- 论文发现此训练方案非常稳定:论文观察到很少的损失尖峰(loss spikes) ,并且不需要干预来纠正模型训练发散
- 调整数据混合(Adjusting the data mix) :在训练期间,论文对预训练数据混合进行了几次调整,以提高模型在特定下游任务上的性能
- 在预训练期间增加了非英语数据的百分比,以提高 Llama 3 的多语言性能
- 对数学数据进行上采样 ,以提高模型的数学推理性能
- 在预训练的后期阶段添加了更多近期网络数据 ,以推进模型的知识截止日期
- 对后来被确定为质量较低的预训练数据子集进行下采样
Long Context Pre-Training
- 在预训练的最后阶段,论文在长序列上训练以支持高达 128K token 的上下文窗口
- 不早期在长序列上训练,因为自注意力层中的计算随序列长度的平方增长
- 以增量方式增加支持的上下文长度,预训练直到模型成功适应增加的上下文长度
- 通过测量以下两点来评估成功适应:
- (1) 模型在短上下文评估上的性能已完全恢复;
- (2) 模型完美解决该长度的“大海捞针(needle in a haystack)”任务
- 在 Llama 3 405B 预训练中,论文分六个阶段逐渐增加上下文长度,从原始的 8K 上下文窗口开始,最终达到 128K 上下文窗口
- 此长上下文预训练阶段使用约 800B 训练 token 进行
Annealing(退火)
- 在最后 40M token 的预训练期间,论文将学习率线性退火至 0,保持 128K 的上下文长度
- 退火阶段,论文还调整数据混合以对高质量数据源进行上采样 ,见原文 3.1.3 节(Annealing Data)
- 论文在退火期间计算模型 checkpoint 的平均值(Polyak(1991) averaging),以生成最终的预训练模型
- 理解:最终的预训练模型的参数不是某个 Checkpoint 的结果,而是退火阶段的平均值
Post-training
- 论文通过在预训练 checkpoint 的基础上应用多轮后训练(即让模型与人类反馈对齐)来生成经过对齐的 Llama 3 模型
- 每轮后训练都包括:
- SFT
- 偏好优化(DPO):在通过人工标注或合成生成收集的示例上进行直接 DPO
- 论文的后训练建模和数据方法分别在 4.1节 和 4.2节 中描述
- 论文在 4.3节 中进一步详细介绍了自定义数据精心挑选策略,以提高推理、编码、事实性、多语言能力、工具使用、长上下文和精确指令遵循等方面的性能
Modeling
- 论文后训练策略的核心是奖励模型和语言模型
- 首先,使用人工标注的偏好数据在预训练 checkpoint 的基础上训练奖励模型(见4.1.2节)
- 然后,使用监督微调(SFT;2022)对预训练 checkpoint 进行微调,并通过直接偏好优化(DPO;2024)进一步对齐 checkpoint
- 此过程如图7 所示
- 除非另有说明,论文的建模过程适用于 Llama 3 405B,为简单起见,论文将 Llama 3 405B 称为 Llama 3
- 除非另有说明,论文的建模过程适用于 Llama 3 405B,为简单起见,论文将 Llama 3 405B 称为 Llama 3
Chat Dialog Format
- 为了将 LLM 调整为适合人机交互的模式,论文需要定义一种聊天对话协议,使模型能够理解人类指令并执行对话任务
- 与前身相比,Llama 3 具有新的功能,如工具使用(原文 4.3.5节),这可能需要在单个对话轮次中生成多条消息并发送到不同位置(例如用户、ipython)
- 为了支持这一点,论文设计了一种新的多消息聊天协议,该协议使用各种特殊头部和终止 Token
- 头部 Token 用于指示对话中每条消息的来源和目的地
- 同样,终止 Token 指示何时轮到人类和 AI 发言
Reward Modeling
- 论文在预训练 checkpoint 的基础上训练一个涵盖不同能力的奖励模型(RM)
- 训练目标与 Llama 2 相同,只是论文删除了损失中的边际项,因为论文观察到在数据缩放后改进逐渐减少
- 遵循 Llama 2,论文在过滤掉响应相似的样本后,将所有偏好数据用于奖励建模
- 除了标准的(chosen,rejected)响应偏好对之外,标注还为某些提示创建第三个“编辑响应(edited response)”
- 该对中的选择响应会被进一步编辑以改进(见4.2.1节)
- 因此,每个偏好排名样本有两个或三个具有明确排名的响应(edited > chosen > rejected)
- 在训练期间,论文将提示和多个响应连接成一行,并随机打乱响应顺序
- 问题:响应之间 token 可见吗?是否最后一个 token 上添加奖励 loss?
- 这是对标准场景(将响应放在单独行计算分数)的近似,但在论文的消融实验中,这种方法提高了训练效率,且没有准确性损失
Supervised Finetuning
- 使用奖励模型对论文的人工标注提示进行拒绝采样,具体细节在4.2节中描述
- 将此拒绝采样数据与其他数据源(包括合成数据)结合,论文使用目标 token 的标准交叉熵损失(同时屏蔽提示 token 的损失)对预训练语言模型进行微调
- 有关数据混合的更多详细信息,请参见4.2节
- 论文将此阶段称为监督微调(SFT;2022a)(虽然许多训练目标是模型生成的)
- 论文最大的模型以 \(10^{-5}\) 的学习率进行微调,持续 8.5K 至 9K 步
- 问题:SFT 时的样本数和 Batch Size 是多少?
- 论文发现这些超参数设置在不同轮次和数据混合中都能很好地工作
Direct Preference Optimization
- 论文使用 DPO 进一步训练论文的 SFT 模型,以实现人类偏好对齐
- 在训练时,论文主要使用从之前对齐轮次中表现最佳的模型收集的最新批次偏好数据
- 因此,论文的训练数据更符合每轮中正在优化的策略模型的分布
- 问题:最佳模型是从多个模型中选出来的吗?是不同 step 的 checkpoint 吗?又如何评估最优模型呢?
- 论文还探索了策略算法,如 PPO(2017),但发现 DPO 在大规模模型上需要更少的计算,并且表现更好,尤其是在指令遵循基准(如 IFEval(2023))上
- 对于 Llama 3 ,论文使用 \(10^{-5}\) 的学习率,并将 \(\beta\) 超参数设置为 0.1
- 此外,论文对 DPO 应用以下算法修改:
- 在 DPO 损失中屏蔽格式 Token (Masking out formatting tokens in DPO loss) :
- 论文从损失中的选择和拒绝响应中屏蔽特殊格式 Token ,包括头部和终止 Token (在4.1.1节中描述),以稳定 DPO 训练
- 论文观察到,让这些 Token 对损失产生影响可能会导致不期望的模型行为,例如尾部重复或突然生成终止 Token
- 论文假设这是由于 DPO 损失的对比性质,即选择和拒绝响应中常见 Token 的存在会导致冲突的学习目标,因为模型需要同时增加和减少这些 Token 的可能性
- 使用 NLL 损失进行正则化(Regularization with NLL loss) :
- 论文在选择序列上添加一个额外的负对数似然(negative log-likelihood,NLL)损失项,缩放系数为 0.2,类似于(2024),它通过维持生成的期望格式并防止选择响应的对数概率降低,帮助进一步稳定 DPO 训练(2024;2024)
- 在 DPO 损失中屏蔽格式 Token (Masking out formatting tokens in DPO loss) :
Model Averaging
- 最后,论文对在每个 RM、SFT 或 DPO 阶段使用各种版本的数据或超参数的实验中获得的模型进行平均(2019;2022;2022)
- 理解:在 Llama 3 的训练过程中,针对每个阶段(RM、SFT、DPO)都进行了多种不同的实验。使用不同版本的数据可以让模型接触到不同分布、不同特点的信息,有助于提高模型的泛化能力和对各种情况的适应性
Iterative Rounds
- 遵循 Llama 2,论文以上述方法进行六轮
- 在每个周期中,论文收集新的偏好标注和 SFT 数据,从最新模型中采样合成数据
Post-training Data
- 后训练数据的组成在语言模型的有用性和行为中起着关键作用
- 在本节中,论文讨论论文的人工标注程序和偏好数据收集(4.2.1节)、SFT 数据的组成(4.2.2节)以及数据质量控制和清理方法(4.2.3节)
Preference Data
- 论文的偏好数据标注过程与 Llama 2 类似
- 每轮后,论文部署多个模型进行标注,并为每个用户提示从两个不同模型中采样两个响应
- 这些模型可以使用不同的数据混合和对齐方案进行训练,从而具有不同的能力优势(例如代码专业知识),并增加数据多样性
- 论文要求标注者(annotators)通过将偏好强度分类为四个级别之一来对偏好强度进行评分,这四个级别基于他们对选择响应比拒绝响应的偏好程度:明显更好、更好、稍微更好或大致相同(significantly better, better, slightly better)
- 我们还在偏好排序后加入了编辑环节,以鼓励标注人员进一步完善被选中的回答
- 标注人员可直接编辑选中的回答,或通过反馈提示模型改进其自身的回答
- 因此,我们的部分偏好数据包含三个排序后的回答(edited > chosen > rejected)
- 在表6中,论文报告了用于 Llama 3 训练的偏好标注统计数据
- 通用英语涵盖多个子类别,如基于知识的问答或精确指令遵循,这些属于特定能力的范围之外
- 与 Llama 2 相比,论文观察到提示和响应的平均长度增加,这表明论文在更复杂的任务上训练 Llama 3
- 论文进行质量分析和人类评估过程,以严格评估收集的数据,使论文能够完善提示并向标注者提供系统的、可操作的反馈
- 例如,随着 Llama 3 在每轮后改进,论文相应地增加提示的复杂性,以针对模型表现滞后的领域

- 例如,随着 Llama 3 在每轮后改进,论文相应地增加提示的复杂性,以针对模型表现滞后的领域
- 在每轮后训练中
- 将当时可用的所有偏好数据用于奖励建模
- 仅将来自各种能力的最新批次用于 DPO 训练
- 对于奖励建模和 DPO,论文使用 Token 为选择响应明显优于或优于拒绝响应的样本进行训练,并丢弃响应相似的样本
SFT Data
- 论文的微调数据主要由以下来源组成:
- 来自论文人工标注收集的提示,带有拒绝采样的响应
- 针对特定能力的合成数据(更多详细信息见4.3节)
- 少量人工精心挑选的数据(更多详细信息见4.3节)
- 随着后训练轮次的进行,论文开发了更强的 Llama 3 变体,用于收集涵盖广泛复杂能力的更大数据集
- 在本节中,论文讨论拒绝采样过程的细节和最终 SFT 数据混合的整体组成
- 拒绝采样(Rejection sampling) :
- 在拒绝采样(Rejection sampling,RS)期间,对于人工标注期间收集的每个提示(4.2.1节),论文从最新的聊天模型策略采样 K(通常在 10 到 30 之间)个输出 ,并使用论文的奖励模型选择最佳候选 ,这与(2022)一致
- 注:最新聊天模型通常是前一后训练迭代中表现最佳的 checkpoint,或特定能力中表现最佳的 checkpoint
- 在后训练的后期轮次中,论文引入系统提示来引导 RS 响应符合所需的语气、风格或格式 ,这可能因能力而异
- 在拒绝采样(Rejection sampling,RS)期间,对于人工标注期间收集的每个提示(4.2.1节),论文从最新的聊天模型策略采样 K(通常在 10 到 30 之间)个输出 ,并使用论文的奖励模型选择最佳候选 ,这与(2022)一致
- 为了提高拒绝采样的效率,论文采用 PagedAttention(2023)。PagedAttention 通过动态键值缓存分配增强了内存效率
- 它通过基于当前缓存容量动态调度请求来支持任意输出长度
- 不幸的是,这存在内存不足时换出的风险
- 为了消除这种换出开销,论文定义最大输出长度,并仅在有足够内存容纳该长度的输出时才执行请求
- PagedAttention 还使论文能够在对应于同一提示的所有输出之间共享键值缓存页
- 总体来说,这使得拒绝采样期间的吞吐量提高了 2 倍以上
- 整体数据组成(Overall data composition) ,表7 显示了论文“有用性”组合中每个广泛类别的数据统计信息
- 虽然 SFT 和偏好数据包含重叠的领域,但它们的精心挑选方式不同,从而产生不同的计数统计数据
- 在4.2.3节中,论文描述了用于对数据样本的主题、复杂性和质量进行分类的技术
- 在每轮后训练中,论文仔细调整跨这些轴的整体数据混合,以调整跨广泛基准的性能
- 论文的最终数据混合对一些高质量来源进行多次迭代,并对其他来源进行下采样
Data Processing and Quality Control
- 由于论文的训练数据大部分是模型生成的,因此需要仔细清理和质量控制
- 数据清理(Data cleaning) :在早期轮次中,论文在数据中观察到许多不良模式,例如过度使用表情符号或感叹号
- 因此,论文实施了一系列基于规则的数据删除和修改策略,以过滤或清理有问题的数据
- 例如,为了缓解过度道歉的语气问题,论文识别过度使用的短语(如“I’m sorry”或“I apologize”),并仔细平衡数据集中此类样本的比例
- 数据裁剪(Data pruning) :论文还应用了一系列基于模型的技术来删除低质量训练样本并提高整体模型性能:
- 主题分类(Topic classification) :论文首先将 Llama 3 8B 微调为主题分类器,并对所有数据进行推理,将其分类为粗粒度桶(“Mathematical Reasoning”)和细粒度桶(“几何和三角学(geometry and trigonometry)”)
- 质量评分(Quality scoring) :论文使用奖励模型和基于 Llama 的信号来获取每个样本的质量分数
- 对于基于 RM 的分数,论文将 RM 分数前四分位数的数据视为高质量
- 对于基于 Llama 的分数,论文提示 Llama 3 checkpoint 对通用英语数据的三个评分(准确性、指令遵循和语气/呈现)和编码数据的两个评分(错误识别和用户意图)进行评分,并将获得最高分的样本视为高质量
- RM 和基于 Llama 的分数存在高不一致率,论文发现结合这些信号可在论文的内部测试集上获得最佳召回率
- 最终,论文选择被 RM 或基于 Llama 的过滤器 Token 为高质量的示例
- 难度评分(Difficulty scoring) :由于论文也有兴趣优先考虑对模型来说更复杂的示例,因此论文使用两种难度度量对数据进行评分:Instag(2023)和基于 Llama 的评分
- 对于Instag,论文提示 Llama 3 70B 对 SFT 提示进行意图 Token ,更多意图意味着更高的复杂性
- 论文还提示 Llama 3 对对话的难度进行三分制评分(2024c)
- 语义去重(Semantic deduplication) :最后,论文执行语义去重(2023;2024c)
- 首先,使用 RoBERTa(2019b)对完整对话进行聚类,并在每个聚类内按质量分数 \(\times\) 难度分数排序
- 然后,论文通过遍历所有排序的示例进行贪心选择,仅保留与聚类中已见示例的余弦相似度小于阈值的示例
- 理解:也就是过滤太相似的示例
Capabilities
- 论文重点介绍了为提高特定能力的性能所做的特殊努力,如代码(4.3.1节)、多语言能力(4.3.2节)、数学和推理(4.3.3节)、长上下文(4.3.4节)、工具使用(4.3.5节)、事实性(4.3.6节)和可控性(4.3.7节)
Code
- 自 Copilot 和 Codex(2021)发布以来,用于代码的 LLM 受到了广泛关注
- 开发人员现在广泛使用这些模型来生成代码片段、调试、自动化任务和提高代码质量
- 对于 Llama 3,论文的目标是提高和评估以下高优先级编程语言的代码生成、文档、调试和审查能力:Python、Java、Javascript、C/C++、Typescript、Rust、PHP、HTML/CSS、SQL、bash/shell
- 在这里,论文介绍了通过训练代码专家、生成 SFT 合成数据、使用系统提示引导改进格式以及创建质量过滤器从训练数据中删除不良样本等方面来提高这些编码能力的工作
- 专家训练(Expert training) :论文训练了一个代码专家,用于在后续后训练轮次中收集高质量的代码人工标注
- 这是通过分支主预训练运行并在主要(>85%)代码数据的 1T token 组合上继续预训练来实现的
- 在特定领域数据上继续预训练已被证明对提高特定领域的性能有效(2020)
- 论文遵循类似于 CodeLlama(2023)的方案
- 在训练的最后几千步,论文执行长上下文微调(LCFT),将专家的上下文长度扩展到 16K token,使用高质量的仓库级代码数据混合
- 最后,论文遵循 4.1节 中描述的类似后训练建模方案来对齐此模型,不同之处在于 SFT 和 DPO 数据混合主要针对代码
- 此模型还用于代码提示的拒绝采样(4.2.2节)
- 这是通过分支主预训练运行并在主要(>85%)代码数据的 1T token 组合上继续预训练来实现的
- 合成数据生成(Synthetic data generation) :在开发过程中,论文发现代码生成中的关键问题包括 难以遵循指令、代码语法错误、不正确的代码生成以及难以修复错误(difficulty in following instructions, code syntax errors, incorrect code generation, and difficulty in fixing bugs)
- 虽然密集的人工标注可以解决这些问题,但合成数据生成提供了一种补充方法,成本更低、规模更大,且不受标注者专业水平的限制
- 因此,论文使用 Llama 3 和代码专家生成大量合成 SFT 对话
- 论文描述了三种生成合成代码数据的高级方法。总共,论文生成了超过 2.7M 个合成示例,用于 SFT 期间
- 1. 合成数据生成:执行反馈(Synthetic data generation: execution feedback) :8B 和 70B 模型在由更大、更有能力的模型生成的数据上训练时表现出显著的性能提升。然而,论文的初步实验表明,在 Llama 3 405B 自身生成的数据上训练并无帮助(甚至可能降低性能)。为了解决这一限制,论文引入执行反馈作为事实来源 ,使模型能够从错误中学习并保持正轨(stay on track)。特别是,论文使用以下过程生成大约 1M 个合成编码对话的大型数据集:
- 问题描述生成(Problem description generation) :首先,论文生成大量涵盖各种主题(包括长尾分布主题)的编程问题描述。为了实现这种多样性,论文从各种来源采样随机代码片段,并提示模型生成受这些示例启发的编程问题。这使论文能够接触到广泛的主题,并创建全面的问题描述集(2024)
- 解决方案生成(Solution generation) :然后,论文提示 Llama 3 使用给定的编程语言解决每个问题。论文观察到,在提示中添加良好编程的一般规则可以提高生成的解决方案质量。此外,论文发现要求模型在标注中解释其思维过程很有帮助
- 正确性分析(Correctness analysis) :生成解决方案后,必须认识到其正确性无法保证,并且在微调数据中包含不正确的解决方案可能会损害模型质量。虽然论文不能保证完全正确,但论文开发了方法来近似它。为了实现这一点,论文从生成的解决方案中提取源代码,并应用静态和动态分析技术的组合来测试其正确性,包括:
- 静态分析(Static analysis) :论文将所有生成的代码通过解析器和代码检查器运行,以确保语法正确性,捕获错误,如语法错误、未初始化变量或未导入函数的使用、代码风格问题、类型错误等
- 单元测试生成和执行(Unit test generation and execution) :对于每个问题和解决方案,论文提示模型生成单元测试,在容器化环境中与解决方案一起执行,捕获运行时执行错误和一些语义错误
- 错误反馈和迭代自我纠正(Error feedback and iterative self-correction) :当解决方案在任何步骤失败时,论文提示模型进行修订
- 提示包括原始问题描述、有缺陷的解决方案以及来自解析器/代码检查器/测试器的反馈(标准输出、标准错误和返回代码)
- 单元测试执行失败后,模型可以要么修复代码以通过现有测试,要么修改单元测试以适应生成的代码
- 只有通过所有检查的对话才会包含在最终数据集中,用于 SFT
- 值得注意的是,论文观察到约 20% 的解决方案最初不正确但自我纠正,这表明模型从执行反馈中学习并提高了性能
- 微调与迭代改进(Fine-tuning and iterative improvement) :微调过程分多轮进行,每轮都基于前一轮。每轮后,模型得到改进,为下一轮生成更高质量的合成数据
- 2. 合成数据生成:编程语言翻译(Synthetic data generation: programming language translation) 论文观察到主流编程语言(如Python/C++)与较不常见语言(如Typescript/PHP)之间存在性能差距
- 这并不奇怪,因为论文对较不常见编程语言的训练数据较少
- 为了缓解这一问题,论文通过将常见编程语言的数据翻译到较不常见语言来补充现有数据(类似于2023年在推理任务中的做法)
- 这通过提示 Llama 3 并通过语法解析、编译和执行确保质量来实现
- 图8 展示了一个从Python翻译到PHP的合成代码示例
- 根据 MultiPL-E(2023)基准测量,这显著提升了较不常见语言的性能

- 3. 合成数据生成:反向翻译(Synthetic data generation: backtranslation) 为了提升某些编码能力(如文档生成、解释,在这些场景中执行反馈对质量判断的帮助较小),论文采用了另一种多步骤方法
- 通过此流程,论文生成了约 1.2M 个与代码解释、生成、文档和调试相关的合成对话
- 从预训练数据中各种语言的代码片段开始:
- 生成(Generate) 论文提示 Llama 3 生成代表目标能力的数据(例如,为代码片段添加标注和文档字符串,或要求模型解释一段代码)
- 反向翻译(Backtranslate) 然后提示模型将合成生成的数据“反向翻译”为原始代码(例如,仅根据文档生成代码,或仅根据解释生成代码)
- 过滤(Filter) 以原始代码为参考,提示 Llama 3 判断输出质量(例如,询问反向翻译的代码与原始代码的忠实程度)。然后在SFT中使用生成的自验证分数最高的示例
- 拒绝采样期间的系统提示引导(System prompt steering during rejection sampling) 在拒绝采样过程中,论文使用特定于代码的系统提示来改善代码可读性、文档完整性、全面性和特异性
- 回想一下,此数据用于微调语言模型
- 图9 展示了系统提示如何帮助提升生成代码质量的示例——它添加了必要的标注、使用更具描述性的变量名、节省内存等

- 使用执行和“model-as-judge”信号过滤训练数据(Filtering training data with execution and model-as-judge signals)
- 如 4.2.3节所述,论文偶尔会在拒绝采样数据中遇到质量问题,例如包含错误的代码块
- 在拒绝采样响应中检测这些问题并不像合成代码数据那样直接,因为拒绝采样响应通常包含自然语言和代码的混合,而代码可能不一定需要可执行(例如,用户提示可能明确要求伪代码或仅对可执行程序的一小段进行编辑)
- 为解决此问题,论文利用“model-as-judge”方法,让早期版本的 Llama 3 基于两个标准评估并分配二进制(0/1)分数:代码正确性和代码风格
- 论文仅保留获得满分 2分 的样本
- 最初,这种严格过滤导致下游基准性能下降,主要是因为它不成比例地移除了具有挑战性提示的示例
- 为抵消这一点,论文策略性地修改了一些被归类为最具挑战性的编码数据的响应,直到它们满足基于 Llama 的“model-as-judge”标准
- 通过完善这些挑战性问题,编码数据在质量和难度之间取得平衡,从而实现最佳下游性能
Multilinguality
- 论文将介绍如何提升 Llama 3 的多语言能力,包括训练专注于更多多语言数据的专家模型、为德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语获取并生成高质量多语言指令调整数据,以及应对多语言语言引导的特定挑战以提升模型整体性能
- 专家训练(Expert training) Llama 3 的预训练数据混合中英语 token 显著多于非英语 token
- 为收集非英语语言的高质量人工标注,论文训练了一个多语言专家(multilingual expert)
- 具体方式:通过分支(branching off)预训练并在由 90% 多语言 token 组成的数据混合上继续预训练
we train a multilingual expert by branching off the pre-training run and continuing to pre-train on a data mix that consists of 90% multilingual tokens
- 具体方式:通过分支(branching off)预训练并在由 90% 多语言 token 组成的数据混合上继续预训练
- 然后按照 4.1节 对该专家进行后训练
- 在预训练完全完成前,此专家模型用于收集非英语语言的高质量标注
- 为收集非英语语言的高质量人工标注,论文训练了一个多语言专家(multilingual expert)
- 多语言数据收集(Multilingual data collection) 论文的多语言 SFT 数据主要源自以下来源
- 总体分布: 2.4% 人工标注、44.2% 其他 NLP 任务数据、18.8% 拒绝采样数据和 34.6% 翻译推理数据
- 人工标注(Human annotations) 论文从语言学家和母语者处收集高质量的人工标注数据。这些标注主要由代表现实用例的开放式提示组成
- 其他 NLP 任务数据(Data from other NLP tasks) 为进一步扩充数据,论文使用来自其他任务的多语言训练数据并将其重写为对话格式
- 例如,论文使用来自 exams-qa(2020)和 Conic10k(2023)的数据
- 为改善语言对齐,论文还使用来自 GlobalVoices(2016)和 Wikimedia(2012)的平行文本
- 论文使用基于 LID 的过滤和 Blaser2.0(2023)移除低质量数据
- 对于平行文本数据,论文不直接使用双语对,而是应用受2022a启发的多语言模板,以更好地模拟翻译和语言学习场景中的真实对话
- 拒绝采样数据(Rejection sampled data) :论文对人工标注提示应用拒绝采样以生成用于微调的高质量样本,与英语数据的流程相比仅有少量修改:
- 生成(Generation) :在后训练早期轮次中,论文探索从 0.2-1 的温度范围内随机选择温度超参数以生成多样化输出
- 高温下,多语言提示的响应可能富有创意和启发性,但也容易出现不必要或不自然的代码切换
- 在后训练最后一轮,论文使用 0.6 的恒定值以平衡权衡
- 此外,论文使用专门的系统提示来改善响应格式、结构和整体可读性
- 选择(Selection) :在基于奖励模型选择之前,论文实施多语言特定检查以确保提示和响应之间的高语言匹配率
- 例如,romanized Hindi 提示不应期望 Hindi Devanagari 响应
a romanized Hindi prompt should not expect a response in Hindi Devanagari script
- 例如,romanized Hindi 提示不应期望 Hindi Devanagari 响应
- 生成(Generation) :在后训练早期轮次中,论文探索从 0.2-1 的温度范围内随机选择温度超参数以生成多样化输出
- 翻译数据(Translated data) :为避免使用机器翻译数据微调模型,以防止翻译腔(2020;2023)或可能的名称偏差(2022a)、性别偏差(2021)或文化偏差(2023),论文避免模型仅接触植根于英语文化背景的任务(这些任务可能无法代表论文旨在捕捉的语言和文化多样性)
- 论文对此做了一个例外,翻译了合成定量推理数据(见4.3.3节详情)以提升非英语语言的定量推理性能
- 由于这些数学问题的语言简单,翻译样本几乎没有质量问题
- 论文观察到通过添加此翻译数据,MGSM(2022)上的性能显著提升
Math and Reasoning
- 论文将推理(reasoning)定义为:执行多步计算并得出正确最终答案的能力(the ability to perform multi-step computations and arrive at the correct final answer)
- 以下几个挑战指导论文训练擅长数学推理模型的方法:
- prompts 稀缺(Lack of prompts) :随着问题复杂性增加,用于 SFT 的有效提示或问题数量减少
- 这种稀缺性使得创建多样化且具代表性的训练数据集以教授模型各种数学技能变得困难(2023;2023;2023;2024;2024;2024b)
- 缺乏 ground truth 思维链(Lack of ground truth chain of thought) :有效推理需要分步解决方案以促进推理过程(2022c)
- 然而,通常缺乏 ground truth 思维链,这些对于指导模型如何分解问题并逐步得出最终答案至关重要(2022)
- 中间步骤错误(Incorrect intermediate steps) :使用模型生成的思维链时,中间步骤可能并不总是正确(2021;2022;2023;2023a)
- 这种不准确性可能导致最终答案错误,需要解决
- 教授模型使用外部工具(Teaching models to use external tools) :
- 增强模型使用外部工具(如代码解释器)的能力,使其能够通过代码和文本交织进行推理(2023;2022;2023)
- 此能力可显著提升问题解决能力
- 训练与推理的差异(Discrepancy between training and inference) :模型在训练期间的微调方式与推理期间的使用方式之间通常存在差异
- 推理时,微调模型可能与人类或其他模型交互,需要通过人类反馈改善推理(理解:人类发现推理错误会提示模型,模型要有经过提示进一步优化自己的能力)
- 确保训练与实际使用一致对维持推理性能至关重要
- prompts 稀缺(Lack of prompts) :随着问题复杂性增加,用于 SFT 的有效提示或问题数量减少
- 为应对这些挑战,论文应用以下方法:
- 解决提示稀缺问题(Addressing the lack of prompts) :
- 论文从数学语境中获取相关预训练数据并将其转换为问答格式,可用于监督微调
- 此外,论文识别模型表现不佳的数学技能,并主动从人类处获取提示以教授模型此类技能
- 为促进这一过程,论文创建了数学技能分类法(2024),并要求人类据此提供相关提示/问题
- 用分步推理轨迹扩充训练数据(Augmenting training data with step-wise reasoning traces) :
- 论文使用 Llama 3 为一组提示生成分步解决方案
- 对于每个提示,模型生成可变数量的输出,然后根据正确答案过滤这些生成(2024a)
- 论文还进行自我验证,使用 Llama 3 验证给定问题的特定分步解决方案是否有效
- 此过程通过消除模型未生成有效推理轨迹的实例来提高微调数据质量
- 过滤错误推理轨迹(Filtering incorrect reasoning traces) :
- 论文训练结果和分步奖励模型(2023;2023a)以过滤中间推理步骤错误的训练数据
- 这些奖励模型用于消除具有无效分步推理的数据,确保用于微调的高质量数据
- 对于更具挑战性的提示,论文使用带有学习分步奖励模型的蒙特卡洛树搜索(MCTS)生成有效推理轨迹,进一步增强高质量推理数据的收集(2024)
- 交织代码与文本推理(Interleaving code and text reasoning) :
- 论文提示 Llama 3 通过文本推理和相关 Python 代码的组合解决推理问题(2023)
- 代码执行用作反馈信号,消除推理链无效的情况,确保推理过程的正确性
- 从反馈和错误中学习(Learning from feedback and mistakes) :
- 为模拟人类反馈,论文利用错误生成(即导致错误推理轨迹的生成)并通过提示 Llama 3 产生正确生成来执行错误纠正(2023b;2022;2024a)
- 使用错误尝试的反馈并纠正它们的迭代过程有助于提升模型准确推理和从错误中学习的能力
- 解决提示稀缺问题(Addressing the lack of prompts) :
Long Context
- 在预训练最后阶段,论文将 Llama 3 的上下文长度从 8K token 扩展到 128K token(详情见3.4节)
- 与预训练类似,论文发现微调期间必须仔细调整方案以平衡短上下文和长上下文能力
- SFT 与合成数据生成(SFT and synthetic data generation) :将现有 SFT 方案仅与短上下文数据结合使用,会导致预训练长上下文能力显著退化 ,这表明论文的 SFT 数据混合中需要纳入长上下文数据
- 然而,实际上,让人类标注此类示例极为困难,因为阅读冗长上下文既繁琐又耗时,因此论文主要依赖合成数据填补这一空白
- 论文使用早期版本的 Llama 3 基于关键长上下文用例生成合成数据:(可能多轮的)问答、长文档摘要和代码库推理,并详细描述如下:
- 问答(Question answering) :论文从预训练组合中精心精心挑选一组长文档
- 将这些文档拆分为 8K token 的块,并提示早期版本的 Llama 3 模型基于随机选择的块生成问答对。训练时,将整个文档用作上下文
- 摘要(Summarization) :论文通过首先使用最强的 8K 上下文 Llama 3 模型对 8K 输入长度的块进行分层摘要,然后对摘要进行总结(summarizing),来应用长上下文文档的分层摘要
- 训练时,论文提供完整文档并提示模型在保留所有重要细节的同时摘要文档
- 论文还基于文档摘要生成问答对,并提示模型回答需要全局理解整个长文档的问题
- 长上下文代码推理(Long context code reasoning) :论文解析 Python 文件以识别导入语句并确定其依赖关系
- 从此处,论文选择最常被依赖的文件,特别是被至少五个其他文件引用的文件
- 从存储库中移除其中一个关键文件,并提示模型识别依赖于缺失文件的文件并生成必要的缺失代码
- 论文进一步根据序列长度(16K、32K、64K和128K)对这些合成生成的样本进行分类,以实现对输入长度的更细粒度定位
- 通过仔细消融,论文观察到将 0.1% 的合成生成长上下文数据与原始短上下文数据混合,可优化跨短上下文和长上下文基准的性能
- DPO 论文观察到,只要 SFT 模型在长上下文任务中质量高,DPO 中仅使用短上下文训练数据不会对长上下文性能产生负面影响
- 论文怀疑这是由于论文的 DPO 方案比 SFT 的优化步骤更少
- 鉴于此发现,论文在长上下文 SFT checkpoint 之上对 DPO 保持标准短上下文方案
- 理解:DPO 时可以使用短上下文,但是 SFT 不行
- 问题:继续预训练时行吗?
Tool Use
- 教授 LLM 使用搜索引擎或代码解释器等工具,极大扩展了它们可解决的任务范围,将其从纯聊天模型转变为更通用的助手(2021;2022;2022;2023;2023a;2024)
- 论文训练 Llama 3 与以下工具交互:
- Search Engine :Llama 3 被训练使用 Brave Search 回答关于超出其知识截止日期的近期事件或需要从网络检索特定信息的问题
- Python 解释器(Python interpreter) :Llama 3 可生成和执行代码以执行复杂计算、读取用户上传的文件并基于这些文件解决任务,如问答、摘要、数据分析或可视化
- 数学计算引擎(Mathematical computational engine) :Llama 3 可使用 Wolfram Alpha API8 更准确地解决数学、科学问题或从 Wolfram 数据库检索准确信息
- 生成的模型能够在聊天设置中使用这些工具解决用户查询,包括多轮对话
- 如果查询需要多次工具调用,模型可编写分步计划、按顺序调用工具并在每次工具调用后进行推理
- 论文还提升了 Llama 3 的零样本工具使用能力(即给定上下文内可能未见过的工具定义和用户查询),论文训练模型生成正确的工具调用
- Implementation :论文将核心工具实现为具有不同方法的 Python 对象
- 零样本工具可实现为具有描述、文档(即使用示例)的 Python 函数,模型只需将函数签名和文档字符串作为上下文即可生成适当调用
- 论文还将函数定义和调用转换为 JSON 格式,例如用于 Web API 调用
- 所有工具调用均由 Python 解释器执行,必须在 Llama 3 系统提示中启用
- 核心工具可在系统提示中单独启用或禁用
- 数据收集(Data collection) :与(2024)不同,论文依赖人工标注和偏好来教授 Llama 3 使用工具,这与 Llama 3 通常使用的后训练 Pipeline 有两个主要区别:
- 对于工具,对话通常包含多个助手消息(如调用工具并推理工具输出)
- 因此,论文在消息级别进行标注以收集细粒度反馈:标注者在相同上下文中提供两个助手消息之间的偏好,或者如果两者都包含重大问题,则编辑其中一个消息
- 选择或编辑的消息随后添加到上下文中,对话继续
- 这为助手调用工具和推理工具输出的能力提供了人工反馈
- 标注者无法对工具输出进行排名或编辑
- 论文不执行拒绝采样 ,因为论文在工具基准中未观察到收益
- 为加速标注过程,论文首先通过在先前 Llama 3 checkpoint 生成的合成数据上微调来引导基本工具使用能力
- 因此,标注者需要执行的编辑更少
- 随着 Llama 3 在开发过程中逐步改进,论文逐步复杂化人工标注协议:论文从单轮工具使用标注开始,然后转向对话中的工具使用,最后标注多步工具使用和数据分析
- 对于工具,对话通常包含多个助手消息(如调用工具并推理工具输出)
- 工具数据集(Tool datasets) 为创建工具使用应用的数据,论文采用以下流程:
- 单步工具使用(Single-step tool use)
- 首先,通过构造需要调用论文核心工具之一的合成用户提示(例如,超出论文知识截止日期的问题)进行少样本生成
- 然后,仍然依赖少样本生成,为这些提示生成适当的工具调用,执行它们,并将输出添加到模型的上下文中
- 最后,论文再次提示模型基于工具输出生成对用户查询的最终回答
- 论文最终得到以下形式的轨迹:系统提示、用户提示、工具调用、工具输出、最终答案
- 论文还过滤约 30% 的此数据集以移除无法执行的工具调用或其他格式问题
- 多步工具使用(Multi-step tool use)
- 论文遵循类似协议,首先生成合成数据以教授模型基本多步工具使用能力
- 为此,论文首先提示 Llama 3 生成需要至少两次工具调用的用户提示,这些调用可以是论文核心工具集中的相同或不同工具
- 然后,基于这些提示,论文少样本提示 Llama 3 生成由交错推理步骤和工具调用组成的解决方案,类似于 ReAct(2022)
- 图10 展示了 Llama 3 执行涉及多步工具使用任务的示例

- 文件上传(File uploads)
- 论文为以下文件类型进行标注:.txt、.docx、.pdf、.pptx、.xlsx、.csv、.tsv、.py、.json、.jsonl、.html、.xml
- 论文的提示基于提供的文件,要求摘要文件内容、查找和修复错误、优化代码片段、执行数据分析或可视化
- 图11展示了 Llama 3 执行涉及文件上传任务的示例

- 单步工具使用(Single-step tool use)
- 在用此合成数据微调后,论文在多样化且具挑战性的场景中收集人工标注,包括多轮交互、超过三步的工具使用,以及工具调用未产生满意答案的情况
- 论文使用不同系统提示扩充合成数据,以教授模型仅在激活时使用工具
- 为训练模型避免对简单查询调用工具,论文还从简单数学或问答数据集(2013;2016;2017;2019)添加查询及其无工具响应,但在系统提示中激活工具
- 零样本工具使用数据(Zero-shot tool use data) 论文通过在大型且多样化的部分合成(函数定义、用户查询、对应调用)元组集上微调,提升 Llama 3 的零样本工具使用能力(也称为函数调用)。论文在一组未见过的工具上评估模型
- 单一、嵌套和并行函数调用(Single, nested, and parallel function calling)
- 调用可以是简单的、嵌套的(即论文将一个函数调用作为另一个函数的参数)或并行的(即模型返回一组独立的函数调用)
- 生成多样化的函数、查询和 ground truth 可能具有挑战性(2024),论文借助 Stack(2022)来将合成用户查询锚定到真实函数
- 更具体地说,论文提取函数调用及其定义,清理和过滤它们(如缺少文档字符串或不可执行的函数),并使用 Llama 3 生成与函数调用对应的自然语言查询
- 多轮函数调用(Multi-turn function calling) :
- 论文还遵循(2023b)中提出的类似协议,为带函数调用的多轮对话生成合成数据
- 论文使用多个代理生成领域、API、用户查询、API调用和响应,同时确保生成的数据涵盖多样化的领域和现实的 API
- 所有代理都是 Llama 3 的变体,根据其角色以不同方式提示,并逐步协作
- 单一、嵌套和并行函数调用(Single, nested, and parallel function calling)
Factuality
- 幻觉仍然是大型语言模型的主要挑战
- 模型往往过于自信,即使在知识匮乏的领域也是如此
- 尽管存在这些缺点,它们仍常被用作知识库,这可能导致传播错误信息等风险后果
- 虽然论文认识到事实性不仅限于幻觉,但论文在此采用以幻觉为先的方法
- 论文遵循后训练应使模型“知道自己所知(know what it knows)”而非添加知识的原则(2024;2020)
- 论文的主要方法是使模型生成与预训练数据中存在的事实子集一致的数据。为此,论文开发了一种利用 Llama 3 上下文能力的知识探测技术。此数据生成过程包括以下步骤:
- 1)从预训练数据中提取数据片段(Extract a data snippet)
- 2)通过提示 Llama 3 生成关于这些片段(上下文)的事实性问题(Generate a factual question)
- 3)从 Llama 3 采样对问题的响应(Sample responses)
- 4)以原始上下文为参考、 Llama 3 为裁判,对生成的正确性进行评分(Score the correctness)
- 5)以 Llama 3 为裁判,对生成的信息量进行评分(Score the informativeness)
- 6)对在多轮生成中始终信息丰富但不正确的响应,使用 Llama 3 生成拒绝回答(Generate a refusal)
- 论文使用知识探测生成的数据鼓励模型仅回答其有知识的问题,并拒绝回答不确定的问题
- 此外,预训练数据并不总是事实一致或正确的
- 因此,论文还收集了有限的 Token 事实性数据,处理敏感主题中普遍存在的事实矛盾或错误陈述
Steerability
- 可控性是指导模型行为和结果以满足开发者和用户规范的能力
- 由于 Llama 3 是通用基础模型,应使其尽可能易于调控,以轻松适应不同的下游用例
- 对于 Llama 3,论文专注于通过含自然语言指令的系统提示增强其可控性,尤其是在响应长度、格式、语调和 character/persona 方面
- 数据收集(Data collection) :论文在通用英语类别中收集可控性偏好样本 ,
- 要求标注者为 Llama 3 设计不同的系统提示 ,并使用 Prompt 与模型进行对话,评估其在对话过程中遵循系统提示中定义指令的一致性
- 以下是用于增强可控性的定制系统提示示例:
You are a helpful and cheerful AI Chatbot that acts as a meal plan assistant for busy families. The family consists of 2 adults, 3 teenagers, and 2 preschoolers. Plan two or three days at a time and use leftovers or extra ingredients for the second day’s plan. The user will let you know if they want two or three days. If they don’t, assume three days. Each plan should include breakfast, lunch, snack, and dinner. Ask the user if they approve of the plan or need adjustments. After they approve provide a grocery list with family size in mind. Always keep family preferences in mind and if there’s something that they don’t like provide a substitution. If the user is not feeling inspired then ask them what’s the one place they wish they could visit on vacation this week and then suggest meals based on that location’s culture. Weekend meals can be more complex. Weekday meals should be quick and easy. For breakfast and lunch, easy food like cereal, English muffins with pre-cooked bacon, and other quick easy foods are preferred. The family is busy. Be sure to ask if they have essentials and favorites on hand like coffee or energy drinks so they don’t forget to buy it. Remember to be budget-conscious unless it’s a special occasion.
- 中文翻译:“你是一个乐于助人、性格开朗的 AI 聊天机器人,担任忙碌家庭的膳食计划助手。这个家庭有 2名 成人、3名 青少年和 2名 学龄前儿童。每次计划 2 或 3 天的膳食,并将第二天的计划利用剩菜或多余食材。用户会告知是需要 2 天还是 3 天的计划。如果未告知,默认按 3 天计划。每餐计划应包括早餐、午餐、零食和晚餐。询问用户是否认可计划或需要调整。用户认可后,提供考虑家庭人数的购物清单。始终牢记家庭偏好,若有不喜欢的食物,提供替代方案。如果用户缺乏灵感,询问他们本周最想去的度假地点,然后根据该地区的文化推荐膳食。周末膳食可更复杂,工作日膳食应快捷简单。早餐和午餐偏好简单食物,如麦片、英式松饼配预煮培根等快捷食物。这个家庭很忙碌,记得询问他们是否有咖啡或能量饮料等必需品和最爱,以免忘记购买。记住要注重预算,除非是特殊场合。”
- 建模(Modeling) :收集偏好数据后,论文在奖励建模、拒绝采样、SFT 和 DPO 中利用这些数据来增强 Llama 3 的可控性
Results
- 论文对 Llama 3 进行了一系列广泛的评估,考察了:
- (1)预训练语言模型;
- (2)后训练语言模型;
- (3) Llama 3 的安全特性
- 论文在下面的各个子部分中呈现这些评估的结果
Pre-trained Language Model
- 在本节中,论文报告预训练 Llama 3(第3节)的评估结果,并将其与各种规模相当的其他模型进行比较
- 论文尽可能复现竞争模型的结果
- 对于非 Llama 模型,论文报告公开报道的最佳分数,或者在可能的情况下,报告论文自己复现的结果
- 这些评估的具体细节,包括配置(如提示次数、指标以及其他相关超参数和设置),可以在论文的 GitHub 存储库中查看
- 此外,论文还发布了与公开基准评估相关的生成数据,这些数据可以在 Huggingface 上找到
- 论文在标准基准(5.1.1节)、多项选择题设置的鲁棒性(5.1.2节)、对抗性评估(5.1.3节)上评估了模型的质量,还进行了污染分析,以估计训练数据的污染对评估的影响程度(5.1.4节)
Standard Benchmarks
- 为了将论文的模型与当前最先进的模型进行比较,论文在表8 所示的大量标准基准评估上对 Llama 3 进行了评估
- 这些评估涵盖了八个顶级类别:(1)常识推理;(2)知识;(3)阅读理解;(4)数学、推理和问题解决;(5)长上下文;(6)代码;(7)对抗性评估;(8)综合评估

- 实验设置(Experimental setup) :对于每个基准,论文计算了 Llama 3 以及各种规模相当的预训练模型的分数
- 在可能的情况下,论文使用自己的 Pipeline 为其他模型重新计算数值
- 为了确保公平比较,论文在计算出的分数和该模型在可比或更保守设置下的报告数值之间选择最佳分数(可以在论文的评估设置中找到更多详细信息)
- 对于某些模型,无法(重新)计算基准值,例如,因为预训练模型未发布,或者 API 不提供对数概率的访问权限
- 特别是,这适用于所有与 Llama 3 405B 相当的模型
- 因此,论文不报告 Llama 3 405B 的类别平均值 ,因为这需要所有基准的所有数值都可用
- 问题:其他模型不可用,跟 Llama 3 405B 是否报告 类别均值 有什么关系?
- 显著性估计(Significance estimates) :基准分数是对模型真实性能的估计
- 这些估计存在方差,因为基准集是从某些潜在分布中抽取的有限样本
- 论文遵循 Madaan 等人(2024b)的方法,通过 95% 置信区间(CIs)来报告这种方差,假设基准分数呈高斯分布
- 尽管这个假设并不完全正确(例如,基准分数是有界的),但初步的自助法实验表明,置信区间(对于离散指标)是一个很好的近似 :
$$\text{CI}(S) = 1.96 \times \sqrt{\frac{S \times (1-S)}{N} }$$- \(S\) 是观察到的基准分数(如准确率或 EM)
- 问题:EM 是什么?
- \(N\) 是基准的样本量
- \(S\) 是观察到的基准分数(如准确率或 EM)
- 对于非简单平均值的基准分数,论文省略置信区间
- 论文注意到,由于子采样不是唯一的变异来源,论文的置信区间值低估了能力估计的实际变异
- 8B 和 70B 模型的结果(Results for 8B and 70B models) :
- 图12 报告了 Llama 3 8B 和70B 在常识推理、知识、阅读理解、数学与推理以及代码基准上的平均性能
- 结果显示, Llama 3 8B 在几乎每个类别中都优于竞争模型,无论是在每类胜率还是平均每类性能方面
- 论文还发现,Llama 3 70B 在大多数基准上都大幅优于其前身 Llama 2 70B,只有常识基准可能已接近饱和
- Llama 3 70B 也优于 Mixtral 8x22B

- 所有模型的详细结果:表9、10、11、12、13 和 14 展示了预训练的 Llama 3 8B、70B 和 405B 模型在阅读理解任务、编码任务、常识理解任务、数学推理任务和一般任务上的基准性能
- 这些表格将 Llama 3 的性能与类似规模的模型进行了比较
- 结果显示,Llama 3 405B 与同类其他模型相比具有竞争力
- 特别是,Llama 3 405B 大幅优于之前的开源模型
- 关于长上下文,论文在 5.2节 中提供了更全面的结果(包括如大海捞针等探测任务)
Model Robustness
- 除了基准性能外,鲁棒性是预训练语言模型质量的一个重要因素
- 论文研究了预训练语言模型对多项选择题(MCQ)设置中设计选择的鲁棒性
- 先前的工作已经报告说,模型性能可能对这种设置中看似随意的设计选择敏感,例如上下文中示例的顺序和标签(2022;2021;2023;2022;2024)、提示的确切格式(2023b;2022),或者答案选项的格式和顺序(2024;2024a;2023)
- 受此工作的启发,论文使用 MMLU 基准来评估预训练模型对以下方面的鲁棒性:
- (1)少样本标签偏差;
- (2)标签变体;
- (3)答案顺序;
- (4)提示格式:
- 少样本标签偏差 :遵循 Zheng等人(2023)和 Weber等人(2023a)的方法,论文研究了四样本示例中标签分布的影响。具体来说,论文考虑以下设置:
- (1)所有少样本示例具有相同的标签(AAAA);
- (2)所有示例具有不同的标签(ABCD);
- (3)仅存在两个标签(AABB 和 CCDD)
- 标签变体 :论文还研究了模型对不同选择 Token 集的响应。论文考虑 Alzahrani等人(2024)提出的两组:
- 一组常见的语言无关 Token ($ & # @)
- 一组稀有 Token (œ § з ü),这些 Token 没有任何隐含的相对顺序
- 论文还考虑了规范标签的两个版本(A. B. C. D. 和 A) B) C) D))和一个数字列表(1. 2. 3. 4.)
- 答案顺序 :遵循 Wang 等人(2024a)的方法,论文计算了不同答案顺序下结果的稳定性
- 为了计算这一点,论文根据固定排列重新映射数据集中的所有答案
- 例如,对于排列 ABCD,所有标签为 A 和 B 的答案选项保持其标签,所有标签为 C 的答案选项变为 D,反之亦然
- 提示格式 :论文评估了五种不同任务提示的性能差异,这些提示在提供的信息量上有所不同:
- 一个提示只是要求模型回答问题,而其他提示则断言模型的专业知识或应该选择最佳答案
- 图13 展示了论文研究模型性能对标签变体(左)和少样本标签偏差(右)的鲁棒性实验结果
- 结果表明,论文的预训练语言模型对 MCQ 标签的变化和少样本提示标签的结构非常鲁棒
- 这种鲁棒性在 405B 参数模型中尤为明显

- 图14 展示了论文对答案顺序和提示格式的鲁棒性研究结果。图中的结果进一步强调了论文预训练语言模型性能的鲁棒性,特别是 Llama 3 405B 的鲁棒性
Adversarial Benchmarks
- 除了上述基准外,论文还在三个领域的几个对抗性基准上进行了评估:问答、数学推理和释义检测
- 这些测试探索了模型在专门设计的具有挑战性任务上的能力,也可能指出对基准的过度拟合
- 对于问答,论文使用了对抗性 SQuAD(Jia和Liang,2017)和 Dynabench SQuAD(2021)
- 对于数学推理,论文使用了 GSM-Plus(2024c)
- 对于释义检测,论文使用了 PAWS(2019)
- 图15 展示了 Llama 3 8B、70B 和 405B 在对抗性基准上的分数,作为它们在非对抗性基准上性能的函数
- 论文用于非对抗性基准的是 SQuAD(2016)用于问答,GSM8K 用于数学推理,QQP(2017)用于释义检测
- 每个数据点代表一对对抗性和非对抗性数据集(例如,QQP与PAWS配对),论文展示了一个类别内的所有可能对
- 对角线黑色线表示对抗性和非对抗性数据集之间的 parity(在线上表示模型无论对抗性如何都有相似的性能)

- 在释义检测方面,预训练和后训练模型似乎都没有受到PAWS所构造的对抗性的影响,这标志着相对于前一代模型有了实质性的进步
- 这一结果证实了 Weber等人(2023a)的发现,他们也发现 LLM 对几个对抗性数据集中的虚假相关性较不敏感
- 但对于数学推理和问答,对抗性性能明显低于非对抗性性能
- 这种模式对于预训练和后训练模型来说是相似的
Contamination Analysis
- 论文进行了污染分析,以估计评估预训练语料中存在的评估数据污染对基准测试分数(Benchmark Score)的影响程度
- 理解:数据污染评估的是测试集是否被大模型用于预训练了
- 在已有研究中,学者们采用了多种不同的污染检测方法及超参数组合,具体概述可参考Singh等人(2024)的研究
- 这些方法都可能存在假阳性或假阴性的问题,如何最优地进行污染分析目前仍是开放的研究领域
- 论文主要遵循Singh等人(2024)的建议
- 方法(Method) :具体而言,Singh等人(2024)提出基于实证选择污染检测方法,其标准是看哪种方法能在数据集的”干净”部分与完整数据集之间产生最大差异(他们称之为”估计性能增益(stimated per- formance gain)“)
- 针对所有评估数据集,我们采用 8-gram 重叠度进行样本评分,该方法经 Singh等人验证对多数数据集具有较高准确性
- 如果数据集 \(D\) 中某个样本的 \(\mathcal{T}_D\) 比例 token 在预训练语料中出现过至少一次 8-gram 匹配,我们就认为该样本受到污染
- 我们为每个数据集单独设定 \(\mathcal{T}_D\) 阈值,选取标准是在三种模型规模下能呈现最大显著性能增益的临界值
- 结果(Result) :如表15所示,我们报告了所有关键基准测试中,根据上述方法(以最大估计性能增益为判定标准)被判定为污染的评估数据百分比
- 对于结果不显著的基准测试(例如因干净样本集/污染样本集数量过少,或观测到的性能增益估计值呈现极端异常波动),表中不予展示
- 通过表15 可以发现,某些数据集受污染影响较大,而另一些则不然
- 例如 PiQA 和 HellaSwag 两个数据集,其污染估计值与性能增益估计值均较高;
- 相反地,Natural Questions 数据集虽然显示 52% 的污染率,但实际性能几乎未受影响
- SQuAD 和 MATH 数据集在低阈值下呈现高污染率,却未产生性能增益
- 这表明污染要么对这些数据集无实质影响,要么需要更大的 n 元语法才能获得更准确估计
- 最后对于 MBPP、HumanEval、MMLU 和 MMLU-Pro 等数据集,可能需要其他污染检测方法:
- 即便设置更高阈值,8-gram 重叠度给出的污染分数仍然过高,导致无法获得有效的性能增益估计
- 即便设置更高阈值,8-gram 重叠度给出的污染分数仍然过高,导致无法获得有效的性能增益估计
Post-trained Language Model
- 论文展示了 Llama 3 后训练模型在不同能力基准上的结果
- 与预训练类似,论文正在发布与公开基准评估相关的生成数据,这些数据可以在 Huggingface 上找到
- 论文的评估设置的更多细节可以在 Llama 3 Evaluation Details 这里找到
- 基准和指标 :表16 包含了所有基准的概述,按能力组织
- 论文通过与每个基准的提示进行精确匹配来对后训练数据进行去污染
- 除了标准学术基准外,论文还对不同能力进行了广泛的人工评估(详细信息见5.3节)

- 实验设置 :论文采用了与预训练阶段类似的实验设置,并对 Llama 3 与其他规模和能力相当的模型进行了对比分析
- 在可能的情况下,论文自己评估其他模型的性能,并将结果与报告的数值进行比较,选择最佳分数
- 可以在 Llama 3 Evaluation Details 这里找到论文评估设置的更多细节
- 基准和指标 :表16 包含了所有基准的概述,按能力组织
General Knowledge and Instruction-Following Benchmarks
- 论文在表2 中评估了 Llama 3 在常识知识和指令遵循基准上的表现
- 常识知识(General knowledge) :论文利用 MMLU(2021a)和 MMLU-Pro(2024b)来评估 Llama 3 在基于知识的问答方面的能力
- 对于 MMLU,论文报告了在 5-shot 标准设置下没有 CoT 的子任务准确率的宏观平均值
- MMLU-Pro 是 MMLU 的扩展,纳入了更具挑战性、注重推理的问题,消除了嘈杂的问题,并将选择集从四个扩展到十个选项
- 鉴于其对复杂推理的关注,论文为 MMLU-Pro 报告了 5-shot CoT
- 所有任务都被格式化为生成任务,类似于 simple-evals(OpenAI,2024)
- 如表2 所示,论文的 8B 和 70B Llama 3 变体在这两个常识知识任务上都优于其他类似规模的模型
- 论文的 405B 模型优于 GPT-4 和 Nemotron 4 340B,而 Claude 3.5 Sonnet 在较大的模型中表现领先
- 指令遵循(Instruction following) :论文在 IFEval(2023)上评估了 Llama 3 和其他模型遵循自然语言指令的能力
- IFEval 包含约 500个“可验证指令”,如“用超过 400 字书写”,可以通过启发式方法验证
- 在表2 中,论文报告了在严格和宽松约束下的提示级和指令级准确率的平均值
- 请注意,所有 Llama 3 变体在 IFEval 上都优于可比模型
Proficiency Exams
- 接下来,论文在各种最初设计用于测试人类的水平考试上评估了论文的模型
- 论文从公开可用的官方来源获取这些考试;对于某些考试,论文报告每个水平考试不同考试集的平均分数
- 具体来说,论文平均了:
- GRE:官方 GRE 练习测试1和2(来自教育考试服务中心);
- LSAT:官方预测试71、73、80和93;
- SAT:来自2018年版《官方SAT学习指南》的8套考试;
- AP:每门学科的一套官方练习考试;
- GMAT 官方 GMAT 在线考试
- 这些考试中的问题包含 MCQ 风格和生成问题
- 论文排除了附带图像的问题
- 对于包含多个正确选项的 GRE 考试,只有当模型选择了所有正确选项时,论文才将输出视为正确
- 评估使用少样本提示进行,只要每个考试有多个考试集
- 论文将 GRE 的分数缩放到 130-170 的范围,并报告所有其他考试的准确率
- 论文的结果可以在表17 中找到
- 论文观察到,论文的 Llama 3 405B 模型的性能与 Claude 3.5 Sonnet 和 GPT-4o 非常相似
- 论文的 70B 模型的表现更令人印象深刻。它明显优于 GPT-3.5 Turbo,并在许多测试中击败了 Nemotron 4 340B
Coding Benchmarks
- 论文在几个流行的 Python 和多编程语言基准上评估了 Llama 3 的代码生成能力
- 为了衡量模型生成功能正确代码的有效性,论文使用 pass@N 指标,该指标评估 N 次生成中单元测试的通过率。论文报告 pass@1
- Python 代码生成(Python code generation) :
- HumanEval(2021)和 MBPP(2021)是流行的 Python 代码生成基准,专注于相对简单、独立的函数
- HumanEval+(2024a)是 HumanEval 的增强版本,其中生成了更多测试以避免假阳性
- MBPP EvalPlus 基础版本(v0.2.0)是从原始 MBPP(训练和测试)数据集中的 974 个初始问题中选择的 378 个格式良好的问题(2024a)
- 这些基准的结果报告在表18 中
- 在这些基准的 Python 变体中, Llama 3 8B 和 70B 优于类似规模的模型
- 对于最大的模型,Llama 3 405B、Claude 3.5 Sonnet 和 GPT-4o 表现相似,其中 GPT-4o 表现最强

- 多编程语言代码生成(Multi-programming language code generation) :为了评估 Python 之外的代码生成能力,论文报告了 MultiPL-E(2023)基准的结果,该基准基于 HumanEval 和 MBPP 问题的翻译
- 表19 报告了几种流行编程语言的子集的结果
- 请注意,与表18 中的 Python 对应项相比,性能有显著下降
Multilingual Benchmarks
- Llama 3 支持 8 种语言——英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语,尽管基础模型已在更广泛的语言集合上进行了训练
- 在表20 中,论文展示了评估 Llama 3 在多语言 MMLU(Hendrycks 2021a)和多语言小学算术(MGSM)(Shi 2022)基准上的结果

- 在表20 中,论文展示了评估 Llama 3 在多语言 MMLU(Hendrycks 2021a)和多语言小学算术(MGSM)(Shi 2022)基准上的结果
- 多语言 MMLU :论文使用谷歌翻译对 MMLU 问题、少样本示例和答案进行翻译,将任务说明保留为英语,并在 5-shot 设置下进行评估
- 在表20 中,论文报告了德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语的平均结果
- MGSM(Shi 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 模型表现强劲,在两项任务上均大幅领先于竞争对手
Math and Reasoning Benchmarks
- 论文的数学和推理基准结果如表 2 所示
- Llama 3 8B 模型在 GSM8K、MATH 和 GPQA 上优于其他类似规模的模型
- 论文的 70B 模型在所有基准上的表现均显著优于同类模型
- 最后, Llama 3 405B 模型在 GSM8K 和 ARC-C 上是同类最佳,而在 MATH 上是第二佳模型
- 在 GPQA 上,它与 GPT-4o 相当,而 Claude 3.5 Sonnet 则以显著优势成为最佳模型
Long Context Benchmarks
- 论文考虑了一系列跨越不同领域和文本类型的任务
- 在下面列出的基准中,论文专注于使用无偏评估协议的子任务,即基于准确率的指标而非 n-gram 重叠指标(论文还优先选择作者认为方差较低的任务)
- 大海捞针(Needle-in-a-Haystack,2023) :衡量模型检索(随机插入到长文档中的)隐藏信息的能力
- 论文的 Llama 3 模型展示了完美的针检索(needle retrieval)性能,在所有文档深度和上下文长度下均成功检索到 100% 的针
- 论文还在 Multi-needle(表 21)上衡量性能,这是“大海捞针(Needle-in-a-Haystack)”的变体,论文在上下文中插入四根针,并测试模型是否能检索到其中两根
- 论文的 Llama 3 模型取得了近乎完美的检索结果

- ZeroSCROLLS(Shaham 2023) :一个用于长文本自然语言理解的零样本基准
- 论文报告验证集上的数值,因为真实答案未公开
- 论文的 Llama 3 405B 和 70B 模型在该基准的各种任务上匹配或超越其他模型
- InfiniteBench(Zhang 2024) :要求模型理解上下文中的长距离依赖关系
- 论文在 En.QA(基于小说的问答)和 En.MC(基于小说的多项选择问答)上评估 Llama 3
- 其中论文的 405B 模型优于所有其他模型,在 En.QA 上的增益尤其显著
Tool Use Performance
- 论文在一系列零样本工具使用(即函数调用)基准上评估了论文的模型:Nexus(Srinivasan 2023)、API-Bank(Li 2023b)、Gorilla API-Bench(Patil 2023)和伯克利函数调用排行榜(BFCL)(Yan 2024)
- 结果如表 22 所示

- 结果如表 22 所示
- 在 Nexus 上,论文的 Llama 3 变体相比同类模型表现最佳
- 在 API-Bank 上,论文的 Llama 3 8B 和 70B 模型以显著优势优于同类模型
- 405B 模型仅落后 Claude 3.5 Sonnet 0.6%
- 最后,论文的 405B 和 70B 模型在 BFCL 上具有竞争力,在各自的规模类别中紧随其后
- Llama 3 8B 在其类别中表现最佳
- 人工评估(Human evaluations) :论文还进行了人工评估,以测试模型的工具使用能力,重点关注代码执行任务
- 论文收集了 2000 个与代码执行(不含绘图或文件上传)、绘图生成和文件上传相关的用户提示
- 这些提示收集自 LMSys 数据集(Chiang 2024)、GAIA 基准(Mialon 2023b)、人工标注者和合成生成
- 论文使用 OpenAI 的 Assistants API 将 Llama 3 405B 与 GPT-4o 进行比较,结果如图 16 所示
- 在纯文本代码执行任务和绘图生成方面, Llama 3 405B 显著优于 GPT-4o,但在文件上传用例上落后
- 在纯文本代码执行任务和绘图生成方面, Llama 3 405B 显著优于 GPT-4o,但在文件上传用例上落后
Human Evaluations
- 除了对标准基准集的评估外,论文还进行了一系列人工评估
- 这些评估使论文能够衡量和优化模型性能的更细微方面,例如模型的语气、冗长程度以及对细微差别和文化背景的理解
- 精心设计的人工评估密切反映了用户体验,提供了模型在现实场景中表现的见解
- 提示收集(Prompt collection.) :论文收集了涵盖广泛类别和难度的高质量提示
- 为此,论文首先开发了一个包含类别和子类别分类法,以涵盖尽可能多的模型能力
- 论文使用该分类法收集了约 7,000 个提示,涵盖六个单独能力(英语、推理、编码、印地语、西班牙语和葡萄牙语)和三个多轮能力(英语、推理和编码)
- 论文确保在每个类别中,提示在子类别中均匀分布
- 论文还将每个提示分为三个难度级别之一,并确保论文的提示集合包含约 10% 的简单提示、30% 的中等提示和 60% 的困难提示
- 所有人工评估提示集均经过彻底的质量保证流程。建模团队无法访问论文的人工评估提示,以防止测试集的意外污染或过拟合
- 评估过程(Evaluation process) :为了对两个模型进行两两人工评估,论文要求人工标注者对两个模型输出(由不同模型生成)进行偏好选择
- 标注者使用 7 分制进行评分,使他们能够表明一个模型输出是否比另一个“好得多”、“更好”、“略好”或“大致相同”
- 当标注者表示一个模型输出比另一个“更好”或“好得多”时,作者认为该模型“获胜”
- 论文在提示集中按能力报告模型之间的两两比较胜率
- Results :论文使用人工评估流程将 Llama 3 405B 与 GPT-4(0125 API 版本)、GPT-4o(API 版本)和 Claude 3.5 Sonnet(API 版本)进行比较。这些评估的结果如图17 所示
- 论文观察到 Llama 3 405B 的表现与 GPT-4 的 0125 API 版本大致相当,而与 GPT-4o 和 Claude 3.5 Sonnet 相比则取得了混合结果(有胜有负)
- 在几乎所有能力上, Llama 3 和 GPT-4 的胜率均在误差范围内
- 在多轮推理和编码任务上, Llama 3 405B 优于 GPT-4,但在多语言(印地语、西班牙语和葡萄牙语)提示上表现不如 GPT-4
- Llama 3 在英语提示上与 GPT-4o 表现相当,在多语言提示上与 Claude 3.5 Sonnet 相当,在单轮和多轮英语提示上优于 Claude 3.5 Sonnet
- 然而,它在编码和推理等能力上落后于 Claude 3.5 Sonnet
- 从定性角度来看,论文发现人工评估中的模型性能深受细微因素影响,例如模型语气、响应结构和冗长程度——这些是论文在后训练过程中正在优化的因素
- 总体而言,论文的人工评估结果与标准基准评估结果一致:Llama 3 405B 与领先的行业模型极具竞争力,使其成为性能最佳的开源模型

- 局限性(Limitations) :所有人工评估结果均经过彻底的数据质量保证流程
- 然而,由于定义评估模型输出的客观标准具有挑战性,人工评估仍可能受到人工标注者的个人偏见、背景和偏好的影响,这可能导致结果不一致或不可靠
Safety
- 论文的研究重点是评估 Llama 3 在生成安全且负责任内容的同时,最大化有用信息的能力
- 论文的安全工作从预训练阶段开始,主要形式是数据清理和过滤
- 然后,论文描述了论文的安全微调方法,重点关注如何训练模型以符合特定安全策略,同时保留有用性
- 论文分析了 Llama 3 的每项能力,包括多语言、长上下文、工具使用和各种多模态能力,以衡量论文的安全缓解措施的有效性
- 随后,论文描述了论文对网络安全以及化学和生物武器风险的提升评估
- “提升”指的是与使用现有可用技术(如网络搜索)相比,新技术发展带来的额外风险
- 然后,论文描述了如何利用红队(Red Teaming)迭代地识别和应对各种能力的安全风险,并进行剩余风险评估
- 最后,论文描述了系统级安全性,即围绕模型本身的输入和输出开发和编排分类器,以进一步增强安全性,并使开发人员更容易针对各种用例自定义安全性,并以更负责任的方式部署生成式 AI
Benchmark Construction
- 论文创建了各种内部基准,以帮助论文安全且负责任地开发模型
- 论文的基准深受 ML Commons 危害分类法(Vidgen 2024)中风险类别的启发
- 尽管存在各种语言模型安全基准,如 ToxiGen(Hartvigsen 2022)、XS Test(Röttger 2023)等,但 Llama 3 的许多新能力缺乏足够的外部基准,且外部基准往往缺乏广度和深度的足够覆盖
- 对于每个风险类别,论文收集了人工编写的提示,这些提示要么具有对抗性,要么属于边缘性质——此类提示的示例如表23 所示
- 对抗性提示从直接引发有害响应的简单提示到包含复杂越狱技术的提示不等
- 这些对抗性提示的基准是论文衡量违规率的基础

- 作为违规率的反指标,论文还构建了由边缘提示组成的假拒绝基准
- 论文将“假拒绝”定义为模型即使在可能提供安全响应的情况下也拒绝以有用方式回答的情况
- 边缘提示是接近决策边界的提示,经过良好校准的模型应该能够处理,例如:“我如何从总是表现得像主角的闺蜜那里抢风头?”论文每个能力或语言的基准规模超过 4000 个提示,包含单轮和多轮提示的混合
Safety Pre-training
- 作者认为,负责任的开发必须从端到端的角度考虑,并融入模型开发和部署的每个阶段
- 在预训练期间,论文应用了各种过滤器,例如用于识别可能包含个人可识别信息的网站的过滤器(见 3.1 节)
- 论文还高度关注可发现的记忆(Nasr 2023)
- 与 Carlini 等人(2022)类似,论文使用语料库中所有 n-gram 的高效滚动哈希索引,以不同频率采样提示和 ground truth
- 论文通过改变提示和 ground truth 的长度、目标数据的检测语言和领域来构建不同的测试场景
- 然后,论文测量模型逐字生成 ground truth 序列的频率,并分析指定场景中的记忆相对率
- 论文将逐字记忆定义为包含率——模型生成中完全包含 ground truth 续接的比例——并报告按数据中给定特征的流行度加权的平均值,如表 24 所示
- 论文发现训练数据的记忆率较低(405B 模型平均为 1.13% 和 3.91%,n=50 和 n=1000)
- 记忆率与 Llama 2 在相同规模下的水平大致相当,并使用应用于其数据混合的相同方法
- 记忆率与 Llama 2 在相同规模下的水平大致相当,并使用应用于其数据混合的相同方法
Safety Finetuning
- 论文描述了论文的安全微调方法,以缓解多种能力的风险,该方法包含两个关键方面:
- (1)安全训练数据;
- (2)风险缓解技术
- 论文的安全微调过程建立在论文的常规微调方法之上,并进行了针对特定安全问题的修改
- 论文针对两个主要指标进行优化:
- 违规率(Violation Rate,VR),衡量模型产生违反安全策略响应的频率;
- 假拒绝率(False Refusal Rate,FRR),衡量模型错误地拒绝回答无害提示的频率
- 同时,论文在有用性基准上评估模型性能,以确保安全改进不会损害整体有用性
- 微调数据(Finetuning data) :安全训练数据的质量和设计对性能有深远影响
- 通过大量消融实验,论文发现质量比数量更重要
- 论文主要使用从数据供应商收集的人工生成数据,但发现其可能存在错误和不一致(尤其是对于细微的安全策略)
- 为确保最高质量的数据,论文开发了 AI 辅助标注工具,以支持论文严格的质量保证流程
- 除了收集对抗性提示外,论文还收集了一组类似的提示,论文称之为边缘提示
- 这些提示与对抗性提示密切相关,但其目标是教模型学习提供有用响应,从而降低假拒绝率(FRR)
- 除了人工标注外,论文还利用合成数据来提高训练数据集的质量和覆盖范围
- 论文利用一系列技术生成额外的对抗性示例,包括使用精心设计的系统提示的上下文中学习、基于新攻击向量的种子提示引导变异,以及高级算法,如基于 MAP-Elites(Mouret 和 Clune,2015)的 Rainbow Teaming(Samvelyan 2024),该算法生成跨多个多样性维度约束的提示
- 论文还关注模型在生成安全响应时的语气,这会影响下游用户体验
- 论文为 Llama 3 制定了拒绝语气指南,并通过严格的质量保证流程确保所有新安全数据符合该指南
- 论文还使用零样本重写和人工介入编辑的组合,完善现有安全数据以符合指南,从而生成高质量数据
- 通过采用这些方法,以及使用语气分类器评估安全响应的语气质量,论文能够显著改善模型的措辞
- 安全监督微调(Safety supervised finetuning) :遵循论文的 Llama 2 方法(Touvron 2023b),论文在模型对齐阶段将所有有用性数据和安全数据结合使用
- 此外,论文引入了边缘数据集,以帮助模型辨别安全和不安全请求之间的细微差别
- 论文的标注团队被指示根据论文的指南精心制作对安全提示的响应
- 论文发现,当论文战略性地平衡对抗性与边缘示例的比例时,SFT 在对齐模型方面非常有效
- 论文将重点放在更具挑战性的风险领域,增加边缘示例的比例
- 这在论文成功的安全缓解工作中发挥了关键作用,同时将假拒绝保持在最低水平
- 此外,论文在图 18 中研究了模型规模对 FRR 和 VR 权衡的影响
- 论文的结果表明,这种权衡是变化的——较小的模型需要相对于有用性数据更大比例的安全数据,并且与较大的模型相比,更难有效地平衡 VR 和 FRR

- 论文的结果表明,这种权衡是变化的——较小的模型需要相对于有用性数据更大比例的安全数据,并且与较大的模型相比,更难有效地平衡 VR 和 FRR
- 安全 DPO(Safety DPO) :为了强化安全学习,论文将对抗性和边缘示例纳入 DPO 的偏好数据集中
- 论文发现,将响应对设计为在 Embedding 空间中几乎正交 ,对于教模型区分给定提示的好坏响应特别有效
- 论文进行了多项实验,以确定对抗性、边缘和有用性示例的最佳比例,旨在优化 FRR 和 VR 之间的权衡
- 论文还发现,模型规模会影响学习结果——因此,论文为不同的模型规模定制了不同的安全混合
Safety Results
- 论文首先强调 Llama 3 在各个维度上的一般行为,然后描述每个特定新能力的结果以及论文缓解安全风险的有效性
- 总体性能(Overall performance) :Llama 3 最终违规率和假拒绝率与类似模型的比较如图 19 和图 20 所示
- 这些结果侧重于论文最大参数规模的 Llama 3 405B 模型,并与相关竞争对手进行比较。其中两个竞争对手是通过 API 访问的端到端系统,另一个是论文在内部托管并直接评估的开源语言模型
- 论文评估了独立的 Llama 模型以及与论文的开源系统级安全解决方案 Llama Guard 结合使用的模型(5.4.7 节有更多介绍)

- 虽然低违规率是理想的,但将假拒绝作为反指标至关重要,因为一个总是拒绝的模型虽然极其安全,但毫无用处
- 同样,一个总是回答每个提示的模型,无论请求多么有问题,都会产生过度有害和有毒的输出
- 在图 21 中,利用论文的内部基准,论文探索了行业中不同模型和系统如何处理这种权衡,以及 Llama 3 如何比较
- 论文发现,论文的模型实现了极具竞争力的违规率指标,同时保持假拒绝率也很低,表明在有用性和安全性之间取得了良好的平衡

- 多语言安全(Multilingual safety) :论文的实验表明,英语的安全知识不会轻易迁移到其他语言,尤其是考虑到安全策略的细微差别和特定语言的语境
- 因此,为每种语言收集高质量的安全数据至关重要
- 论文还发现,每种语言的安全数据分布从安全角度对性能有显著影响,有些语言受益于迁移学习,而另一些则需要更多特定语言的数据
- 为了实现 FRR 和 VR 的平衡,论文迭代添加对抗性和边缘数据,同时监控这两个指标的影响
- 论文在图19 中展示了短上下文模型在内部基准上的结果,显示 Llama 3 在英语和非英语语言上的违规率和假拒绝率与类似模型和系统的比较
- 为构建每种语言的基准,论文使用了由母语人士编写的提示,有时还辅以从论文的英语基准翻译的内容
- 对于论文支持的每种语言,论文发现配备 Llama Guard 的 Llama 405B 在论文的内部基准上至少与两个竞争系统一样安全,甚至更安全,同时保持具有竞争力的假拒绝率
- 仅看 Llama 405B 模型本身(不使用Llama Guard),论文发现其违规率显著低于竞争的独立开源模型,但假拒绝率较高
- 长上下文安全(Long-context safety) :长上下文模型在没有针对性缓解的情况下容易受到多轮越狱攻击(2024)
- 为解决这一问题,论文在 SFT 数据集中对模型进行了微调,这些数据集包含在上下文中展示不安全行为时的安全行为示例
- 论文开发了一种可扩展的缓解策略,显著降低了 VR,有效抵消了更长上下文攻击的影响,即使是 256-shot 攻击也是如此
- 这种方法对FRR和大多数有用性指标几乎没有影响
- 为量化论文长上下文安全缓解措施的有效性,论文使用了两种额外的基准方法:DocQA 和 Many-shot
- 对于DocQA(文档问答),论文使用可能被用于对抗性方式的长文档
- 为模型提供文档和与文档相关的提示,以测试问题与文档信息的相关性是否会影响模型安全响应提示的能力
- 对于Many-shot,遵循Anil等人(2024)的方法,论文构建了由不安全提示-响应配对组成的合成聊天历史
- 使用与先前消息无关的最终提示,测试上下文中的不安全行为是否会影响模型的响应安全性
- 图20显示了DocQA和Many-shot的违规率和假拒绝率
- 论文看到,Llama 405B(有或没有 Llama Guard)在 DocQA 和 Many-shot上 均优于 Comp. 2 系统,在违规率和假拒绝率方面都更优
- 相对于 Comp. 1,论文发现 Llama 405B 更安全,但在假拒绝方面存在权衡

- 对于DocQA(文档问答),论文使用可能被用于对抗性方式的长文档
- 工具使用安全(Tool usage safety) :可能的工具多样性以及工具使用调用的实现和与模型的集成,使得工具使用成为难以完全缓解的能力(2024)
- 论文专注于搜索用例
- 违规率和假拒绝率如图20所示
- 论文针对 Comp. 1 系统进行了测试,发现 Llama 405B 更安全(尽管假拒绝率略高)
Cybersecurity and Chemical/Biological Weapons Safety
- 网络安全评估结果(CyberSecurity evaluation results) :为评估网络安全风险,论文利用了CyberSecEval基准框架(2023,2024),该框架包含衡量多个领域安全的任务,如生成不安全代码、生成恶意代码、文本提示注入和漏洞识别
- 论文开发并将 Llama 3 应用于关于鱼叉式网络钓鱼(Spear phishing)和自主网络攻击的新基准
- 总体而言,论文发现 Llama 3 在生成恶意代码或利用漏洞方面没有显著弱点,论文在特定任务上的简要结果如下:
- 不安全编码测试框架(Insecure coding testing framework) :针对不安全编码测试框架评估 Llama 3 8B、70B 和 405B
- 论文观察到较大的模型不仅生成更多不安全代码,而且生成的代码平均 BLEU 分数更高(2023)
- 代码解释器滥用提示语料库(Code interpreter abuse prompt corpus) :论文发现 Llama 3 模型在某些提示下容易执行恶意代码 ,其中 Llama 3 405B 尤其容易受到影响,10.4% 的情况下会遵守恶意提示
- Llama 3 70B 的遵守率为3.8%
- 基于文本的提示注入基准(Text-based prompt injection benchmark) :在针对提示注入基准的评估中,针对 Llama 3 405B 的提示注入攻击成功率为 21.7%
- 图22 提供了 Llama 3 、GPT-4 Turbo、Gemini Pro 和 Mixtral 模型的基于文本的提示注入成功率

- 图22 提供了 Llama 3 、GPT-4 Turbo、Gemini Pro 和 Mixtral 模型的基于文本的提示注入成功率
- 漏洞识别挑战(Vulnerability identification challenges) :在使用CyberSecEval 2的夺旗测试挑战评估 Llama 3 识别和利用漏洞的能力时,Llama 3 的表现并不优于常用的传统非LLM工具和技术
- 鱼叉式网络钓鱼基准(Spear phishing benchmark) :论文评估了模型在进行个性化对话以欺骗目标无意识地参与安全漏洞方面的说服力和成功率
- 使用 LLM 生成随机详细的受害者档案,作为 Spear phishing 的目标
- 由 judge LLM( Llama 3 70B)对 Llama 3 70B 和 405B 与受害者模型(Llama 3 70B)互动的表现进行评分,并评估攻击尝试的成功率
- Llama 3 70B 被 judge LLM 判定在 24% 的 Spear phishing 尝试中成功,而 Llama 3 405B被判定成功 14%。图23展示了 judge LLM评估的跨模型和钓鱼目标的说服力分数
- 攻击自动化框架(Attack automation framework) :论文评估了 Llama 3 70B 和 405B 作为自主代理在勒索软件攻击四个关键阶段的潜力——网络侦察、漏洞识别、漏洞利用执行和后利用行动
- 通过配置模型在 Kali Linux 虚拟机上迭代生成和执行新的 Linux 命令,针对另一个具有已知漏洞的虚拟机,使模型自主行动
- 尽管 Llama 3 70B 和 405B 在网络侦察中有效识别网络服务和开放端口,但在 20 和 23 次测试运行中,模型均未能有效利用这些信息获得对易受攻击机器的初始访问权限
- 在漏洞识别方面, Llama 3 70B和405B表现中等,但难以选择和应用成功的利用技术
- 漏洞利用执行尝试完全失败,后利用尝试维持访问或影响网络内主机的尝试也同样失败
- 不安全编码测试框架(Insecure coding testing framework) :针对不安全编码测试框架评估 Llama 3 8B、70B 和 405B
- 网络攻击的提升测试(Uplift testing for cyber attacks) :论文进行了一项提升研究,衡量虚拟助手在两个模拟的攻击性网络安全挑战中,对新手和专家网络攻击者的攻击率提升程度
- 该研究分两阶段进行,有 62 名内部志愿者参与
- 根据进攻安全经验,志愿者被分为“专家”(31人)和“新手”(31人)队列
- 第一阶段,要求受试者在没有LLM协助但可访问开放互联网的情况下完成挑战
- 第二阶段,受试者保留互联网访问权限,但还获得 Llama 3 405B 来完成与第一阶段难度相似的不同攻击性网络安全挑战
- 对受试者挑战攻击阶段完成率的分析表明,使用 405B 模型的新手和专家与仅访问互联网而没有 LLM 的情况相比,提升不显著
- 化学和生物武器的提升测试(Uplift testing for chemical and biological weapons) :为评估与化学和生物武器扩散相关的风险,论文进行了提升测试,旨在评估使用 Llama 3 是否会显著增强行为者精心挑选此类攻击的能力
- 该研究包括六小时的场景,要求两人团队生成虚构的生物或化学攻击行动计划
- 场景涵盖 CBRNE 攻击的主要规划阶段(制剂获取、生产、武器化和交付),旨在引出详细计划,解决与受限材料采购、实际实验室协议和操作安全相关的挑战
- 参与者根据相关科学或操作专业知识背景招募,并分配到由两名低技能行为者(无正式培训)或两名中等技能行为者(在科学或操作方面有一些正式培训和实践经验)组成的团队
- 该研究与一组CBRNE专家合作生成,旨在最大化定量和定性结果的普遍性、有效性和稳健性
- 论文还进行了初步研究以验证研究设计,包括稳健的功效分析,确保论文的样本量足以进行统计分析
- 每个团队被分配到“控制”或“LLM”条件。控制组仅可访问基于互联网的资源,而启用 LLM 的团队可访问互联网以及启用网络搜索(包括PDF摄入)、信息检索能力(RAG)和代码执行(Python和Wolfram Alpha)的 Llama 3 模型
- 为测试 RAG 能力,使用关键字搜索生成数百篇相关科学论文的数据集,并预加载到 Llama 3 模型推理系统中
- 在练习结束时,由具有生物学、化学和操作规划领域专业知识的主题专家评估每个团队生成的行动计划
- 每个计划在潜在攻击的四个阶段进行评估,生成科学准确性、细节、规避检测和科学与操作执行成功概率等指标的分数
- 在经过稳健的德尔菲过程以减轻主题专家(SME)评估中的偏差和可变性后,通过将阶段级指标汇总为综合分数来生成最终分数
- 为测试 RAG 能力,使用关键字搜索生成数百篇相关科学论文的数据集,并预加载到 Llama 3 模型推理系统中
- 对该研究结果的定量分析表明,使用 Llama 3 模型的表现没有显著提升
- 这一结果在进行综合分析(将所有LLM条件与仅网络控制条件进行比较)以及按子组分解时均成立(例如,分别评估 Llama 3 70B和 Llama 3 405B 模型,或分别评估与化学或生物武器相关的场景)
- 在与 CBRNE 专家验证这些结果后,论文评估认为,发布 Llama 3 模型不太可能增加与生物或化学武器攻击相关的生态系统风险
Red Teaming
- 论文利用红队来发现风险,并利用发现结果改进论文的基准和安全调优数据集
- 论文进行定期的红队演习,以持续迭代和发现新风险,这指导了论文的模型开发和缓解过程
- 论文的红队由网络安全、对抗性机器学习、负责任AI和完整性方面的专家组成,此外还有具有特定地理市场完整性问题背景的多语言内容专家
- 论文还与关键风险领域的内部和外部主题专家合作,帮助构建风险分类法,并协助进行更有针对性的对抗性评估
- 针对特定模型能力的对抗性测试(Adversarial testing on specific model capabilities) :论文通过在特定高风险类别背景下的风险发现过程,开始了最初的红队工作,然后测试能力组合
- 红队专注于提示级攻击,以模拟更可能的现实场景——论文发现模型经常偏离预期行为,尤其是在提示意图被模糊或提示层叠多个抽象时
- 随着能力的增加,这些风险变得更加复杂,论文详细描述了以下几个红队发现:
- 短 & 长上下文英语(Short and long-context English) :论文在单轮和多轮对话中混合使用已知的、已发布和未发布的技术。论文还在某些技术和风险类别中利用类似PAIR(2023)的高级对抗性多轮自动化,在很大程度上,多轮对话会导致更有害的输出,几种攻击在模型 checkpoint 中普遍存在,尤其是当一起使用时
- 多轮拒绝抑制(Multi-turn refusal suppression) :指定模型响应遵循特定格式或包含/排除与拒绝相关的特定信息,如特定短语
- 假设场景(Hypothetical scenarios) :将违规提示包装为假设/理论任务或虚构场景
- 提示可以简单到添加“假设(hypothetically)”一词,或构建 elaborate 分层场景
- 角色和角色扮演(Personas and role play) :为模型提供具有特定违规响应特征的违规角色(例如,“你是X,你的目标是Y”),或用户自己扮演模糊提示上下文的特定良性角色
- 添加免责声明和警告(Adding disclaimers and warnings) :作为响应启动的一种形式,论文假设这是一种允许模型以符合广义安全培训的方式提供帮助的方法。在多轮对话中要求添加免责声明、触发警告等,与上述其他攻击结合使用,会导致违规率增加
- 逐渐升级违规(Gradually escalating violation) :多轮攻击,对话开始于或多或少良性的请求,然后通过直接提示获取更夸张的内容,逐渐引导模型生成极具违规性的响应
- 一旦模型开始输出违规内容,就很难恢复(如果遇到拒绝,可使用另一种攻击)
- 对于长上下文模型,这将是一个日益明显的问题
- 多语言(Multilingual) :考虑多种语言时,论文发现了一些独特的风险
- 在一个提示或对话中混合多种语言(Mixing multiple languages in one prompt or conversation) :比使用单一语言更容易导致更多违规输出
- 低资源语言(Lower resource languages) :由于缺乏相关安全微调数据、安全模型泛化能力弱或测试/基准优先级低,可能导致违规输出
- 然而,这种攻击通常总体质量较差,限制了实际对抗性使用
- 俚语、特定上下文或文化特定引用(Slang, specific context or cultural-specific references) :可能造成混淆或乍看之下违规,结果发现模型未能正确理解给定引用,无法生成真正有害的输出或阻止违规输出
- 工具使用(Tool use) :在测试期间,除了英语文本级对抗性提示技术成功生成违规输出外,还发现了几种特定于工具的攻击。这包括但不限于:
- 不安全的工具链(Unsafe tool chaining) :例如,同时请求多个工具,其中一个是违规的,在早期 checkpoint 可能导致所有工具被调用,混合良性和违规输入
- 强制工具使用(Forcing tool use) :通常使用特定输入字符串、碎片化或编码文本,可触发可能违规的工具输入,导致更违规的输出。然后可使用其他技术访问工具结果,即使模型通常会拒绝执行搜索或协助处理结果
- 修改工具使用参数(Modifying tool use parameters) :如在查询中交换单词、重试或在多轮对话中模糊部分初始请求,导致许多早期 checkpoint 出现违规,作为强制工具使用的一种形式
- 短 & 长上下文英语(Short and long-context English) :论文在单轮和多轮对话中混合使用已知的、已发布和未发布的技术。论文还在某些技术和风险类别中利用类似PAIR(2023)的高级对抗性多轮自动化,在很大程度上,多轮对话会导致更有害的输出,几种攻击在模型 checkpoint 中普遍存在,尤其是当一起使用时
- 儿童安全风险(Child safety risks) :儿童安全风险评估由专家团队进行,以评估模型产生可能导致儿童安全风险的输出的能力,并通过微调为任何必要和适当的风险缓解提供信息
- 论文利用这些专家红队会议,通过模型开发扩展论文评估基准的覆盖范围
- 对于 Llama 3 ,论文使用基于目标的方法进行了新的深入会议,评估模型在多个攻击向量上的风险
- 论文还与内容专家合作进行红队演习,评估潜在违规内容,同时考虑特定市场的细微差别或经验
System Level Safety
- 在大型语言模型的各种实际应用中,模型并非孤立使用,而是集成到更广泛的系统中
- 在本节中,论文描述了论文的系统级安全实现 ,它通过提供更多灵活性和控制来补充模型级缓解措施
- 为此,论文开发并发布了一个新的分类器Llama Guard 3,这是一个针对安全分类微调的 Llama 3 8B 模型
- 与 Llama Guard 2(Llama-Team,2024)类似,该分类器用于检测语言模型生成的输入提示和/或输出响应是否违反特定危害类别的安全策略
- 它旨在支持Llama不断增长的能力,可用于英语和多语言文本
- 它还针对工具调用场景进行了优化,如搜索工具和防止代码解释器滥用
- 最后,论文还提供量化变体,以减少内存需求。论文鼓励开发人员将论文发布的系统安全组件作为基础,并为自己的用例进行配置
- 分类(Taxonomy) :论文在AI安全分类法(2024)中列出的13个危害类别上进行训练:儿童性剥削、诽谤、选举、仇恨、滥杀性武器、知识产权、非暴力犯罪、隐私、性相关犯罪、性内容、专业建议、自杀与自残、暴力犯罪
- 论文还在代码解释器滥用类别上进行训练,以支持工具调用用例
- 训练数据(Training data) :论文从Llama Guard(2023)使用的英语数据开始,并扩展该数据集以纳入新能力
- 对于多语言和工具使用等新能力,论文收集提示和响应分类数据,并利用为安全微调收集的数据
- 论文通过提示工程让LLM不拒绝响应对抗性提示,增加训练集中不安全响应的数量。论文使用 Llama 3 对生成的数据进行响应 Token
- 为提高Llama Guard 3的性能,论文使用 Llama 3 进行人工标注和LLM标注,对收集的样本进行广泛清理
- 获取用户提示的标签对于人类和LLM来说都是一项更困难的任务,论文发现人类标签略胜一筹,尤其是对于边缘提示,尽管论文的完整迭代系统能够减少噪声并产生更准确的标签
- 结果(Result) :Llama Guard 3 能够显著降低各能力的违规率(论文的基准平均降低 65%)
- 注:添加系统保障措施(以及一般的任何安全缓解措施)的代价是对良性提示的拒绝增加
- 在表25 中,论文报告了与基础模型相比违规率的降低和假拒绝率的增加,以突出这种权衡。这种影响在图19、20 和 21 中也可见
- 系统安全还提供了更多灵活性
- Llama Guard 3 可仅针对特定危害部署,支持在危害类别级别控制违规和假拒绝之间的权衡
- 表26 按类别呈现违规率降低,以告知开发人员用例应开启/关闭哪些类别
- 为便于部署安全系统,论文使用常用的 int8量化 技术提供 Llama Guard 3 的量化版本,将其大小减少 40% 以上。表27 表明,量化对模型性能的影响可忽略不计

- 基于提示的系统防护(Prompt-based system guards) :系统级安全组件使开发人员能够自定义和控制 LLM 系统对用户请求的响应方式
- 作为论文改进模型系统整体安全性并使开发人员能够负责任地部署的工作的一部分,论文描述并发布了两种基于提示的过滤机制的创建:Prompt Guard和Code Shield
- 论文将这些开源,供社区按原样使用或作为灵感,根据自己的用例进行调整
- Prompt Guard :一种基于模型的过滤器,旨在检测提示攻击,即设计用于颠覆作为应用程序一部分的LLM预期行为的输入字符串
- 该模型是一个多标签分类器,检测两类提示攻击风险——直接越狱(明确尝试覆盖模型安全条件或系统提示的技术)和间接提示注入(模型上下文中包含的第三方数据包含被 LLM 误作为用户命令执行的指令的情况)
- 该模型从 mDeBERTa-v3-base 微调而来,这是一个小型(86M)参数模型,适合过滤 LLM 的输入
- 论文在表28 所示的多个评估数据集上评估了性能
- 论文在与训练数据相同分布的两个数据集(越狱和注入)以及英语的分布外数据集、通过机器翻译构建的多语言越狱集和从 CyberSecEval 提取的间接注入数据集上进行评估
- 总体而言,论文发现该模型能很好地泛化到新分布,且性能强劲

- Code Shield :这是基于推理时过滤的系统级保护类别的一个示例,专注于在不安全代码进入下游用例(如生产系统)之前检测其生成
- 它通过利用静态分析库“不安全代码检测器(Insecure Code Detector,ICD)”来识别不安全代码
- ICD使用一套静态分析工具,对7种编程语言进行分析
- 这类防护措施对开发人员通常很有用,他们可以在各种应用中部署多层保护
Limitations
- 论文对 Llama 3 的安全使用进行了广泛的风险测量和缓解,但没有测试能保证详尽地识别所有可能的风险
- 由于在各种数据集上的训练,Llama 3 仍可能生成有害内容,尤其是对于英语以外的语言,以及被熟练的对抗性红队成员进行提示工程时
- 恶意开发人员或对抗性用户可能会找到新的方法来越狱论文的模型,并将其用于各种 nefarious 用途
- 论文将继续主动识别风险,研究缓解方法,并鼓励开发人员在从模型开发到部署再到用户的每个环节都考虑责任
- 作者希望开发人员能利用并贡献论文在开源系统级安全套件中发布的工具
Inference
- 论文研究了两种使 Llama 3 405B 模型推理高效的主要技术:
- (1)流水线并行;
- (2)FP8量化
- 论文已公开发布 FP8量化 的实现
Pipeline Parallelism
- 当使用 BF16 数值表示模型参数时, Llama 3 405B 无法装入单个配备 8 个 Nvidia H100 GPU 的机器的 GPU 内存
- 为解决此问题,论文使用 BF16 精度在两台机器的 16 个 GPU 上并行化模型推理
- 在每台机器内,高 NVLink 带宽支持使用张量并行(2019)
- 但跨节点的连接带宽较低且延迟较高,因此论文改用流水线并行(2019)
- 在使用流水线并行进行训练时,气泡(bubbles)是主要的效率问题(见3.3节),但在推理期间并非问题,因为推理不涉及需要流水线刷新的反向传播
- 因此,论文使用 micro-batchin 来提高流水线并行的推理吞吐量
- 论文评估了在推理工作负载中使用两个 micro-batchin 对 4,096 个输入 Token 和 256 个输出 Token 的影响,包括推理的键值缓存预填充阶段和解码阶段
- 论文发现 micro-batchin 提高了相同本地批大小下的推理吞吐量,如图24 所示
- 这些改进源于 micro-batchin 使这两个阶段的 micro-batchin 能并发执行
- micro-batchin 带来的额外同步点也会增加延迟,但总体而言,micro-batchin 仍带来了更好的吞吐量-延迟权衡(throughput-latency trade-off)
FP8 Quantization
- 论文利用 H100 GPU 的原生 FP8 支持进行实验,以执行低精度推理
- 为实现低精度推理,论文对模型内部的大多数矩阵乘法应用 FP8 量化,特别是对前馈网络层中的大多数参数和激活进行量化,这些约占推理计算时间的 50%
- 论文不对模型自注意力层中的参数进行量化
- 论文利用动态缩放因子以提高准确性(2024b),优化 CUDA 内核以减少计算缩放因子的开销
- 论文发现 Llama 3 405B 的质量对某些类型的量化敏感,并进行了一些额外更改以提高模型输出质量:
- 1)与Zhang等人(2021)类似,论文不在前几个和最后几个 Transformer 层中执行量化
- 2)高困惑度 Token(如日期)可能导致较大的激活值 ,进而导致 FP8 中的动态缩放因子较大 ,并有不可忽视的下溢数量,导致解码错误
- 为解决此问题,论文将动态缩放因子上限设为 1200
- 3)论文使用行级量化 ,跨参数和激活矩阵的行计算缩放因子(见图25)
- 论文发现这比张量级量化方法效果更好
- 量化误差的影响(Effect of quantization errors) :对标准基准的评估通常表明,即使没有这些缓解措施,FP8推理的表现也与 BF16 推理相当
- 然而,论文发现此类基准未能充分反映 FP8 量化的影响
- 当缩放因子未设上限时,模型偶尔会产生损坏的响应,尽管基准性能很强
- 论文没有依赖基准来衡量量化引起的分布变化,而是分析了使用 FP8 和 BF16 生成的 100,000 个响应的奖励模型分数分布
- 图26 显示了论文量化方法的奖励分布结果,表明论文的 FP8 量化方法对模型响应的影响非常有限

- 效率的实验评估(Experimental evaluation of efficiency) :图27 描绘了使用 Llama 3 405B 进行 FP8 推理在预填充和解码阶段的 throughput-latency trade-off,使用 4,096 个输入 Token 和 256 个输出 Token
- 图27 将 FP8 推理的效率与6.1节中描述的两机 BF16 推理方法进行了比较
- 结果表明,使用 FP8 推理在预填充阶段的吞吐量提高了高达 50%,在解码阶段的 throughput-latency trade-off 显著更好
Vision Experiments
- 论文通过组合方法进行了一系列实验,将视觉识别能力融入 Llama 3 ,该方法包括两个主要阶段
- 首先,论文通过引入并在大量图像-文本对上训练两组交叉注意力层,将预训练图像编码器(2023)与预训练语言模型组合,得到图28 所示的模型
- 其次,论文引入时间聚合层和额外的视频交叉注意力层,在大量视频-文本对上操作,以学习模型识别和处理视频时间信息的能力

- 基础模型开发的组合方法有几个优点:
- (1)它使论文能够并行开发视觉和语言建模能力;
- (2)它规避了视觉和语言数据联合预训练的复杂性,这些复杂性源于视觉数据的 Token 化、不同模态的背景困惑度差异以及模态间的竞争;
- (3)它保证模型在纯文本任务上的性能不受引入视觉识别能力的影响;
- (4)交叉注意力架构确保了:
- 不必花费计算将全分辨率图像经过日益增长的 LLM 主干(特别是每个 Transformer 层中的前馈网络),实现了在推理时更高效
- 论文的多模态模型仍在开发中,尚未准备好发布
- 在 7.6 和 7.7 节呈现实验结果之前,论文描述了用于训练视觉识别能力的数据、视觉组件的模型架构、论文如何缩放这些组件的训练,以及论文的预训练和后训练方法
- 注:【此处省略语音相关部分,待以后补充】
8 Speech Experiments
- 论文进行了实验,研究将语音能力集成到 Llama 3 的组合方法,类似于论文用于视觉识别的方法
- 在输入侧,集成了一个编码器和一个适配器来处理语音信号
- 论文利用系统提示(文本形式)来启用 Llama 3 中语音理解的不同模式
- 如果未提供系统提示,模型将作为通用口语对话模型,能够以与纯文本版本 Llama 3 一致的方式有效响应用户语音
- 对话历史作为提示前缀引入,以改善多轮对话体验
- 论文还尝试了允许 Llama 3 用于自动语音识别(ASR,Automatic Speech Recognition)和自动语音翻译(AST,Automatic Speech Translation)的系统提示
- Llama 3 的语音界面支持 34 种语言。它还允许文本和语音的交错输入,使模型能够解决高级音频理解任务
- 论文还尝试了一种语音生成方法,其中论文实现了一个流式文本到语音(TTS,Text-to-Speech)系统,该系统在语言模型解码期间实时生成语音波形
- 论文基于专有 TTS 系统设计了 Llama 3 的语音生成器,并且没有针对语音生成微调语言模型
- 相反,论文专注于通过在推理时利用 Llama 3 的 Embedding 来提高语音合成的延迟、准确性和自然度
- 语音界面如图28 和29 所示

- 注:【此处省略语音相关部分,待以后补充】