Llama 3.1 技术研究报告-3
四、后训练
我们基于预训练检查点展开多轮后训练,并结合人类反馈(Ouyang等人, 2022年;Rafailov等人, 2024年)对模型进行优化以生成Llama 3模型。每一轮后训练包含监督式微调(SFT)以及直接偏好优化(DPO),这些操作均基于人工注释或合成生成的例子执行。我们在第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
4.1.1 聊天对话格式
为了优化大型语言模型实现人机交互的目的, 我们设计了一个聊天协议, 该协议旨在理解人类指令并执行对话任务。相比上一代, Llama 3带来了更多的功能, 包括工具支持(第4.3.5节), 这一特点要求在一个对话回合内生成多个消息并发送到不同的位置(例如, 使用 Gig 和 ipython)。为此, 我们开发了一种多轮消息传输协议, 采用了一系列特殊的头标记与终止符号。这些头标记用于标识每条消息的来源与目的; 同样地, 终止符号则指示何时在人机之间交替发⾔
4.1.2 奖励建模
基于预训练基准点的基础上构建了一个涵盖多种能力的奖励模型(RM)。其训练目标与Llama 2一致但区别在于我们剔除了损失中的边际项这一做法因为我们观察到数据扩展带来的改进逐渐减弱。在遵循Llama 2的方法论基础上我们通过去除了与之相似的回复后筛选出所有偏好数据用于奖励建模过程特别地对于每一对典型的偏好对比对(被选择与被拒绝)我们还增加了第三个"编辑过的回复"类别其中从被选择的响应中进一步优化以期达到更好的效果(参见第4.2.1节)。因此每个偏好排序样本都对应着两个或三个具有明确优先级关系的具体回复(编辑过 > 被选择 > 被拒绝)。在训练过程中我们将提示语与其多个回复合并在同一行并随机打乱回复顺序这与分别将每个回复单独排列并计算分数的标准场景相仿但在我们的消融研究中这种处理方式在保证准确性的同时显著提升了训练效率。
4.1.3 超监督微调
随后,在人工标注提示的基础上应用奖励模型进行拒绝采样。将这些被拒绝的样本与来自其他数据源(如合成数据)整合,并结合标准交叉熵损失函数对预训练语言模型展开微调(在提示标记上遮蔽损失)。有关数据混合的具体细节,请参阅第4.2节。这一过程被命名为监督式微调(SFT;Wei等人, 2022a;Sanh等人, 2021;Wang等人, 2019)。值得注意的是,在此过程中许多训练目标都是由生成器完成的。
4.1.4 直接偏好优化
我们进一步采用直接偏好优化方法(DPO;Rafailov等人, 2024)对SFT模型进行了训练以满足人类偏好导向的特点。在训练过程中我们主要采用了前一轮对话中表现最为优秀的模型所收集的最新一批偏好数据作为训练素材从而使得我们的训练数据更加贴合每轮优化阶段中的策略模型分布情况。此外我们在策略算法的选择上也进行了多维度探索诸如PPO(Schulman等人, 2017)等方法但最终发现DPO在处理大规模模型时所需的计算资源远低于PPO且在基准测试如IFEval(Zhou等人, 2023)上表现更为出色尤其是针对Llama 3模型我们在实验中采用了学习率为1e-5并设置了β参数值为0.1的基础上我们还对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的方法。在每个轮次结束后我们会部署多个AI模型来进行注释工作,并从每个参与者的反馈中获取两个不同模型各自生成的两个回应样本作为参考依据。这些模型将采用多种数据混合策略,并通过针对性的微调优化性能(例如增强编码专业知识的能力或提升信息检索精度),从而实现不同能力水平的表现(如对专业知识的记忆深度)。在注释过程中参与者需要根据他们对被选择响应相对于被拒绝响应的具体偏好程度进行分类打分(分为明显更好、更好、略好或勉强更好四个等级)。此外我们还增加了编辑步骤以鼓励参与者进一步完善首选响应建议:参与者可以直接修改所选的最佳回应方案或者向AI提示模块发送反馈信息以辅助优化自己的回答内容。因此在我们的偏好数据集中有大约三分之一的比例选择了经过编辑过的最佳回应方案作为最终结果(编辑过 > 被选择 > 被拒绝)。
我们在表6中详细列出了用于训练Llama 3偏好注释的数据统计情况。通用英语涵盖了一系列子类别,包括基于知识的回答类型或精确的操作指令,这些内容超出了特定能力处理的能力范围。相较于L llama 2而言,研究发现提示与回应之间的平均长度显著增长,这表明我们在训练模型时逐步提升了其处理复杂任务的能力。通过建立全面的质量评估体系,并实施人工评估流程,我们可以对收集的数据进行严格验证,从而进一步优化了提示方案,并为注释者提供了系统且实用的反馈渠道。随着模型性能逐步提升,我们在每个阶段都相应地增加了提示方案的复杂性,以便更好地应对模型延迟的情况。
在每一个训练迭代周期中,在线可访问的所有偏好数据都被用来构建奖励模型;而对于DPO(基于政策优化)算法,则仅依赖当前能力评估最新一批数据来执行相应的优化操作。针对奖励建模与DPO任务的具体目标设定中,在实际操作过程中我们始终采用那些经过验证优于未选中的相应样本的数据来进行优化,并剔除那些与之高度相似的样本以提高模型泛化能力。
4.2.2 SFT数据
我们的微调数据主要由以下来源组成:
- 源自我们人工注释收集的提示, 并配合拒绝采样方法进行响应
- 针对特定能力的目标合成数据(参考第4.3节详细说明)
- 仅包含少量人工策划的数据(参考第4.3节详细说明)

