01背景

在实际的生产应用中,基于高质量的有监督指令数据进行指令微调(Instruction Tuning)是一种提升大语言模型可控性和准确率的重要方法。指令微调是一种通过在包括指令-输出对(也称为问答对)的数据集上进一步训练大型语言模型的过程,其特殊之处在于其数据集的结构,即由人类指令和期望的输出组成的配对。这种结构使得指令微调专注于通过理解和遵循人类指令来增强大语言模型的能力和可控性。

然而,高质量有监督指令数据的稀缺性限制了指令微调在各行各业的应用。尽管学术界和业界已经在不断构建和发布新的指令微调数据集,但是大部分数据集由人工构建,成本高昂,效率低下,数量和相关度也仍远远达不到实际生产应用的要求。因此,学术界和业界迫切地需要一种高效、灵活、可复制的大规模指令数据构建方法。

为了解决这些问题,本方案提出一种基于大语言模型上下文学习的指令微调数据构建方法,全自动地从数据库中挖掘出和应用场景高度相关的原始素材,大语言模型凭借强大的上下文学习能力可以从示例样本和原始素材中快速构建出高质量的指令-输出对,形成种类多样、内容翔实的指令微调数据集,有力地提升了指令数据的数量、质量、可控性,基于这些指令数据微调后的模型其性能表现也得到了大幅增强。

02现有的数据构建方案

常见的指令微调数据构建技术方案包括人工构建、人-机混合构建、模型生成、用户共享等。以下是具体的案例,以详细解释这些方案。

1、人工构建:这种方案主要依赖于人工专家的知识和经验。例如,在医疗领域,可以请医疗专家为大语言模型构建指令微调数据集。他们可以根据医疗领域的特点和需求,设计出一系列具有代表性的指令和对应的输出,如指令“解释心脏病的症状”和对应的输出“心脏病的常见症状包括胸痛、呼吸困难、心悸等”。人工构建数据集需要大量的时间和人力投入,尤其是在涉及到专业领域时,可能需要聘请领域专家,成本较高。其次,人工构建的数据集规模相对较小,可能无法满足大语言模型训练的需求。另外,人工构建的数据集可能受到构建者个人知识和经验的影响,导致数据集存在偏见和局限性。

2、人机混合:这种方案结合了人的创造性和机器的效率。例如,可以先使用大语言模型生成一些初步的指令和输出,然后请人工专家进行筛选和优化。这样既可以利用模型的大规模生成能力,又可以保证指令和输出的质量和适用性。在人机混合的过程中,需要对模型生成的数据进行筛选和优化,这可能导致质量不一致的问题。虽然人机混合方法可以提高数据生成的效率,但仍然需要人工参与,可能无法完全解决时间和成本问题。

3、模型生成:这种方法主要依赖于预训练的大语言模型。例如,可以输入一些简单的指令,如“写一篇关于全球变暖的文章”,然后让模型生成更具体、更复杂的指令和对应的输出,如指令“写一篇关于全球变暖对极地生态影响的文章”和对应的输出“全球变暖对极地生态产生了深远影响,包括冰川融化、物种数量减少等”。模型生成的数据可能存在质量问题,如重复、逻辑错误、缺乏多样性等,需要进行后期筛选和修正。另外,模型生成的数据受到预训练模型的影响,可能继承了模型的偏见和局限性。

4、用户共享:这种方法主要依赖于用户的参与和分享。例如,可以建立一个平台,经用户同意后,由用户分享他们在使用大语言模型时的指令和输出。这样不仅可以获取到大量的实际使用场景,也可以让用户直接参与到模型的训练过程中,提高模型的实用性和用户满意度。用户共享的数据可能包含个人及个人敏感信息 ,需要进行脱敏处理,以保护用户隐私。其次,用户共享的数据质量参差不齐,需要进行筛选和清洗。另外,用户共享的数据可能受到用户群体的偏见影响,导致数据集存在偏见。

不同的方法有各自的优缺点和适用场景,通常在实际操作中会结合使用,以达到更好的效果。

03本方案介绍

在这里插入图片描述

本任务旨在从数据库中挖掘出和应用场景高度相关的原始素材,利用性能先进大语言模型从示例样本和原始素材中快速构建出高质量的指令-输出对,形成种类多样、内容翔实的指令微调数据集。针对某一个应用场景,首先需要基于原始语料库人工构造一系列符合应用需求的示例样本作为参考,示例样本由“素材-指令-输出”三部分组成。然后利用模式匹配的方法从数据库进行数据挖掘,得到一批原始素材,例如税务场景中的个人所得税计算方法等。接着,分别提取示例样本中的素材和原始素材的文本特征,基于特征进行示例样本素材和原始素材的相似度计算,匹配出若干个最相似的配对形成“上下文学习示例对”,其由示例样本的“素材-指令-输出”和原始素材组合而成。最后,基于“上下文学习示例对”设计一个数据构建任务和对应的提示词,输入大语言模型后生成新的指令-输出对。

