AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


微软AgentInstruct:用智能体流程合成数据重塑语言模型技能学习
发布日期:2024-07-23 07:31:30 浏览次数: 1825


合成数据对于加速大型和小型语言模型的发展越来越重要。尽管有几个成功的用例,研究人员也提出了关于模型崩溃和模仿其他模型的缺点的担忧。这种差异可以归因于合成数据在质量和多样性上的差异。有效使用合成数据通常需要大量的人力在策划数据上。我们专注于使用合成数据进行后训练,特别是通过强大的模型创建数据,以教授另一个模型新技能或行为,我们称这种设置为生成性教学。我们介绍了AgentInstruct,这是一个可扩展的智能体框架,用于自动创建大量多样化和高质量的合成数据。AgentInstruct可以创建提示和回应,仅使用像文本文档和代码文件这样的原始数据源作为种子。我们通过创建2500万对后训练数据集来展示AgentInstruct的效用,以教授语言模型不同的技能,例如文本编辑、创意写作、工具使用、编码、阅读理解等。该数据集可以用于任何基础模型的指令调整。我们使用数据对Mistral-7b进行后训练。将结果模型(Orca-3)与使用相同基础模型的Mistral-7b-Instruct进行比较时,我们观察到在许多基准测试中的显著改进。例如,在AGIEval上有40%的改进,在MMLU上有19%的改进,在GSM8K上有54%的改进,在BBH上有38%的改进,在AlpacaEval上有45%的改进。此外,它在多个基准测试中一致优于其他模型,如LLAMA-8B-instruct和GPT-3.5-turbo。

我们翻译解读最新论文:向具有智能体流程的生成性教学迈进,文末有论文链接。

作者:张长旺,图源:旺知识

第1节 引言:

合成数据加速了LLMs的发展:合成数据在大型语言模型(LLMs)训练中的兴起是去年的一个重要发展。合成数据被用来显著加速模型训练的进展(特别是对于小型语言模型),在训练的所有阶段,从预训练(例如,[1]),到指令调整(例如,[21, 36])和RLHF(例如,[12, 28])。

生成高质量合成数据是困难的:另一方面,研究表明,使用其他模型生成的合成数据进行预训练可能会导致模型崩溃[29],导致模型逐渐退化。使用合成数据进行后训练也有类似的争论,这可能相当于一个模仿过程,可能会教会训练模型只选择风格特征而不是真正的能力[8]。这种差异可以通过观察到创建高质量和多样化的合成数据是困难的[17]来解释。成功使用合成数据涉及大量的人力在策划和过滤数据以确保高质量。如果我们关注后训练合成数据,我们将看到最广泛使用的方法包括从一组提示开始,并使用像GPT-4[22]这样的强大模型来生成这些提示的回应[24]或提示的扩展集[36]。这种配方通过从教师模型中引出解释或逐步指导[20]或使用更复杂的提示技术来引出更高质量的答案[18]进一步改进。

合成数据遇见智能体:我们去年见证的另一个主要发展是智能体(特别是多智能体)工作流程的兴起[33, 13]。智能体工作流程可以通过使用具有反思和迭代的流程生成超越底层LLMs能力的高质量数据,智能体可以回顾解决方案,生成批评并改进解决方案。它们还可以使用工具(例如搜索API、计算器、代码解释器)来解决LLMs的限制。多智能体工作流程带来了额外的好处,例如模拟场景,我们可以生成新的提示和相应的回应。它们还使数据生成工作流程自动化,减少或消除了某些任务上人类干预的需要。

图1:使用AgentInstruct数据对Mistral-7B进行后训练的效果

生成性教学和Orca AgentInstruct:为后训练生成合成数据通常依赖于现有的提示集,这些提示集被用作生成更多指令的种子。在这项工作中,我们将问题设置概括为更广泛的目标,即生成大量多样化、具有挑战性和高质量的数据,以教授AI模型特定技能,我们称这种设置为生成性教学。AgentInstruct是生成性教学的智能体解决方案。AgentInstruct专注于创建演示和反馈数据,并且只需要原始文档作为输入。当通用数据用作种子时,AgentInstruct可以用来教授LLM一般能力(例如数学、推理、RAG等)。特定领域的数据(例如游戏、金融)也可以用作种子,以提高模型在某个专业领域的性能。

AgentInstruct 能够创建:

  1. 高质量数据:使用像 GPT-4 这样的强大模型,结合搜索和代码解释器等工具。

  2. 多样化数据:AgentInstruct 生成提示和回应。它使用大量智能体(配备强大的 LLM、工具和反思流程)以及超过 100 个子类别的分类法来创造多样化和高质量的提示和回应。

  3. 大量数据:AgentInstruct 可以自动运行,并可以应用流程进行验证和数据筛选。它不需要种子提示,并使用原始文档作为种子。

使用原始数据(非结构化文本文档或源代码)作为种子有两个好处。首先,这些数据大量存在,使得使用 AgentInstruct 创造大量多样化的数据成为可能。此外,使用原始数据作为种子,从而避免使用现有的提示,无论是直接使用还是在释义后使用,可以促进学习更一般的能力,而不是特定于基准测试的能力。