在经历了一系列后训练轮次之后
Rejection sampling。在拒绝采样(RS)阶段中,在人工标注阶段收集的每个提示项(第4.2.1节),我们将从最新的对话模型策略中抽取K个候选输出(通常来自上一轮后训练迭代的最佳性能评估点或特定能力的最佳性能评估点),并利用我们的奖励模型进行最优候选选择,在此过程中遵循Bai等人(2022)的研究方法。在后期轮次的后训练阶段中,在每一轮次开始时添加系统提示项, 以指导RS生成的回答符合不同能力所需的语言调式、风格或格式要求。
为提升拒绝采样效率, 本研究采用了名为PagedAttention的技术
整体构成
4.2.3 数据处理和质量控制
基于我们主要依赖于模型生成的数据集,在进行训练之前就必须进行严格的清理和质量把控。
- 数据修剪 。我们采用了基于模型的一系列技术来去除低质量的训练样本以提升整体性能。
- 主题分类 :我们将Llama 3 8B微调为目标分类器,并对全部数据进行推理。
- 质量评分 :为了给每个样本打分,我们同时利用奖励模型以及基于Llama系统的信号来进行评估。对于RM分数,在前四分之一体现最佳的数据被认定为高质量样本;而对于使用Llama检查点进行评估的数据,则根据准确性、指令执行和语调/呈现维度给予满分表评分,并根据编码方面(如识别错误和意图偏差)给予二分表评分。我们认为RM分数与Llama系统评估结果存在显著差异性,在内部测试集中结合这些指标能够达到最佳召回率水平。最终我们将通过RM或Llama系统过滤标记为高质量的数据作为选择对象。
- 难度评分 :为了满足对复杂示例的关注需求,在难度评估方面我们采用了两种不同的指标:一种是Instag(由Lu等人提出),另一种是基于Llama系统的评价标准。在Instag评估中,默认情况下使用意图标记功能更为重要;而在基于Llama系统的评价中,默认则关注对话的整体难度。
此处是语义去重相关内容
4.3 能力
特别注重针对特定能力例如代码多语⾔数学和推理⻓上下⽂⼯具使⽤事实性和可控性等提升性能所做出的努力
4.3.1 代码
自⃑Codex(Chen等人, 2021年)发布以来, 用于代码的大规模语言模型(LLMs)引起了广泛关注。开发者普遍采用这些模型生成代码片段, 进行调试, 执行自动化任务以及提升代码质量。对于Llama 3, 我们主要针对以下高优先级编程语言优化并评估其代码生成能力: Python, Java, JavaScript, C/C++, TypeScript, Rust, PHP, HTML/CSS, SQL以及Bash/Shell。在本研究中, 我们详细阐述了从训练代码专家到为SFT生成合成数据再到通过系统提示引导改善格式最后创建质量过滤器以剔除不良样本等多方面的工作流程。
专家训练
在开发阶段中对代码生成进行了深入分析 ,识别了几个主要挑战包括难以严格遵循具体指令 程序语法错误 生成结果与预期不符的问题以及修复耗时长且复杂性高的困难。尽管理论上密集的人工标注能够有效解决这些问题 合成数据生成提供了一种成本更低 成熟度更高且不需要依赖注释者专业水平的补充方案。因此 我们通过调用LLaMA 3模型与多位代码专家协同工作的方式 生成了大量符合要求的合成SFT对话数据集
我们开发出了⽣成合成代码样本的三类高级方法。整体上,我们 sinheng了超过2.7百万个在SFT过程中使用的合成实例。
1.合成数据生成
问题描述的生成过程:首先,在本研究中我们构建了一个覆盖广泛话题领域的大规模问题数据库集合,并特别关注那些长尾分布中的话题领域。为了实现这一多样化的目标我们采用多源采样方法选取随机代码片段然后利用这些示例来诱导模型生成相关的问题描述这样既保证了内容丰富性又避免了单一来源可能带来的局限性最终构建了一个包含多个不同主题领域的全面的问题数据库(参考Wei等人关于该领域的最新研究)
方案生成:随后,我们建议Llama 3通过指定编程语言来解决问题。我们在提示中引入通用且有效的编程规范有助于提升生成方案的质量;此外,在提示中要求模型提供详细的解释有助于提高理解性。
correctness analysis reveals that recognizing the correctness of a proposed solution isn't a guarantee, as including incorrect solutions in the fine-tuning dataset could jeopardize model performance. While we cannot guarantee perfect accuracy, we have developed approximate methods. To achieve our goal of verifying solution correctness, we extracted the source code of the proposed solutions and employed a combination of static and dynamic analysis techniques to verify their correctness, including
- 静态分析:我们通过解析器以及linter工具对所有的生成代码进行处理,并确保其语法正确性。在此过程中我们会发现并记录下各种类型的潜在问题包括但不限于语法错误、使用未初始化变量或者未能导入必要的函数等问题。
- 单元测试生成及执行:针对每一个出现的问题及其对应的解决方案我们都会指导模型自动生成相应的单元测试程序并在同一容器环境中同时运行这些测试程序以便及时捕获并修复可能出现的各类错误。
错误信息与自我优化过程:每当解决⽅案在某个步骤中失败时,在线程中自动向模型提⽰进行优化调整。这些提⽰内容包括完整的错误问题描述、出现偏差的解决方案以及解析器/linter/测试器(stdout、stderr及返回码)提供的详细反馈信息。每当单元测试执⾏出现故障后,在线模型能够修复现有代码缺陷以满足现有测试需求,并可重新配置单元测试以适应生成代码的变化。仅当所有验证环节都被成功通过后,相关对话记录才会被纳入最终训练数据集用于监督式微调(SFT)。值得注意的是,在线模型发现约20%初始解决方案存在明显缺陷但经过自我修正后得以改善的现象表明,在线学习机制对其运行反馈具有显著指导作用并有效提升了整体性能水平。
模型优化策略:经过多轮循环训练后,在每一轮中都会基于前一阶段的结果进行优化。每次训练都能带来性能上的提升,并为后续生成更高质量的合成数据奠定基础。通过持续迭代优化后,在生成高质量合成数据方面表现出明显优势。
2. 合成数据生成:编程语言翻译技术。我们注意到主流与不常用编程语言(如Python/C++与TypeScript/PHP)在性能上存在显著差异。这一现象并不令人意外,因为不常用语言往往拥有有限的训练数据集。为了缓解这一问题,我们采用了将常见语言的数据翻译成目标语言的方法(类似于Chen等人在推理背景下的做法)。具体实现过程中,在提示Llama 3后通过语法解析、编译和执行技术来确保生成代码的质量。图8展示了从Python到PHP的合成PHP代码示例。这种方法显著提升了不常用语言的表现(如MultiPL-E基准测试所验证)。
3.合成数据生成:回译法。为了提高特定编码能力(如文档编写、解释),当执行反馈无法有效评估质量时(例如信息量不足),我们采用了另一种替代方案来解决该问题。通过这种方法的应用,在预处理阶段我们成功生成了约120万个与代码解释、生成以及后续开发相关的合成对话数据集。具体而言,在我们的预训练语料库中包含多种语言编写的代码片段作为基础素材:

- ⽣成:引导Llama 3生成代表我们的目标能力的数据(例如,在代码块段落中添加注释和docstrings,并要求模型解析一段代码)。
- 回译:引导模型将生成的数据"回译"到原始代码(例如,在提示模型仅依据文档生成代码时或要求基于解释生成代码时)。
- 筛选:以原始代码为基准进行筛选(例如,在提示Llama 3评估回译后的代码对原始编码的真实保真度时),随后筛选基于SFT中拥有最高自洽分数的生成样本。
在拒绝抽样过程中的系统导向提示
在训练数据筛选过程中采用执行能力和模型作为判断标准来过滤掉部分数据
4.3.2 多语⾔能⼒
我们介绍了如何提升Llama 3在多种语言处理方面的能力,并着重于训练一个专门针对大规模多语言数据进行优化的专业模型。该模型经过精心设计与实践,在德语、法 language以及西班牙等主要语言领域展现了显著的优势与应用潜力。具体而言, 我们为每个目标语言构建了独立的数据集, 包括高质量的指令调整样本, 并通过系统性的实验验证其有效性与泛化能力. 这一努力旨在全面解决不同 language处理中的具体挑战, 进而显著提升模型的整体性能
我们的Llama 3预训练数据集呈现出显著的英语标记占比优势
我们收集的多语⾔SFT数据主要源自于以下几个来源:其中整体比例为2.4%由人类注释完成,约44.2%源自于其他NLP任务的数据集,在此基础上又进行了18.8%的拒绝采样工作,并最终获得了34.6%基于翻译的推理模型的数据支持。
- 人类注释:我们从语言学家和母语者那里收集高质量的手动注释数据集。这些注释主要由代表真实世界场景的开放提示组成。
- 来自其他NLP任务的数据:为了进一步增强模型性能,我们利用其他任务的多语言训练数据,并将其转换为对话格式以丰富数据多样性。具体而言,我们采用了exams-qa(Hardalov等人, 2020年)和Conic10k(Wu等人, 2023年)的数据集作为基础来源。此外, 我们还整合了GlobalVoices(Prokopidis等人, 2016年)和平行文本(如Wikimedia, 2012年)等资源以扩大数据覆盖范围. 在筛选低质量样本方面, 我们采用了基于LID的过滤方法并结合Blaser2.0(Seamless Communication等人, 2023年)技术以有效去除不符合标准的数据. 对于平行文本数据, 我们摒弃了直接使用双语对的传统做法, 而是借鉴Wei等人(2022a)提出的多语言模板方案. 这种创新性方法更好地模拟了实际翻译与语言学习场景中的真实对话过程.
- 拒绝抽样数据:在人类注释指导下的拒绝抽样过程中, 我们生成用于微调的高质量样本集. 相比英语数据处理流程中采用较少修改的做法, 我们的策略更具灵活性: 在后训练初期探索不同随机选择温度超参数范围(0.2−1)以促进多样化生成. 高温环境下, 多语言提示的回答可能具有创造性和启发性但也会带来不必要的或不够自然的代码转换风险. 到后训练后期阶段则采用恒定温度值(0.6)以平衡生成质量和自然度. 此外, 我们还特别设置了专业的系统提示来优化响应格式、结构及整体可读性.
在基于奖励模型的选择阶段之前,在线实施多语言特定验证步骤,并通过该验证过程来保证提示与响应之间的高语言匹配程度(例如,在罗马化的印地语提示下应避免使用梵蒂冈天城文书写成的回应)。
- 翻译数据:我们倾向于不使用机器翻译的数据来进行模型微调,并特别注意防止可能出现的翻译偏差(Bizzoni等人, 2020年;Muennighoff等人, 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)。这种能力不仅有助于提升其处理复杂问题的能力
在训练阶段与推理阶段中模型所采用的微调策略存在显著差异。当模型进入推理阶段时,在处理具体任务时会与其使用者(如人类或其它系统)进行交互作用,并通过接受外部反馈机制来优化其推理能力。为了保证这一过程与实际应用场景的高度一致,在设计和实现过程中必须特别关注性能优化的关键环节以确保整体效能的最大化
为了应对这些挑战,我们应⽤了以下⽅法:
-
针对提示不足的问题:我们收集了相关背景知识中的预训练数据集,并将其转化为问答形式进行监督学习Fine-tuning(Didolkar等人, 2024)。随后我们识别出模型在某些数学技能上表现欠佳后主动寻求人类专家的帮助以改进这些能力。
-
利用Llama 3生成逐步解决方案: 对于每一个输入指令系统自动生成不同的解决方案方案数量因人而异(Li等人, 2024a)。接着通过参考标准答案筛选出符合预期的答案样本以提高训练效果随后我们又对这些候选方案进行了独立性检查以确认它们是否适用于特定类型的问题从而提升了整体质量
-
筛选出无效推理环节:我们利用训练结果以及逐步奖励模型(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模型上下文长度的提升工作。具体而言,在这一过程中,
我们将模型的上下文长度从8千增加到12.8千(参考第3.4节中的详细说明)。
同样地,在微调阶段,
我们需要谨慎地调整配置参数
以便能够平衡处理短文本与长文本的能力。
通过结合SFT与合成数据生成
- 问答 :我们从预训练混合中精⼼策划⼀组⻓⽂档。我们将这些⽂档分割成8K令牌的块,并提⽰早期版本的Llama 3模型基于随机选择的块⽣成QA对。在训练期间,整个⽂档被⽤作上下⽂。
- 摘要 :我们通过⾸先使⽤我们最强的Llama 3; 8K上下⽂模型对8K输⼊⻓度的块进⾏摘要,然后对摘要进⾏摘要,来应⽤⻓⽂本环境⽂档的分层摘要。在训练期间,我们提供完整⽂档,并提⽰模型在保留所有重要细节的同时摘要⽂档。我们还基于⽂档摘要⽣成QA对,并⽤需要对整个⻓⽂档有全局理解的问题提⽰模型。
- 长文本环境代码推理 :我们解析Python⽂件以识别import语句并确定它们的依赖关系。从这⾥,我们选择最常依赖的⽂件,特别是⾄少被其他五个⽂件引⽤的⽂件。我们从存储库中移除其中⼀个关键⽂件,并提⽰模型识别依赖于缺失⽂件的⽂件,并⽣成必要的缺失代码。 我们根据序列⻓度(16K、32K、64K和128K)进⼀步对这些合成⽣成的样本进⾏分类,以便更细粒度地针对输⼊⻓度进⾏定位。通过仔细的消融,我们观察到将0.1%的合成⽣成的⻓⽂本环境数据与原始短⽂本环境数据混合使⽤,可以在短⽂本环境和⻓⽂本环境基准测试中优化性能。 DPO。我们观察到,只要SFT模型适合⻓⽂本环境任务,仅使⽤短⽂本环境训练数据在DPO中就不会对⻓⽂本环境性能产⽣负⾯影响。我们怀疑这是由于我们的DPO配⽅⽐SFT有更少的优化步骤。鉴于这⼀发现,我们在⻓⽂本环境SFT检查点之上保持标准的短⽂本环境DPO配⽅。
4.3.5 ⼯具使用
通过大型语⾔模型(LLMs)被赋予使用⼯具的能力(Nakano等⼈، 2021؛Thoppilan等⼈, 2022;Parisi等⼈, 2022;Gao等⾦, 2023;Mialon等⾦, 2023a;Schick等人, ̄̄̄̄̄̄̄̄̄̄̄̄ 年),它们能够解决的任务范围得到了显著提升。我们采用Llama 3进行工具交互:
- 搜索引擎系统 。经过专门设计与优化的系统架构支持基于Brave Search7的知识型搜索引擎功能。
- Python解释器模块 。通过动态生成与执行Python代码的方式实现复杂的计算功能。
- 数学计算引擎部分 。该引擎能够利用Wolfram Alpha API8提升解决数学与科学问题的能力。
- 借助Wolfram Alpha API8的强大功能实现精准求解各类复杂数据处理任务。
我们进一步增强了Llama 3在零样本工具使用方面的能力,在相关上下文中可能引入了新增的潜在工具定义和未知或新增的工具查询方式,并通过模型训练生成相应的工具调用指令。
我们实现了核心工具,并将其构建为基于不同方法的Python对象。零样本工具可被视为通过描述及其示例文档(即功能说明)实现的功能模块。模型仅需通过提供函数签名和 accompanying documentation strings 来生成适当的调用上下文。此外,在转换过程中,默认采用JSON格式表示功能定义及执行流程。所有工具执行均通过内置Python解释器完成。相应的Python解释器必须在Llama 3系统提示界面中启用相关功能。
数据收集方面,则采用人类注释和偏好作为指导原则来教示Llama 3工具的使用方式。相较于传统的后训练管道方法而言,则存在两个显著的区别:其一是在模型构建阶段采用了不同的优化策略;另一个则体现在参数更新机制的具体实现上。
对于工具而言,在消息级别进行注释以收集细致的反馈是一个常见做法(例如,在使用调用工具和推理工具时会遇到这种情况)。我们通过在相同上下文中不同助手消息之间的比较来实现这一目标:如果两个助手消息涉及的主要内容一致,则由注释者指定偏好;若两者均存在关键问题,则需由注释者选择修改其中一条以供后续处理。被选择或修改的消息随后将被加入当前上下文信息中继续对话交流。这一机制不仅有助于提升工具调用能力以及对其输出结果进行逻辑推理的能力,并且也为参与者的操作提供了有效的反馈渠道;值得注意的是,在此过程中参与者无法对工具有效性的输出进行排序或直接修改其内容
我们未执行拒绝抽样策略,在我们的工具基准测试中并未显示出明显的提升效果。为了加快注释速度,在先前的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执⾏涉及⽂件上传的任务的⽰例。 在对这个合成数据进⾏微调后,我们在多种具有挑战性的场景中收集⼈类注释,包括多轮交互、超过三个步骤的⼯具使⽤,以及⼯具调⽤没有得到满意答案的情况。我们⽤不同的系统提⽰增强我们的合 成数据,以教会模型仅在激活时使⽤⼯具。为了训练模型避免对简单查询调⽤⼯具,我们还添加了来⾃简单数学或问答数据集(Berant等⼈,2013;Koncel-Kedziorski等⼈,2016;Joshi等⼈,2017;Amini等⼈,2019)的查询及其响应,但没有使⽤⼯具,但在系统提⽰中激活了⼯具。

零射工具利用数据集进行学习与应用训练。我们采用丰富合成的数据集,在函数定义、交互查询及实际应用场景中进行优化后,在Llama 3系统中实现了零样本工具应用能力的显著提升(即支持功能自动化)。随后我们在一系列未知领域工具的基础上进行了性能评估以验证模型效果
• 单一、嵌套及并行函数调用:其形式可以是单一的、嵌套式地进行的;也就是说,在一个函数内部直接作为另一个函数的参数传递;或者也可以是并行的形式;即模型会返回一组独立运行的功能调用(Mekala等人, 2024)。为了提高合成能力, 我们主要依赖于Stack挖掘(Kocetkov等人, 2022)的方法。具体而言, 我们会提取所有功能及其定义, 进行清洗与筛选处理, 比如去除文档缺失字符串或无法执行的功能;然后利用Llama 3技术生成与功能相关联的语言查询指令。
• 多轮交互中生成合成数据集:我们采用多个代理模型来生成领域相关查询与响应, 同时确保所生成的数据涵盖广泛的领域以及真实的API接口。这些代理模型都是基于不同设计风格改造后的Llama 3变体, 根据其角色属性进行协作操作, 并以逐步推进的方式完成任务。
4.3.6 事实性
在大型语言模型中识别幻觉现象仍是一个主要挑战。尽管大型语言模型往往表现出过度自信,在它们知之甚少的领域也是如此。然而尽管存在这些问题,“它们通常被用作知识存储工具”,这可能带来如错误信息传播等潜在风险。“但我们在此采取了一种基于幻觉的方法”。
我们遵循的原则是后训练应当使模型达到能够理解自身已知领域的能力,并非通过单纯地增加知识(Gekhman等人, 2024;Mielke等人, 2020)。我们的主要方法涉及生成特定的数据集以帮助模型聚焦于预训练数据中存在的一部分事实信息。为此我们开发了一种利用Llama 3强大上下文处理能力的知识探测技术这一过程包括以下几个步骤:
- 基于预训练数据集提取相关数据片段
- 利用提示功能(如LLaMA-7LLM)生成与这些片段及其背景信息相关的事实性问题
- 收集LLaMA-7LLM系统返回的相关回答样本
- 将原始上下文内容作为基准,在LLaMA-7LLM系统上对生成的回答内容进行正确性评估
- 利用LLaMA-7LLM系统对生成的回答内容进行信息量评估
- 对于那些在生成过程中始终提供丰富信息但存在错误的回答
我们采用来自知识探测生成的数据来指导模型仅限于回答已知问题,并拒绝处理不确定性问题。此外,在预训练数据中可能存在事实不一致或错误的情况。因此,我们进一步收集了少量经过标记的事实性数据。这些数据涉及包含事实矛盾或错误陈述的关键议题。
4.3.7 可引导性
可引导性是指将模型的行为模式及其导向结果引导向符合开发者与用户规范的能力。作为通用基础模型的Llama 3,在实现不同下游应用场景方面具有显著优势。为此我们重点通过系统提示与自然语言指令来提升其可引导性水平具体体现在回答长度格式语气以及角色与个性特征等多个维度上
数据收集 。我们邀请注释者为Llama 3开发多样化的指导方针,并在通用英语类别中收集可引导性偏好样本。随后,在与模型的对话中观察注释者的执行情况。
我们在下一部分展示了以提升可引导性为目的的一个具体实施案例:
你是一个既热情又开朗的AI助手,在这里为你提供饮食规划服务。你的客户是一位忙碌的家庭主妇/父亲/母亲或其他主要照顾者(MFO),这个家庭由2位成年人、3位青少年和2位学龄前儿童组成。每隔一天至多三天会根据剩余的食物安排新的菜单(如果无特殊说明,默认三天)。每个菜单将包含早餐、午餐、晚餐及小吃安排,并特别关注用户的饮食偏好:不喜欢某样食物时,则可提供替代选择。如果用餐时间有特别需求,请告知系统以做出相应安排:周末餐点会更加丰富美味;而工作日餐食选择则应便捷高效——请确认是否接受当前计划或需做调整?另外,请确保为每位成员准备必需品如咖啡或能量饮料等饮品,并考虑预算情况——特别情况下除外
建模 。当我们收集偏好数据时,在奖励建模、拒绝抽样以及SFT(策略前馈训练)与DPO(动态程序优化)过程中应用这些数据后,在提升Llama 3模型的可控性方面取得了显著效果。