示例样本构建

下面以税务场景的一道数值计算题目为例来说明如何构建示例样本:

示例

“素材:小规模纳税人,适用3%的简易征收办法,不享受增值税专用发票抵扣。”
“指令:农户张大爷种植蔬菜,张大娘开小卖部。今年一季度,张大爷销售自己种植的大白菜31万;张大娘的小卖部销售商品29万。张大爷和张大娘一共需要缴纳多少增值税?”
“输出:根据已知信息,张大爷和张大娘均属于小规模纳税人,适用3%的简易征收办法。因此,他们需要缴纳的增值税分别为:
张大爷:31万元 × 3% = 0.93万元
张大娘:29万元 × 3% = 0.87万元
他们两人一共需要缴纳的增值税为:0.93万元 + 0.87万元 = 1.8万元。”

其中素材为某条涉及数值计算的税务法规条例,需要保持条例的完整,指令为人工设想的一个具体应用案例,该案例与条例内容相关,最后根据素材和指令,可以人工列出分析过程、算式,进行计算后得到最后的输出结果。

场景计算推理评测数据集

本方案基于不同的应用场景从原始数据库中人工构造了100个示例样本,形成一个用于自测的场景计算推理评测数据集,该数据集的场景分布和题型分布如下:
在这里插入图片描述
在这里插入图片描述

使用者既可以直接使用场景计算推理评测数据集中的示例样本,也可以根据实际场景模仿该数据集的构建方式重新构建新的示例样本。

在使用场景计算推理评测数据集时,待评测大语言模型需要根据素材和指令输出相应的内容。本方案设计了四个维度来系统地评测大语言模型在场景计算推理方面的性能,分别是:

01语义理解:指大语言模型是否正确理解了素材和指令的含义,是否曲解了指令的意图或者拒绝作出回答。

02内容定位:指大语言模型是否引用复述素材中的相关内容,以此为基础进行计算和推理。

03计算推理:指大语言模型是否正确地完成了计算和推理的步骤。

04答案总结:指大语言模型是否正确地得出了结论和答案。

原始素材挖掘

构建指令微调数据的关键一步是获取到丰富的原始素材,例如税务场景中的个人所得税计算方法、云计算的服务器收费标准等等。本方案采用模式匹配的方法从数据库里面挖掘出原始素材。

对于一些有明确章条结构的语料文本来说,本方案采取正则表达式的方法定位章条结构,进行段落和句子的切分,从而提取出逐条的原始素材。

对于没有明确章条结构的语料文本来说,本方案采取正则表达式匹配语料中的标志性符号/具有特殊含义的字符,例如法律法规通常用书名号“《》”包括起来,某些句子提及计算方法或者计算公式,再对本段落或者本句子进行切分。

在挖掘出原始素材后,本方案还对原始素材进行了场景分类和题型分类。其中,场景分类可以根据原始语料文本的来源来判定,例如某段原始素材来自《个体工商户建账管理暂行办法》,则归为“税务场景”。而题型分类可以根据原始素材中出现的某些关键词进行判定,例如原始素材中出现了[‘年’, ‘月’, ‘日’, ‘天’]等表示日期的关键词,则归为“日期推理”题型,出现了[‘元’, ‘人民币’]等表示金额的关键词,则归为“数值计算”或者“数值比较”题型。为了确保原始素材的质量,本方案还对过短或者过长的素材进行了过滤。

值得注意的是,本节仅对本方案在实践过程中的部分情况进行了示例,由于不同场景下的数据库差别巨大,因此需要综合考虑各种思路进行相应的数据挖掘,在此不再赘述。

根据原始素材检索匹配示例样本

完成原始素材挖掘以后,下一步是构建“上下文学习示例对”。考虑到大语言模型对于相似程度高的示例能够给出更可靠的生成结果,为了在保持素材相关性的同时尽可能提升示例对的数量,本方案提出了两种并行的思路来进行相似性文本检索,即在目标素材中检索匹配与待检索素材相近的素材。

在这里插入图片描述