我们通过创建一个全面的合成后训练数据集,包含 2500 万个提示和回应对,来展示 AgentInstruct 的效用。该数据集涵盖了包括创意写作、推理、数学、RAG、工具使用等在内的广泛技能。为了评估数据的价值,我们使用它来微调 Mistral-7B [11] 模型。微调后的 Mistral 模型(Orca-3)在其他使用相同基础模型的指令调整模型上显示出显著的改进。例如,与 Mistral-Instruct-7B 相比,它在 AGIEval 上提高了 40%,在 MMLU 上提高了 19%,在 GSM8K 上提高了 54%,在 BBH 上提高了 38%,在 AlpacaEval 上提高了 45%,并且在多个摘要基准测试中的幻觉减少了 31.34%。此外,它在多个基准测试中一致优于其他模型,如 LLAMA-8B-instruct 和 GPT-3.5。

请注意,我们展示 AgentInstruct 实用性的是通过创建一个通用的后训练合成数据集,但我们相信智能体可以实现创建合成数据生成即服务(Synthetic-Data-Generation-As-AService),我们从原材料(例如,用于通用模型训练的网络数据或用于专业模型的特定领域数据)开始,我们生成数据用于后训练和微调,从而实现任何基础 LLM 的持续学习和改进。此外,我们相信 AgentInstruct 方法可以用于更大、更强大的模型的自我改进,因为:(1) 生成新提示的能力;(2) 生成回应的能力,这些回应的质量超过了智能体流程中使用的 LLM 的质量(因为使用了工具、反思等)。

第2节 生成性教学:AgentInstruct

为监督式微调和指令调整创建合成数据集在过去一年中取得了显著进展。这些数据集的质量一直在稳步提高。通过使用功能强大的前沿模型(或基于这些模型的智能体流程)生成回应,可以实现高质量。然而,在创建合成数据时,除了质量之外,我们还需要考虑几个其他基本问题:

  1. 我们如何创建大量数据?

  2. 我们如何确保生成的数据是多样化的?

  3. 我们如何生成复杂或微妙的数据点?

在AgentInstruct方法论中,我们概述了一个结构化的方法来应对这些挑战,如下所示:

图2AgentInstruct方法论的简洁总结

  1. 收集原始种子的集合(例如教科书章节、网络文章、代码片段)。

  2. 对于集合中的每个种子执行以下操作:

  3. 在一个或多个内容转换智能体(内容转换流程)的帮助下转换种子。

  4. 将其路由通过一系列指令创建智能体以创建多样化的指令集(种子指令创建流程)。

  5. 使用另一组改进智能体以迭代方式改进种子指令的复杂性和质量(改进流程)。

  6. 结束循环。

我们使用智能体流程自动化生成过程,并利用原始文章作为种子以促进多样性,并确保在不同迭代中生成的问题(图1中的第2行)是不同的并且具有广泛的覆盖范围。这使我们能够大规模地创建数据(得益于智能体流程的自动化),具有高多样性(基于广泛和多样化的种子),并且具有不同的复杂性(得益于智能体流程支持的迭代和改进模式)。AgentInstruct定义了三种不同的流程:

内容转换流程将原始种子转换为中间表示,简化了针对特定目标的指令创建。它包括:

图3提供了不同组智能体所扮演角色的主题概述。内容转换流程将种子转换为中间表示,使其更容易创建高质量和多样化的数据。种子指令生成流程根据分类法创建目标任务的实例。改进流程通过从这些初始数据点开始并探索邻近区域来进一步探索空间。期望通过选择一个随机种子,我们将能够覆盖整个数据点区域。

多个智能体参与,通常在生成高质量数据中起到关键作用,并作为引入多样性的额外手段。

种子指令生成流程包括多个智能体,它以内容转换流程转换后的种子作为输入,并生成一组多样化的指令。种子指令流程的唯一目标是引入多样性,通常依赖于一个预定义的、但可扩展的分类法。

指令改进流程以种子指令流程的指令作为输入,并迭代地增强它们的复杂性和质量。为此,我们使用了建议者-编辑者智能体[19]的概念。建议者智能体最初提出各种方法来增加初始指令的复杂性(使它们更加复杂、无法解决或棘手),然后编辑者智能体根据这些建议修改指令。

每个流程由多个智能体组成。我们对智能体有一个通用定义,智能体由LLM驱动,并且可以选择使用工具,如搜索API、代码解释器或计算器。每个智能体都有一个特定角色和一组作为底层LLM系统消息指定的指令。

我们为17种不同技能实现了这些流程,每种技能都有多个子类别。技能包括阅读理解、问答、编码、检索增强生成、创意写作、工具/API使用和Web控制。完整列表见表1。

我们通过为以下三种技能生成数据的案例研究来解释工作流程:

阅读理解:理解、处理和解释书面文本的能力。这是学习和包括解码、流利度和词汇知识的必要技能。阅读理解测试通常提供不同长度和主题的文本段落,然后是评估读者理解的问题。

开放领域问答:开放领域问答涉及在广泛主题上生成回应,不受特定领域限制。

文本修改:修改现有文本以提高其质量或适应特定上下文或受众的过程。这是内容创作和编辑中的常见任务。

表1: 我们为以下17种能力实现了AgentInstruct流程的列表。

2.1 AgentInstruct 阅读理解流程

