盘古大模型 PANGULARGEMODELS-打造政务智能问答助手:准备训练数据

时间:2024-10-18 10:48:53

准备训练数据

本场景不涉及自监督训练,无需准备自监督数据。

微调数据来源:

需要针对涉及的模块分别构造相关的微调数据。

  • query改写模块
    • 来源:互联网开源数据集
  • 问答模块
    • 来源一:互联网开源数据集,如政府网站网页、政府在线问答公开数据、政务百科等。
    • 来源二:特定的私域数据,针对于具体场景和项目需求,收集相关的文本数据。比如通过与当地政府的政数局进行合作,获取政府部门提供的内部脱敏数据等。相关的数据格式包括但不限于:在线网页、离线word文档、离线txt文件、离线excel表格、离线PDF文件、扫描版word文档、扫描版PDF文件等。

微调数据要求:

  • 数据格式样例:JSONL格式,每行是一条JSON,包含“context”和“target”两个字段。示例如下:
    • query改写模块:准备对应省略补全任务的数据和对应指代消解任务的数据
      {"context": ["你对李健怎么看 | 音乐诗人李健。请根据以上背景补全以下问题: 喜欢么"], "target": "喜欢李健么"}
      {"context": ["孩子就是不写作业 | 还是写作业吧。请根据以上背景补全以下问题: 你有什么办法让他写作业吗"], "target": "你有什么办法让孩子写作业吗"}
    • 中控模块:对于中控模块,可以首先尝试使用基础功能模型基于prompt来进行相关中控逻辑的判断,一般情况下能够满足绝大部分场景的需求。如果针对特别细分的垂域场景,且需要中控逻辑能够取得接近100%准确率的效果,则可以按照需求可以准备对应的中控分类数据。以简单的二分类场景为例,但中控逻辑可以非常复杂,可扩展到多场景分类。二分类的数据示例如下:
      {"context ": ["用微波炉热汤要盖盖子吗? 判断以上问题是否需要调用检索,请回答“是”或”否“"], "target": "否"}
      {"context ": ["福田区支持哪些组织开展退役军人教育培训工作? 判断以上问题是否需要调用检索,请回答“是”或“否”"], "target ": "是"}
    • 问答模块:准备单轮问答和检索增强的数据集
      {"context": ["请问福田英才荟卫生系统人才与福田英才荟高层次人才是不同的部门受理么?"], "target": "您好,福田英才荟卫生系统人才奖励管理办法只针对福田区属医疗卫生事业单位人员,其他高层次人才申领奖励建议咨询区人力资源局。"}
       
      {"context": ["请阅读以下文章回答问题,如果问题与文章不相关,则无需参考文章内容,直接回答问题即可。文章:“在福田区社会建设专项资金的使用情况中,如何防止出现损失、浪费和管理不善的情况?在社会建设专项资金的使用情况中,应规范操作,加强管理,及时纠正和化解建设过程中的解释、调取和留置问题,严防管理漏洞,保证应用资金的安全性和真实性。同时,应建立完善的监管机制,严格管理,加强监督,加强专项资金使用情况的评估,加强对建设过程的监管和评估,节约专项资金,杜绝资源的浪费和管理不善的情况。在使用福田区社会建设专项资金中,如何防止遭到挤占、占用和挪用专项资金的情况?在使用福田区社会建设专项资金的过程中,应合法合规,按照相关规定经审批后使用并保存票据。同时,应实行专款专用、监管有力的制度,并加强对专项资金的监督和管理。严格控制专项资金的流向和使用范围,严禁有过度功能的行为,坚决杜绝虚假、虚报和恶意投资,建立完善的监督管理制度,加强随时的监督和核查,确保专项资金使用的规范化、严格化、透明化、便结算。”问题:在福田区社会建设专项资金的使用过程中,如何避免因管理不善导致专项资金重大损失浪费?"], "target": "福田区社会建设专项资金使用过程中,如何保障专项资金的使用事项为重点。管理人员应建立责任所在意识,制定科学规范的使用办法,强化使用过程的监测和评估。必须严格按照项目运作方案来确定资金使用范围,确保所有使用资金都是经过规范操作和审批的,必须严格按照使用资金的监管属性,统一管理各类资金,精细、规范、稳健。在内部管理上,应加强信息通报、关联跨部门协调机制,提高管理精神与管理水平,优化执行方法,简化管理程序,创造良好的运作环境,以推进社会建设事业的合理发展。"}
  • 数据量级要求:综合三个模块,本场景共使用了100000量级的数据进行微调。其中query改写模块使用了4万量级的sft数据,问答模块使用了6万量级的sft数据 ,包括单轮问答、多轮问答。中控模块使用了1万量级的sft数据。

    针对不同的任务类型,所需数据量会所有不同。从经验上来说,对于简单的任务,数据量的要求会少一点,如3000到5000条;对于复杂的任务,需要的数据条数更大一些,如2万~10万条。在构造指令微调数据的成本可以接受的情况下,至少准备1万条以上指令微调数据为宜。

  • 数据质量要求:
    • 保证微调数据的正确性,多样性,复杂性。
    • 保证微调数据能覆盖对应任务所涉及的所有场景。

微调数据清洗:

以下是该场景中实际使用的数据清洗策略,供您参考:

  • 原始文本处理。基于爬虫、数据处理平台批量处理收集到的原始数据,需要将文件统一转换成纯文本的txt文件,对错误格式数据进行删除。
  • 构建微调数据。生成垂域微调(问答对)数据,将问答对数据分为:单轮问答数据多轮问答数据检索增强问答数据其他特定的指令任务数据等类型。
  • 构造特定Prompt格式的数据。通过编写代码对数据进行处理,生成所需的带有Prompt格式的数据,保存成JSON文件。
  • 低质量SFT数据过滤。包括:对回答过短的问答对、回答风格不适宜的问答对进行过滤。同时,针对利用大模型从原始文档中抽取出来的问答对数据,您可以基于rouge-score值(https://pypi.org/project/rouge-score/)进行问答对的过滤。

下表列举了场景常见的数据质量问题,以及相对应的清洗策略,供您参考:

表1 微调数据问题与清洗策略

序号

数据问题

清洗步骤与方式

1

问题或回答中带有不需要的特定格式内容或者时间戳等。

通过编写代码、正则表达式等进行处理,删除或者修改对应的内容,或者直接过滤掉整条数据。

2

原始数据不符合特定微调数据的格式。

通过编写代码进行处理,修改为特定微调格式的数据,例如对于阅读理解微调数据,需要拼接上阅读理解对应的Prompt。

3

收集的数据量大,但质量参差不齐,部分数据由于时效性、内容正确性等原因不可用。

对收集自不同来源的数据,进行分别处理,分别过滤不可用的低质量的数据。

support.huaweicloud.com/bestpractice-pangulm/pangulm_04_0003.html