微调数据构造实验
1 XTuner教学使用
XTuner的安装、部署、训练教程详见:XTuner 微调个人小助手认知
2 微调实战
采用弱智吧数据进行训练~
2.1 概述
2.1.1 场景需求
基于 InternLM2-chat-1.8B 模型,用弱智吧中的数据进行微调,训练一个不弱智的模型
2.2 数据准备
2.2.1 数据构造
首先介绍下如何构造高质量的SFT数据:
- 数据选择和采集
微调数据的选择应该基于目标应用场景:
- 领域相关性:选择与预期应用场景密切相关的文本数据。例如,如果目标是法律助理,应选择法律文档和案例。本实验目的是提升模型的推理和识别逻辑陷阱的能力,因此选择弱智吧的数据。
- 质量高:这里指的是问题和回答都要是高质量的,通常需要语法正确,信息准确,风格一致。具体来说,好的回复应该遵循“无害(Harmless)、诚实(Honest)、有帮助(Helpful)”的三H原则。其中Harmless最重要,即回复应避免有害内容、保护隐私、同时避免文化偏见和刻板印象;其次是Honest,即回复应当是真实的,而不是虚构的事实;最后是Helpful,即回复是否能帮助到使用者,这个方面通常比较主观。
- 多样性:确保数据覆盖所有相关子话题,以促进模型的泛化能力。
2数据预处理
为了提高模型的效率和效果,数据预处理是必不可少的步骤:
- 清洗:去除无关的内容,如广告、HTML标签、无意义的填充词等。
- 标准化:统一词汇的格式,比如时间、日期、货币单位等。
- 分词:根据目标模型的需求进行适当的分词处理。
- 去噪声:消除文本中的错误,如拼写错误、语法错误等。
3 数据标注
由于微调数据规模不大,因此可以通过标注的方式来进行构造,这里有两种不同的标注方法:
- 人工标注:由人工专家进行标注,确保标注的准确性和一致性。采用人工的方式成本比较高,但质量相对较好,尤其在涉及一些专业领域的时候,领域专家能够更好的理解问题并给出回复。这里介绍下我们的仓库:OpenDataLab.,里面主要是一些数据处理工具,预计2024年5月会开源一个专门用于大语言模型标注的免费的标注工具。
- https://github.com/opendatalab
- 自动标注:使用已有的模型进行初步标注,然后由人工校验和修正。可以采用GPT4来生成回复,再由人工来判断回答的好坏,并进行修正.
4 数据增强
数据增强可以提高模型的鲁棒性和泛化能力,方法有:
- 文本重述:用不同的方式表达同一意思,增加文本的多样性。
- 翻译循环:将文本翻译成一种语言,然后再翻译回原语言,通常用于生成新的文本表达。
- 合成数据生成:使用规则或模型生成新的训练样本。
5 数据划分
通常分为训练集、验证集和测试集。合理划分数据,确保模型能在未见过的数据上进行有效的泛化测试。
在本次实验中我们直接采用公开数据集中处理过的微调数据给大家做个简单的演示。大家可以访问 Huggingface 或者 OpenDatalab 进行数据集下载,由于huggingface网络连接问题,推荐国内的同学访问OpenDataLab进行数据集下载。我们选择其中的弱智吧数据进行微调,这个数据集的问题来自于点赞数超过500的弱智吧问题,基本都是一些逻辑陷阱或者脑筋急转弯,然后通过人工或GPT4的方式编写正确回答,再由人工校验后筛选出200多条高质量微调数据。
https://huggingface.co/datasets/m-a-p/COIG-CQIA
2.2.2 真实数据预览
问题 |
答案 |
石油也是油,为啥没人用它来炒菜? |
石油虽然也是一种油,但它并不适用于烹饪。这主要是因为石油和食用油在化学成分和用途上有很大的不同: 1. 化学 成分:食用油是由植物或动物脂肪制成的,主要含有对人体有益的脂肪酸,如欧米伽脂肪酸。而石油是一种化石燃料,主要由碳氢化合物组成,含有多种有害的化学物质。 2. 毒性:石油中含有的化学物质对人体是有害的,甚至是致癌的。这些物质在加热时会产 生有毒的烟雾和蒸气,这对健康极为不利。 3. 风味和气味:食用油在烹饪中可以增添食物的风味,而石油的气味和味道都非常 强烈且令人不悦,不适合用于食物。 |