阅读理解是一项关键技能,涉及处理和理解文本,这是学习和包括解码、流利度和词汇知识所必需的。

阅读理解问题的范围从要求明确信息(字面理解)到要求推理、理解上下文中的词汇、分析文本结构和论证、批判性地评估内容以及从不同部分或多个文本中综合信息。阅读理解是一个非常重要的能力,可以启用像问答、搜索、基于推理等场景。

内容转换流程: 网络爬虫包括广泛的人类生成文本集合,这为生成阅读理解材料提供了潜力。然而,这些来源本质上并没有结构化,以便于教授阅读理解技能。因此,它们不支持一致地生成全面阅读理解评估所需的各种问题类型。例如,LSAT逻辑推理测试包括假设、加强/削弱、缺陷和推理等专业问题类别。制作这类问题需要具有特定风格和逻辑框架的段落。内容转换流程的目标是将任意文章转换为精心制作的文本,这有助于制定各种阅读理解问题类型。

我们当前的阅读理解流程包括九个内容转换智能体,用于生成论证段落、辩论和对话、长段落、会议记录、诗歌、讽刺内容等。附录A中提供了详细描述。给定一个种子文章,流程将随机选择一个内容转换智能体来评估种子文章,并尝试生成文本段落。以下提供了论证段落生成器的示例。

示例:内容转换流程

随机种子:尿酸是一种由嘌呤(一种饮食蛋白)分解自然产生的物质。当它在体内过量时,由这些物质组成的晶体就会形成。这些晶体主要沉积在身体的各个部位,主要是关节和肾脏,引起疼痛和其他不适。体内尿酸的缺乏或过量是由某些疾病(如白血病、肥胖、肾脏疾病和贫血)和与生活方式相关的因素(例如饮酒和加工食品的消费)引起的。内容:

  • 嘌呤来自哪里?

  • 尿酸在哪里找到?

  • 高尿酸是什么?

  • 高尿酸会导致什么?

  • 低尿酸是什么?

  • 测试:如何知道尿酸水平?

嘌呤来自哪里?嘌呤是在消化过程中分解氨基酸时产生并释放到血液中的。因此,它是在体内自然产生的。...(省略)

转换后的种子(论证段落生成器):最近研究表明,血液中尿酸水平高,称为高尿酸血症,可能会增加心血管疾病的风险。尿酸是嘌呤代谢的副产品,虽然它在体内自然产生,但过量可能导致健康并发症。高尿酸血症通常定义为女性超过6 mg/dL和男性超过7 mg/dL的水平。这种情况可能是由于尿酸产生增加或通过尿液排泄不足造成的。导致尿酸高的因素包括富含嘌呤的饮食,如红肉和海鲜,以及生活方式选择,如饮酒和缺乏运动。相反,低水平的尿酸,或低尿酸血症,较少见,通常不呈现症状。然而,它们可能表明潜在的肾脏或肝脏问题。诊断这两种情况需要实验室血液和尿液测试。重要的是要注意,虽然高尿酸水平与心血管疾病风险增加有关,但因果关系尚未最终确定。

种子指令生成流程 我们目前编制了一个包含43种阅读理解问题类型的集合。列表包括字面理解问题、批判性理解问题、评价性理解问题、推理、确定假设、确定加强/削弱论点的信息、安排事件等。

示例:种子指令

如果以下哪一项是真的,最能加强高尿酸水平增加心血管疾病风险的论点?(A) 一些高尿酸血症患者并未发展成心血管疾病。(B) 体育活动对血液中的尿酸水平没有显著影响。(C) 膳食补充剂已被证明可以降低血液中的尿酸水平。(D) 在心血管疾病患者中发现大量患者的尿酸水平超过了高尿酸血症的阈值定义。(E) 有心血管疾病家族史的个体更可能有高尿酸水平。

指令改进流程 改进流程包含多个建议者-编辑者智能体,它们将检查每对(文章,问题)并创建更多这样的组合,以达到以下目标:(1) 修改文章使问题无法回答,(2) 修改文章以改变答案,如果可能的话,朝相反方向改变,或者 (3) 修改问题或答案选项(如果适用),使它们变得复杂。

以下是一个示例,其中建议者智能体试图增加一个难以排除的干扰项来混淆考生。

示例:改进流程

建议者:

  • 建议1:引入一个假想的研究或发现,可能会加强尿酸水平与心血管疾病之间关系的论点,要求考生推断其对尿酸水平和心血管疾病关系的影响。

  • 建议2:通过提出尿酸血症的遗传倾向及其与心血管事件增加的相关性,增加一层复杂性,这将要求考生考虑遗传和生理因素。

  • 建议3:包括一个看似加强论点的干扰选项,但仔细检查后,它并不直接涉及尿酸水平与心血管疾病之间的因果关系,从而测试考生区分相关和不相关信息的能力。

编辑者:

  • 修改1,2(省略以简洁)

  • 修改3:如果以下哪一项是真的,最能加强高尿酸水平增加心血管疾病风险的论点?(A) 一些高尿酸血症患者并未发展成心血管疾病。(B) 体育活动对血液中的尿酸水平没有显著影响。(C) 安慰剂对照试验表明,服用降低尿酸药物的个体与安慰剂组相比,心血管疾病发病率没有降低。(D) 在心血管疾病患者中发现大量患者的尿酸水平超过了高尿酸血症的阈值定义。(E) 横断面研究发现高尿酸水平与心血管疾病的其他风险因素(如高血压和糖尿病)相关,但未建立直接的因果联系。

