微调数据格式
单轮
{"system":""}, {"user":""}, {"assistant":""}
多轮
[ {"system":""}, {"user":""}, {"assistant":""}, {"system":""}, {"user":""}, {"assistant":""} ]
示例
- Llama3
<|begin_of_tex|>:开始
<|start_header_id|>{role}<|end_header_id|>:以下对话对应的角色
<|eot_id|>:一轮对话结束
质量
高质量
- grabage in grabage out 高质量的prompt以及对应的高质量response 可以很好的让模型学会遵循指令。
真实性
- 真实数据可以更好地捕捉到实际应用场景中的各种变化和复杂性。使微调之后的模型可以更加好地适应真实场景。
针对性
- 不同的prompt对模型的重要度和必然性不一样,针对用户反馈差的数据人工改写大模型恢复 更改为更优质的数据加入到微调数据中。
多样性
- prompt 与response的类型多样 场景多样 避免重复 尽可能覆盖到全场景做到数据的多样性 避免过拟合导致模型效果不佳。
数量
分析
- 挖掘各个纬度 分析分布特点 合理划分训练集和测试集
- 人设长度分布
- 对话论次分布
- response长度分布
- 对话数量分布
数据获取方式
- 格式化NLP任务数据
- 日常对话数据
- 合成数据(self-instruct)
- 指令生成
- 分类任务识别
- 实例生成
- 过滤和后处理
- evol-instruct
- 指令进化
- 深度进化
- 包含 添加约束 深化 具体化 增加推理步骤以及输出复杂化
- 广度进化
- 增加主题和技能的覆盖度以及数据集的多样性。
- 响应生成
- 使用chatgpt为进化后的指令生成相应的响应。
- 进化消除
- 过滤进化失败的指令。
- 示例
- 网页搜索获取全国2009年-2018年的高考作文题目
- 作文数据集构建 (使用不同的模型 ernie-4.0-8l chatGlm2-6B-32k)
- 高质量作文prompt
- 普通质量作文prompt
- 低质量作文prompt
- 残篇作文prompt
- 使用强大的模型 对步骤2进行评分和批改
- 对步骤3进行重复数据过滤 返回response 非json格式数据 通过人工review的方式堆ERNIE -4.0-8k 进行打分和修正。
- 拆分训练集与评估集
- 评估集中的作文质量分布要和训练集汇中的大致一致。
- 评估集和训练集内容不能重复,避免评估不准确。