本节先介绍“根据原始素材检索匹配示例样本”。对于某个应用场景下的某类题型,本方案使用预训练完毕的文本表征模型分别提取原始素材和示例样本中的素材的文本特征。对于每一个原始素材的文本特征,分别计算其与每一个示例样本素材的文本特征的余弦相似度。在实际的应用过程中,本方案可以使用faiss等工具库对特征向量进行矩阵运算,快速得到所有特征之间的相似度。然后,本方案对于每一个原始素材选取topM个与之最相似的示例样本中的素材。本方案设置一个相似度的阈值范围[min_sim, max_sim],从topM个示例样本中保留相似度落在阈值范围的样本,相似度低于min_sim的样本为差异过大的样本,会影响大语言模型的生成效果,相似度高于max_sim的样本为高度近似的样本,存在测试数据泄漏的风险,因此都需要进行过滤。通过过滤的示例样本可与原始素材进行一一配对,形成“上下文学习示例对”,保存于储存区。

根据示例样本检索匹配原始素材

本节将介绍“根据示例样本检索匹配原始素材”。其基本原理与上一节介绍的“根据原始素材检索匹配示例样本”相似,所不同的是待检索素材是示例样本中的素材,目标素材是原始素材,本方案对于每一个示例样本素材选取topN个与之最相似的原始素材,并通过阈值进行筛选,其他细节不再赘述。值得注意的是,为了保证储存区中的“上下文学习示例对”不产生重复,加入储存区需要进行查重操作。

大语言模型生成指令-输出对

在得到了一系列“上下文学习示例对”之后,本方案使用性能先进的大语言模型生成新的指令-输出对,从而获得新的指令微调数据集。具体来说,本方案构建了一个数据构建任务和对应的提示词,并将“上下文学习示例对”进行重新组合。下面的例子将说明如何构建一个“数值比较”的数据构建任务和对应的提示词,用{原始素材}指代提示词中可替换的原始素材,{示例样本}指代提示词中可替换的{示例样本}:

示例
你是一个经验丰富的出题老师,你会根据给定的材料,寻找到包含数量和数字的内容,以此构思出有关于【数值比较】的问题,并给出相应的答案。输出的内容包括素材、指令和输出三部分,以JSON格式输出,确保输出能被json.loads加载。以下为一个示例。
{示例样本}
以下是正式的出题环节。
{原始素材}。
请写出指令和输出。

在这个例子中,本方案为大语言模型设置了一个“出题老师”的角色,向其提出了出题的操作流程、题目类型和具体要求,并提供了一个示例样本作为大语言模型上下文学习的参考案例,然后给出匹配的原始素材,让大语言模型写出指令-输出对。

上述的提示词为本方案进行了多次调整后得到的较优结果,在实际的应用过程中可以进一步开展提示词工程获得更优的提示词。

通过上述的方案,大语言模型可快速产生批量的指令微调数据,这些数据受到示例样本的约束,与示例样本同属一个类型,因此可控性得到了显著的提升。同时,本方案不局限于某一个应用场景或者指令类型,使用者可参照以上示例快速迁移到新的场景和类型中,因此也体现了本方案的灵活性。

04本方案效果

不同指令微调数据构建方法的效果比较

下面以税务场景的一道数值计算题型的例子说明本方案中基于上下文学习的数据构建方法与直接的数据构建方法之间的效果差异。在该实验中选择某性能先进的大模型作为预设的大语言模型。

以下是本方案设计的数据构建任务和对应的提示词,包含了上下文学习的示例样本:

示例
“你是一个经验丰富的出题老师,你会根据给定的材料,寻找到包含数量和数字的内容,以此构思出有关于【数值计算】的问题,并给出相应的答案。输出的内容包括素材、指令和输出三部分,以JSON格式输出,确保输出能被json.loads加载。以下为一个示例。
{‘素材’: ‘计算个人所得税:根据《中华人民共和国个人所得税法》的规定,股票授予属于工资、薪金所得,按照累进税率计算个人所得税。具体的税率是:
月应纳税所得额不超过3000元的,税率为3%; 超过3000元至12000元的部分,税率为10%; 超过12000元至25000元的部分,税率为20%; 超过25000元至35000元的部分,税率为25%; 超过35000元至55000元的部分,税率为30%; 超过55000元至80000元的部分,税率为35%; 超过80000元的部分,税率为45%。’,
‘指令’: ‘今天公司发了10万元的工资,请问我需要缴纳多少钱的个人所得税呢?’,
‘输出’: ‘根据已知信息,您的应纳税所得额为10万元。按照累进税率计算,您需要缴纳的个人所得税为:
(3000元 × 3%) + (9000元 × 10%) + (13000元 × 20%) + (10000元 × 25%) + (20000元 × 30%) + (25000元 × 35%) + (20000元 × 45%) = 90元 + 900元 + 2600元 + 2500元 + 6000元 + 8750元 + 9000元 = 29840元
所以,您需要缴纳的个人所得税为29840元。’}。
以下是正式的出题环节。
{‘素材’: ‘政府信息公开申请处理按件计收收费标准:
(一)同一申请人一个自然月内累计申请10件以下(含10件)的,不收费。
(二)同一申请人一个自然月内累计申请11—30件(含30件)的部分:100元/件。 (三)同一申请人一个自然月内累计申请31件以上的部分:以10件为一档,每增加一档,收费标准提高100元/件。’}。
请写出指令和输出。“