2.2 AgentInstruct 流程用于文本修改

文本修改是编辑和改进书面内容以提高其质量和效果或改变其属性的过程。这包括更正拼写和语法、澄清观点、重新组织内容以获得更好的流程、调整语气、确保风格一致性、事实检查、删除冗余、格式化、开发内容以及适应特定受众。对于帮助内容写作的语言模型来说,这是一个有用的技能。虽然可以引入几个内容转换智能体来有意地修改文本,如前所述,但这里我们重点展示指令是如何创建和改进的。

种子指令生成流程 我们目前编制了一个包含18种文本修改任务的集合,包括释义、扩展、简化、编辑或删除内容、风格转换等。完整的列表在附录A中。

我们为每种任务类型定义了一个智能体。每个智能体以一段文本作为输入,并创建几个与相关类型的文本修改任务。这里我们提供了一个由释义智能体创建的任务的示例输入。

示例:种子指令

随机种子:2017年4月6日至8日,美国爱荷华州爱荷华大学。摘要截止日期为2016年12月1日。金融化难以逃避。近年来,金融话语、市场、参与者和机构日益增长的社会影响和相互联系在金融化的广泛概念下被理解。Natascha van der Zwan确定了三个不同的研究流派,它们将金融化作为研究对象:1)作为积累制度,2)金融市场和工具对非金融公司以及银行和金融行业的影响,3)作为一种风险承担、自我管理和自我实现的话语,它正在将人们转变为投资主体。然而,一些人类学怀疑论者认为,金融化的历史比金融化文献至今所认识到的要长得多。例如,在创造等级制度的漫长人类历史背景下,金融化可能只是一种为旧目的服务的新技术。...(省略)...金融产品供应链连接了全球不同地方和政治项目。这些金融工具如何转变社会生活?摘要截止日期为2016年12月1日。1. 访问americananthro.org并登录。如果您没有登录ID和密码,请创建一个(您不必加入美国人类学协会)。2. 一旦您登录,查看左列,点击会议注册。3. 点击SEA 2017年年会下的注册,然后按照在线提示注册会议(如果我们不接受您的摘要,您决定不参加,您可以要求退还您的注册费,我们将很乐意这样做)。4. 一旦您注册,AAA将自动发送一封电子邮件邀请您提交摘要。点击链接并按照说明操作。任务:用更随意的语调重写事件细节(日期、地点、摘要截止日期)。

给定一个随机种子,种子指令创建流程随机选择18个智能体中的一个,并使用它来获得种子(文本,文本修改指令)对。

指令改进流程 改进流程只由一对建议者-编辑者组成。建议者-编辑者二人组在输入文本和任务修改指令的基础上增加生成指令的复杂性。这里我们展示了建议者-编辑者对提出的三个建议和编辑。

示例:改进流程建议

建议1:融入一个虚构的叙事。使用口语风格和俚语,包含幽默元素。

建议2:将事件细节翻译成诗歌格式。在保持准确信息的同时使用押韵对句,并确保语气保持轻松和吸引人。

建议3:将事件细节构建为社交媒体帖子。使用网络俚语和表情符号。保持消息简洁并在280个字符以内。

修改指令

指令1:用随意和俚语的语言重写事件细节(日期、地点、摘要截止日期),同时融入一个仍然传达必要信息的虚构叙事,就像你在给朋友讲一个有趣的故事一样。

指令2:将事件细节(日期、地点、摘要截止日期)转换为轻松的诗歌,用押韵对句确保以诗歌形式准确传达基本信息。

指令3:制作一个社交媒体帖子,包括事件细节(日期、地点、摘要截止日期),使用网络俚语、表情符号和随意的语调,同时保持消息简洁并在280个字符以内。

2.3 AgentInstruct 流程用于工具使用

LLMs的工具使用或API使用任务涉及使模型能够通过API与外部工具或服务进行交互。这种能力允许AI系统扩展其功能,访问外部数据,并执行超出其原生能力范围的操作。

内容转换流程 我们使用源代码片段或API描述[26]作为随机种子。如果使用源代码片段作为种子,内容转换智能体会用来从代码片段综合API描述。内容转换流程的目标是从随机种子综合API列表。API列表是通过以下方式创建的:(1) 使用API检索智能体迭代搜索类似代码以扩展API列表,或 (2) 智能体使用LLM假设库中的其他API。

以下图表提供了库重建场景的示例。

示例:内容转换流程 [库重建]

种子指令创建流程 种子指令创建流程使用API列表,并使用多种智能体创建以下类型的任务:

  1. 需要使用单个API的任务:(a) 输入提供所有必需参数的任务。(b) 输入包含多余参数的任务。(c) 输入缺少一些必需参数的任务。

  2. 需要使用多个API的任务:(a) 输入提供所有必需参数的任务。(b) 输入缺少一些必需参数的任务。

  3. 需要单个API但未列在提供的API列表中的任务。

  4. 需要多个API但缺少提供列表中一些基本API的任务。

