如何构建高质量的模型微调数据

微调数据格式

单轮

  {"system":""},      {"user":""},      {"assistant":""} 

多轮

    [       {"system":""},      {"user":""},      {"assistant":""},      {"system":""},      {"user":""},      {"assistant":""}      ]    

示例

  1. Llama3
    <|begin_of_tex|>:开始
    <|start_header_id|>{role}<|end_header_id|>:以下对话对应的角色
    <|eot_id|>:一轮对话结束

质量

高质量

  • grabage in grabage out 高质量的prompt以及对应的高质量response 可以很好的让模型学会遵循指令。

真实性

  • 真实数据可以更好地捕捉到实际应用场景中的各种变化和复杂性。使微调之后的模型可以更加好地适应真实场景。

针对性

  • 不同的prompt对模型的重要度和必然性不一样,针对用户反馈差的数据人工改写大模型恢复 更改为更优质的数据加入到微调数据中。

多样性

  • prompt 与response的类型多样 场景多样 避免重复 尽可能覆盖到全场景做到数据的多样性 避免过拟合导致模型效果不佳。

数量

  • 最低需要准备100条数据 建议达到5000条数据

分析

  • 挖掘各个纬度 分析分布特点 合理划分训练集和测试集
    • 人设长度分布
    • 对话论次分布
    • response长度分布
    • 对话数量分布

数据获取方式

  1. 格式化NLP任务数据
  2. 日常对话数据
  3. 合成数据(self-instruct)
    1. 指令生成
    2. 分类任务识别
    3. 实例生成
    4. 过滤和后处理
  4. evol-instruct
    1. 指令进化
      1. 深度进化
        1. 包含 添加约束 深化 具体化 增加推理步骤以及输出复杂化
      2. 广度进化
        1. 增加主题和技能的覆盖度以及数据集的多样性。
    2. 响应生成
      1. 使用chatgpt为进化后的指令生成相应的响应。
    3. 进化消除
      1. 过滤进化失败的指令。
  5. 示例
    1. 网页搜索获取全国2009年-2018年的高考作文题目
    2. 作文数据集构建 (使用不同的模型 ernie-4.0-8l chatGlm2-6B-32k)
      1. 高质量作文prompt
      2. 普通质量作文prompt
      3. 低质量作文prompt
      4. 残篇作文prompt
    3. 使用强大的模型 对步骤2进行评分和批改
    4. 对步骤3进行重复数据过滤 返回response 非json格式数据 通过人工review的方式堆ERNIE -4.0-8k 进行打分和修正。
    5. 拆分训练集与评估集
      1. 评估集中的作文质量分布要和训练集汇中的大致一致。
      2. 评估集和训练集内容不能重复,避免评估不准确。
posted @ 2025-06-29 21:55  贺艳峰  阅读(60)  评论(0)    收藏  举报