该大语言模型输出的指令-输出对如下所示:

示例
{“指令”:
“一个自然月内,某申请人累计申请了50件政府信息公开申请,请问他需要支付多少费用?”,
“输出”:
“根据收费标准,前10件不收费,第11件至第30件每件收费100元,第31件至第40件每件收费200元,第41件至第50件每件收费300元。所以,该申请人需要支付的费用为:
(30-10) × 100元 + (40-30) × 200元 + (50-40) × 300元 = 20 × 100元 + 10 × 200元 + 10 × 300元 = 2000元 + 2000元 + 3000元 = 7000元。”}

如果将示例部分去除,则该大语言模型输出的指令-输出对如下所示:

示例
{“指令”: “如果一个人在一个自然月内申请了20件政府信息公开申请,需要支付多少费用?”,
“输出”: “根据收费标准,该申请人需要支付100元/件 * 20件 = 2000元。” }

从上述的结果中可以看出,在第一次输出的指令-输出对中,由于示例样本中包含了一道分段计算的题目,并且在输出的回答中进行了详细的分析和列式计算,所以该大语言模型会仿照示例样本生成一道题型近似的数据,同时也给出了分析、列式计算和最终的正确答案。而在第二次输出的指令-输出对中,由于缺乏了参考的示例样本,该大语言模型跳过了中间的分析推理步骤,直接给出了列式计算的答案,但是答案并不正确。诸多研究表明了指令微调数据中包含的完整分析推理步骤有助于激活大语言模型的思维链能力,从而显著提高其计算和推理的性能,而这正是本方案构建的数据的优势所在。

大语言模型经过不同数据训练后的性能比较

为了进一步验证本方案构建的指令微调数据能够显著提升大语言模型的性能,我们开展了另一个实验。在本实验中,我们先使用性能先进的大模型按照本方案的思路构建了约12000道指令微调数据,原始素材来自税务、金融、教育、云计算等多个场景下的数据库,示例样本来自场景计算推理评测数据集。然后,我们选择Baichuan-2**[1]**作为基线模型,使用12000道指令微调数据进行了1个epoch的全参数有监督指令微调。最后,我们在场景计算推理评测数据集上评测了Baichuan-2的原始版本和微调版本的指标,其结果如下:
在这里插入图片描述

从上表中可以看出,本方案构建的训练数据能够显著地帮助大语言模型提升其性能,尤其是推理计算(+14%)和答案总结(+21%)两个维度,这验证了本方案在增强大语言模型的能力方面带来了明显的有益效果,也为今后进一步优化大语言模型的性能提供了一种可靠的参考方向。

05总结

本方案提出了一种创新的技术方案,即一种基于大语言模型上下文学习的指令微调数据构建方法,旨在解决现有指令微调数据构建方法中存在的问题,如时间和成本高、规模限制、可控性无法保证、应用场景单一等。该方案能够自动地从数据库中挖掘出与应用场景高度相关的原始素材,并利用性能先进大语言模型强大的上下文学习能力,从示例样本和原始素材中快速构建出高质量的指令-输出对。本技术方案可以通过调整示例样本的内容和格式适配不同的应用场景,高效生成种类丰富、内容详实的指令微调数据集,同时显著提升了数据的质量和可控性。

本技术方案的主要优势在于:

1、自动化:通过自动挖掘数据库,减少人工参与,降低时间和成本、

2、可控性:利用大语言模型的上下文学习能力,提高指令-输出对的质量。

3、多样性:通过挖掘数据库,提高数据集的多样性,降低偏见和局限性。

4、规模可扩展:本方法可根据需求扩展数据集规模,满足大型模型训练的需求。

综上所述,本技术方案为解决现有指令微调数据构建方法中的问题提供了一种有效的解决方案,有助于提高大语言模型的性能和实用性。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

更多推荐