改进流程 改进流程的目标是增加任务的复杂性,例如,查看任务和对话,并建议改进以增加解决任务所需的步骤数。

以下图表提供了由AgentInstruct流程创建的多轮对话示例。

示例:AgentInstruct创建的指令数据

系统消息:作为AI助手,您的角色是协助用户实现他们期望的结果。您有能力使用各种API,在过程的每个步骤中,您需要生成一个markdown输出。在任何给定时刻,您有两个选择进行操作:选择1:启动API调用 如果您选择调用API,您必须生成一个包括"name"和调用所需的"parameters"的markdown。创建响应后,您必须等待系统使用提供的参数执行API并返回结果给您。您输出的markdown应遵循此结构:

ACTION_TYPE : API_CALL ACTION: name(parameter_name=value, another_parameter_name=value, ....)

选择2:结束过程 有时您可能决定结束过程,因为a) 您已成功获得答案 b) 您确定适当的API不可用。c) 您发现用户没有为某些必需参数提供值。

如果您成功获得答案,请使用FINAL_ANSWER作为动作名称,只有一个参数是最终答案。如果您因其他原因决定停止,请使用FAILED作为动作,一个参数描述您决定停止的原因。总的来说,您应该遵循此结构:

ACTION_TYPE : STOP ACTION: [ACTION_NAME]([VALUE])

以下是您可以使用的API列表:

[来自库构建示例的API,包括种子和生成的API]

用户:我想为下周开始一个新的饮食计划。我的目标是每天摄入大约1500卡路里,我更喜欢素食餐。我每天吃三餐。你能为我创建一个饮食计划吗?此外,我想每天跟踪我吃的东西并获得一些新的食品建议。在一周结束时,我想看看我的营养摘要。哦,我发现了一个很棒的藜麦沙拉食谱,我想添加到你的数据库中。我还注意到“Chana Masala”的卡路里计数似乎不对;应该更低。请从我的列表中删除“Butter Chicken”;我已经停止吃它了。

助理:为了协助您的请求,我将执行以下操作:1. 根据您的饮食偏好(素食)和卡路里目标(每天1500卡路里)为三餐创建饮食计划。2. 提供一种跟踪您每日餐食的方式。3. 为您提供新的食物建议。4. 在一周结束时生成营养摘要。5. 将藜麦沙拉食谱添加到数据库中。6. 更新“Chana Masala”的营养信息。7. 从数据库中删除“Butter Chicken”。

让我们从为您创建一个基于素食饮食偏好和每天1500卡路里目标的素食餐计划开始,每天三餐。

ACTION_TYPE : API_CALL ACTION: Create Meal Plan ( dietary_preferences = ["vegetarian"] , caloric_goal =1500, num_meals=3)

用户:...(省略)

助理:您的下周饮食计划已成功创建。以下是简要概述:

  • 第1天:早餐是带水果的燕麦粥和杏仁牛奶,午餐是鹰嘴豆沙拉和全麦面包,晚餐是混合蔬菜炒和糙米。

  • 第2天:....

接下来,让我们将藜麦沙拉食谱添加到数据库中。请提供藜麦沙拉的营养信息,以便我可以继续添加。至于更新“Chana Masala”和删除“Butter Chicken”,我需要它们的唯一标识符(food_id)来进行这些更改。如果您有这些标识符,请提供。如果没有,我可以搜索数据库以找到正确的标识符。您希望我搜索“Chana Masala”和“Butter Chicken”吗?

用户:...(省略)

3 Orca-3

3.1 数据集描述

我们为表1中描述的17种不同能力实现了AgentInstruct流程。

我们创建了大约220万个指令集合,旨在教授上述技能。我们使用了来自KnowledgePile[7]、AutoMathText[38]、openstax的一个子集以及一些遵循apache-2.0许可的源代码文件[4]的未结构化文本和代码文件。该数据集涵盖了表1中详细说明的各种技能。使用未结构化内容作为指令数据生成的种子具有几个优点。首先,这类数据的丰富性使我们能够生成大规模和多样化的指令数据。此外,它使我们能够避免使用任何特定基准测试的数据作为种子,因此专注于优化能力,而不是特定的基准测试。

除了这220万个指令外,我们还整合了大约380万个成对指令,这些指令来源于Orca-1[21]、Orca-2[18]、Orca-Math[19]和其他一些公开可用的来源,如[5, 37, 10, 30]。我们称这些数据为Orca-2.5数据集。

这些数据集的结合结果在大约2580万个成对指令中,所有这些指令都被纳入Orca-3的训练中。此外,我们还使用380万个指令(Orca-2.5数据集)训练了一个单独的模型,称为Orca-2.5,目的是比较和评估通过AgentInstruct策划的2200万个指令的影响。

3.2 训练细节

我们使用前面描述的2580万个成对指令来微调Mistral-7b-v0.1。我们选择这个模型是因为它的基线(未经指令调整)版本权重可以公开获取,且许可宽松,易于重新分发。我们将微调后的模型(Mistral-7b-v0.1在AgentInstruct数据集上微调)称为Orca-3。

数据集中的每一对都使用Mistral分词器进行分词处理,确保最大序列长度为8192,并进行打包。为了确保训练损失仅基于条件提示的响应进行计算,应用了标签掩蔽。权重衰减设置为0.1。

微调使用了19个NVIDIA A100节点,即152个NVIDIA A100 GPU,每个节点的批量大小为10。我们使用了AdamW优化器,初始学习率为8e-6,并采用了余弦学习率计划。我们还在最初的500步中使用了线性学习率预热。模型训练了三个周期,训练过程大约在200小时后结束。

4 评估结果

4.1 Orca-Bench

Orca-Bench数据集作为保留的测试集,包括使用AgentInstruct策划的17种技能中的每一种的100个样本,除了开放领域问答(ODQA)类别,我们创建了两个测试集。第一个子集称为ODQA,包括来自初始种子指令阶段的100个问题。第二个子集称为Complex ODQA,包括在改进阶段开发出的更复杂的问题。

我们使用Orca-Bench数据集评估了所有基线模型。这些模型相对于GPT-4在0到10的范围内进行评分。值得注意的是,Orca-Bench中的一些条目涉及多个交流。例如,让Orca-Bench中的多轮交互由序列(系统消息,user1,助手,user2,助手,...)表示,其中每个回合都是由GPT4(教师)精心制作的。对于每个useri输入,我们生成一个相应的学生响应,该响应基于教师建立的先前对话历史。然后我们将学生生成的响应与原始教师的响应进行评估,每个响应都按0到10的等级评分。为了计算学生的整体得分,我们将学生的个人得分相加,并将其与教师得分的总和相除。然后,将这个比率乘以10,以将学生的最终得分标准化到0到10的范围内。

AgentInstruct的目标是综合一个大而多样化的数据集合,难度各异。有效执行这一策略应该产生一个数据集,与GPT-4相比,基线模型如Orca-2.5、Mistral-Instruct-7b和ChatGPT的得分将大幅低于10,证明它们相对于GPT-4的劣势——GPT-4被指定为基准模型,得分为10。性能比较如图4所示,展示了基线模型与Orca-3之间的比较分析。该图显示了在后训练期间,通过AgentInstruct数据,在广泛的能力范围内的显著增强。

表2概括了所有评估维度的平均(宏观)得分。平均来看,包括每个训练周期后的orca-3,通过纳入AgentInstruct数据,与Orca 2.5基线相比性能提高了33.94%,与Mistral-Instruct-7B相比提高了14.92%。

4.2 基准测试结果

表3: Orca-3和其他基线模型在所有基准测试中的表现。注意:GPT-3.5-turbo在GSM8K的得分取自[1]。我们在(+x%)中显示了与Mistral-7B-Instruct相比的相对改进。

我们在以下基准测试中评估了Orca-3与5个基线模型的性能,包括Orca-2.5、Mistral-7B-Instruct-v0.3、LLAMA3-8B-Instruct、GPT-3.5-turbo和GPT-4:

AGIEval、MMLU、ARC、BBH、GPQA、DROP、GSM8K、FOFO、IFEval、MT-Bench、AlpacaEval、InFoBench、EQBench。

表3显示了Orca-3和其他基线模型在所有基准测试中的表现。请注意:GPT-3.5-turbo在GSM8K的得分取自[1]。我们在(+x%)中显示了与Mistral-7b-Instruct相比的相对改进。

  • AGIEval: AGIEval [39] 是一个以人为中心的基准测试,评估模型在与人类认知和问题解决相关的任务中的表现。它评估模型在回答SAT、LSAT和数学竞赛等人类中心化的标准化考试问题上的表现。

  • MMLU: 庞大多任务语言理解(MMLU) [9] 基准测试衡量模型的多任务理解能力。基准测试包括大约16000个多项选择题,涵盖57个学术科目,如数学、哲学、医学、心理学、计算机科学、法律等,测试模型的一般和专业知识。

  • ARC: AI2推理挑战(ARC) [2] 基准测试,由AllenAI开发,衡量语言模型的推理、常识知识和深度理解能力。测试集包含3548个多项选择题,分为两组:简单(2376)和挑战(1172)。

  • BBH: Big Bench Hard [31] 由Big-Bench基准测试中选出的23个任务组成,涵盖需要复杂、多步骤推理的广泛学术科目。

  • GPQA: 研究生级Google-proof问答(GPQA) [27] 是一个具有挑战性的基准测试,包含448个由领域专家(在他们领域攻读博士学位)创建的高质量和极其困难的多项选择题。

  • DROP: 段落上的离散推理(DROP) [6] 是一个阅读理解基准测试,要求模型解析问题中的引用并对其执行离散操作,如排序、计数、加法等。

  • GSM8K: 小学数学8K [3] 是一个包含高质量多样化小学数学文字问题的数据库。数据集的测试部分包含1320个问题,主要需要使用基本算术运算进行2到8步的顺序计算。

  • FoFo: 格式遵循(FoFo) [34] 是一个基准测试,评估模型遵循复杂、特定领域的格式的能力。基准测试测试了使用AI-Human协作创建的来自医疗保健、金融、营销等领域的多样化真实世界格式和指令的格式遵循。

  • IFEval: 指令遵循评估(IFEval) [40] 是一个基准测试,通过一组500个提示,涵盖25种“可验证指令”,衡量模型遵循自然语言指令的能力。

  • MT-Bench: MT-Bench [16] 基准测试专门设计用来评估聊天助手在多轮对话中的胜任能力,使用GPT-4作为评估者。

  • AlpacaEval: AlpacaEval [14] 是一个为基于聊天的语言模型设计的基准测试,用于评估它们在指令遵循任务的背景下的能力。它是一个单轮基准测试,包含805个代表Alpaca网络演示中用户交互的指令。

  • InFoBench: InFoBench [25] 基准测试使用一种称为分解要求遵循比率(DRFR)的新指标来评估模型的指令遵循能力。DRFR将复杂指令分解为更简单的标准,并有助于详细分析LLM对这些分解任务的遵守情况。基准测试有500个不同的指令和2250个分解问题,涵盖多个约束类别。

  • EQBench: 这个情感智能基准测试 [23] 评估语言模型的情感智能方面。它通过提供一段角色之间的对话,然后要求模型预测那些角色的情感状态的强度,来测试模型理解复杂情感和社会互动的能力。作者发现EQ-Bench和MMLU等全面多领域基准测试之间有很强的相关性(r=0.97)。

所有基线在每个基准测试上的结果都在表3中给出。Orca-3和其他基线的评估都是在零样本设置下进行的,除非文本中另有说明。

4.3 评估:阅读理解

阅读理解是LLMs的一个关键能力。对于小型语言模型(SLMs)来说,这一点尤其重要,因为它们更适合作为推理引擎而不是简单的检索系统。通过使用AgentInstruct进行有针对性的训练,我们观察到Mistral的阅读理解能力有了显著提高(见表??)—比Orca 2.5提高了18%,比Mistral-Instruct-7b提高了21%。此外,通过利用这种数据驱动的方法,我们将7B模型的性能提升到了与GPT-4在法学院入学考试(LSATs)的阅读理解部分相匹配的水平,这被认为对人类考生来说是很困难的。

4.4 评估:数学

通过解决数学问题可以有效地评估AI模型的推理能力。虽然SLMs在基础数学上表现出了相当大的改进,但它们在更复杂的高中和大学级数学上的表现通常会出现下滑。数学问题由开放领域问答和多项选择问题流程生成。通过AgentInstruct,我们设法提高了Mistral在各种难度范围内的熟练程度,从基础到大学级数学(见表5)。这导致了显著的性能提升,在各种流行的数学基准测试中,改进范围从44%到168%。

表4: 模型在基于阅读理解的子任务和基准测试上的表现。Orca-3结果旁边的数字(x%, y%)表示与Orca 2.5和Mistral-7B-Instruct相比的改进百分比。表5: 模型在数学基准测试上的表现分数。注意:GPT-3.5-turbo在GSM8K的准确度得分取自Phi3论文[1]。Orca-3结果旁边的数字(x%, y%)表示与Orca 2.5和Mistral-7B-Instruct相比的改进百分比。

强调的是,生成性教学的目标是教授技能,而不是生成满足特定基准测试的数据。AgentInstruct在多种数学数据集上的显著增强证明了其在生成性教学中的有效性。

4.5 评估:格式遵循

遵循格式指南对于语言模型在现实世界情境中的应用至关重要。在所有AgentInstruct流程中,我们通过智能体合成特定场景的多个格式指南,确保教授格式遵循。通过这样做,我们显著提高了(11.5%)Mistral遵循格式的能力,甚至超过了Gemini Pro的能力。

表6: Orca-3-7B模型和其他开源及闭源基线在FoFo基准测试上的表现。Orca-3结果旁边的数字(x%, y%)表示与Orca 2.5和Mistral-7B-Instruct相比的改进百分比。注意:Gemini Pro的分数取自原始论文[34]。

4.6 评估:抽象总结

总结是语言模型的重要能力,许多模型在高质量总结性能上取得了成功,但在幻觉方面却存在挑战。我们使用两个关键指标评估总结能力:幻觉和质量。为此,我们使用GPT4作为我们的评估者。这些评估中使用的提示可以在附录B中找到。我们使用以下基准测试来评估总结能力:

  • ACI-Bench: 环境临床智能基准测试(ACI-Bench) [32] 是为基准测试自动从医生-患者对话中生成报告而设计的。测试集包含120个数据点。

  • InstruSum: 一个评估LLMs生成指令可控总结能力的数据集[15]。它包含100个数据点。

  • Orca-Sum: 一个新创建的基准测试,用于评估LLMs遵循总结和基础数据转换指令的能力。为了构建这个测试集,我们从Hugging Face收集了45个总结数据集,涵盖新闻、对话、科学、健康、社交、电子邮件、代码等多个领域,总共458个数据点。我们随机收集了多达1000个数据点,然后仔细去重以避免与训练集重叠。然后我们使用GPT-4为每个数据集生成了40个提示,每个数据点随机采样一个。提示是数据集特定的,侧重于总结、基础和数据转换。例如,一个提示可能要求模型从科学论文生成TikTok视频或从维基百科页面生成法律合同。这使我们不仅能够衡量响应的质量,还能够在具有挑战性的场景中衡量幻觉,因为模型被迫在格式和领域之间移动。

结果在表7中呈现。通过AgentInstruct方法,我们成功实现了幻觉率降低31.34%,同时保持了与GPT4(教师)相当的质量水平。

表7: 由GPT4评估的幻觉率和质量得分。Orca-3结果旁边的数字(x%, y%)表示与Orca v2.5和Mistral-7B-Instruct相比的改进百分比。

4.7 评估:RAG

RAG(检索增强生成)技能显著提升了语言模型生成知情、上下文精确响应的能力,从而提升了它们的整体性能和实用性。在模型知识有限的领域测试语言模型的RAG能力可能更为有效。在这项研究中,我们选择了MIRAGE[35],这是一个通过从医学语料库中检索信息来回答问题的基准测试。由于医学领域通常不是本研究中评估模型的主要关注点,MIRAGE为评估它们的RAG能力提供了有效的平台。此外,AgentInstruct RAG数据使用了通用的非医学数据种子,使我们能够测试技能(RAG)在新领域中的应用情况。

表8: 在MIRAGE上评估RAG技能的结果。Orca-3结果旁边的数字(x%)表示与Mistral-7B-Instruct相比的改进百分比。CoT显示了相同模型在不使用RAG时回答问题的性能。

我们在MIRAGE [35] 上使用了相同的检索机制,使用MedRAG,伴随基准测试的语料库。这涉及到对所有模型使用相同的检索功能和相同数量的检索文档。由于所有模型都呈现了相同的检索文档集,比较准确地反映了不同模型将检索结果纳入其响应的能力。

5 限制

AgentInstruct显著减少了数据生成所需的人类专业知识,并实现了大规模创建高质量合成数据。然而,这仍然是朝着这个方向的早期步骤,可能会受到与合成数据生成相关的许多限制的影响,包括但不限于:

  • 可扩展性:为不同技能创建智能体流程依赖于人类努力构建流程。未来的工作应考虑如何自动化从用户规范构建智能体流程的过程。

  • 准确性:合成数据可能无法完美复制现实世界数据的复杂性和细微差别,导致潜在的不准确。需要更多的工作来更好地评估数据的质量。

  • 成本:使用LLMs和工具的多个智能体生成合成数据可能是资源密集型的。

  • 偏见:如果用于生成合成数据的原始种子数据包含偏见,这些偏见可能在合成数据中反映甚至放大。

  • 验证:验证合成数据以确保其准确表示所需场景可能很困难。

  • 依赖种子数据:合成数据的质量取决于用作种子的真实数据的质量。质量差的数据可能导致质量差的合成数据。

Orca-3是基于Mistral模型家族使用AgentInstruct数据进行微调的,并且保留了许多限制,以及其他大型语言模型的常见限制,以及源于其训练过程的限制,包括:

  • 数据偏见:大型语言模型在广泛的数据上训练,可能会无意中携带源数据中的偏见。因此,模型可能会生成可能具有偏见或不公平的输出。

  • 缺乏透明度:由于复杂性和规模,大型语言模型可能表现为“黑箱”,使得难以理解特定输出或决策背后的理由。我们建议查阅Azure的透明度说明以获取更多信息。

  • 内容危害:大型语言模型可能会造成各种类型的内容危害。在使用这些模型时,了解它们并采取行动以防止它们是非常重要的。建议利用不同公司和机构提供的各种内容审核服务。重要的是,我们希望政府和技术领导者将来能为AI技术的内容危害制定更好的法规和标准。我们重视并承认研究和开源社区在这方面可以发挥的重要作用。

  • 幻觉:重要的是要意识到并谨慎,不要完全依赖给定的语言模型进行可能产生深远影响的关键决策或信息,因为防止这些模型编造内容并不明显。此外,尚不清楚较小的模型是否可能更容易在无基础的生成用例中产生幻觉,因为它们的规模较小,记忆容量减少。这是一个活跃的研究课题,我们希望在这方面有更多的严格测量、理解和缓解措施。

  • 滥用潜力:如果没有适当的保障措施,这些模型可能被恶意用于生成虚假信息或有害内容。

  • 数据分布:Orca-3的性能可能与调整数据的分布密切相关。这种相关性可能限制了它在训练数据集中代表性不足的领域中的准确性。

6 结论

AgentInstruct的生成性教学方法为生成大量多样化和高质量的数据以进行模型后训练提供了一个有希望的解决方案。这种方法通过使用智能体流程进行合成数据生成,从而解决了与在模型训练中使用合成数据相关的主要问题,例如缺乏多样性以及在数据创建过程中需要密集的人类策划和干预。通过利用智能体框架,AgentInstruct可以从非结构化数据源生成包含提示和响应的定制数据集,促进模型的后训练并教授它们多种技能。这种方法的有效性通过Orca-3模型的显著性能提升得到了证明,该模型在使用AgentInstruct生成的2500万对数据集进行后训练后,在多个基准测试中展示了显著的性能提升。我们相信,使用智能体流程创建合成数据可以在模型训练的所有阶段,包括预训练、后训练和领域/任务专业化中显示出显著的价值。使用非结构化内容生成多样化和高质量的指令数据的能力,给任何规范,可能为使用合成数据定制模型(使用特定领域内容作为种子)和持续改进(使用智能体流程生成比基础模型更高质量的数据)的(半)自动化流程铺平了道路。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询