大模子开发和微调工具Llama-Factory-->数据处置惩罚

火影  论坛元老 | 2025-1-20 01:38:19 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039

数据处置惩罚

dataset_info.json 包含了所有颠末处置惩罚的 本地数据集 和 在线数据集。如果利用本地数据集, 务必在 dataset_info.json 中添加对应数据集及其内容的定义
如今支持 Alpaca 格式 和 ShareGPT 的格式
1.Alpaca

针对不同使命,数据集格式要求如下:


  • 指令监督微调
  • 预练习
  • 偏好练习
  • KTO
  • 多模态
1.指令监督微调


  • 样例如下

  • 解释

    • instruction 对应的内容是人类指令
    • input 对应内容是人类输入
    • output 对应内容是模子回答
      在进行指令监督微调时, instruction 列的内容会与 input 列对应内容拼接后作为终极人类的输入,即人类输入为 instruction\ninput。而 output 为模子回答
    • 如果指定 system 列,对应内容将被作为系统提示词
    • history 列是由多个字符串二元组构成的列表,分别代表汗青消息中每轮对话的指令和回答。注意,在指令监督微调时,汗青消息中的回答内容也会被用于模子学习

  • 终极指令微调的格式要求如下
    1. [
    2.   {
    3.     "instruction": "人类指令(必填)",
    4.     "input": "人类输入(选填)",
    5.     "output": "模型回答(必填)",
    6.     "system": "系统提示词(选填)",
    7.     "history": [
    8.       ["第一轮指令(选填)", "第一轮回答(选填)"],
    9.       ["第二轮指令(选填)", "第二轮回答(选填)"]
    10.     ]
    11.   }
    12. ]
    复制代码

    • 样例如下
      1. [
      2.   {
      3.     "instruction": "今天的天气怎么样?",
      4.     "input": "",
      5.     "output": "今天的天气不错,是晴天。",
      6.     "history": [
      7.       [
      8.         "今天会下雨吗?",
      9.         "今天不会下雨,是个好天气。"
      10.       ],
      11.       [
      12.         "今天适合出去玩吗?",
      13.         "非常适合,空气质量很好。"
      14.       ]
      15.     ]
      16.   }
      17. ]
      复制代码

  • 对于上述的数据,dataset_info.json 的数据集描述应为
    1. "数据集名称": {
    2.   "file_name": "data.json",
    3.   "columns": {
    4.     "prompt": "instruction",
    5.     "query": "input",
    6.     "response": "output",
    7.     "system": "system",
    8.     "history": "history"
    9.   }
    10. }
    复制代码
2.预练习数据


  • 样例如下

  • 大语言模子通过学习未被标记的文本进行预练习,从而学习语言的表征。通常,预练习数据集从互联网上得到,由于互联网上提供了大量的不同领域的文本信息,有助于提拔模子的泛化本领。 预练习数据集文本描述格式如下:
    1. [
    2.   {"text": "document"},
    3.   {"text": "document"}
    4. ]
    复制代码
  • 在预练习的时间,只有 text 列中的内容(document)会用于模子学习
  • 对于上述数据,dataset_info.json 的数据集描述为
    1. "数据集名称": {
    2.   "file_name": "data.json",
    3.   "columns": {
    4.     "prompt": "text"
    5.   }
    6. }
    复制代码
3.偏好数据集

偏好数据集用于奖励模子练习、DPO练习 和 ORPO 练习。对于系统指令和人类输入,偏好数据集给出了一个更优的回答和一个更差的回答。
一些研究 表明通过让模子学习“什么更好”可以使得模子更加迎合人类的需求。 乃至可以使得参数相对较少的模子的表现优于参数更多的模子。

  • 偏好数据集须要在 chosen 列中提供更优的回答,并在 rejected 中提供更差的回答,在一轮问答中,格式如下
    1. [
    2.   {
    3.     "instruction": "人类指令(必填)",
    4.     "input": "人类输入(选填)",
    5.     "chosen": "优质回答(必填)",
    6.     "rejected": "劣质回答(必填)"
    7.   }
    8. ]
    复制代码
  • dataset_info.json 的数据集描述为:
    1. "数据集名称": {
    2.   "file_name": "data.json",
    3.   "ranking": true,
    4.   "columns": {
    5.     "prompt": "instruction",
    6.     "query": "input",
    7.     "chosen": "chosen",
    8.     "rejected": "rejected"
    9.   }
    10. }
    复制代码
   DPO(Direct Preference Optimization)和 ORPO(Off-Policy Preference Optimization)是两种用于偏好优化的练习方法,主要用于提拔语言模子对用户偏好的响应本领。它们在强化学习(RLHF, Reinforcement Learning with Human Feedback)框架下利用。
  1. DPO(Direct Preference Optimization):

  

  • 目标: 直接通过用户反馈优化模子输出的偏好,使模子更加符实用户的选择。
  • 方法: 不利用强化学习的奖励建模,而是直接在练习数据中根据人类偏好来优化。通过给定两种天见效果,用户给出偏好,模子学习去优化自己天生更符合偏好的效果。
  • 优点: 不依靠复杂的奖励函数设计,直接根据人类偏好进行优化,练习过程简朴且高效。
  • 实用场景: 得就地景是有明确的偏好数据而且盼望快速迭代和调整模子的偏好输出。
  2. ORPO(Off-Policy Preference Optimization):

  

  • 目标: 在偏离当前策略的数据上,利用偏好信息优化模子,使其在长期上更加符实用户的盼望。
  • 方法: 利用“离线”策略的偏好反馈,通过基于强化学习的优化本领来调整模子。 ORPO 利用先前网络的数据进行优化,而不须要像 DPO 那样直接利用偏好进行梯度优化。它与 DPO 不同的是,模子可以在已经采集好的数据上进行偏好练习,不须要实时获取偏好反馈。
  • 优点: 更得当在大规模汗青数据上进行练习,练习更为稳健,可以更好地处置惩罚复杂的偏好优化问题。
  • 实用场景: 得当有大量汗青偏好数据的情况,尤其是难以获取实时偏好反馈的场景。
  两者主要区别在于:
  

  • DPO 是一种直接基于偏好梯度进行优化的策略,而 ORPO 通过强化学习的方式,在离线数据上进行优化。
  4.KTO 数据集

KTO 数据集与偏好数据集类似,但不同于给出一个更优的回答和一个更差的回答,KTO 数据集对每一轮问答只给出一个 true/false 的 label。除了 instruction 以及 input 组成的人类终极输入和模子回答 output,KTO 数据集还须要一个额外的 kto_tag 列(true/false) 来表示人类反馈

  • 一轮问答中的格式如下
    1. [
    2.   {
    3.     "instruction": "人类指令(必填)",
    4.     "input": "人类输入(选填)",
    5.     "output": "模型回答(必填)",
    6.     "kto_tag": "人类反馈 [true/false](必填)"
    7.   }
    8. ]
    复制代码
  • dataset_info.json
    1. "数据集名称": {
    2.   "file_name": "data.json",
    3.   "columns": {
    4.     "prompt": "instruction",
    5.     "query": "input",
    6.     "response": "output",
    7.     "kto_tag": "kto_tag"
    8.   }
    9. }
    复制代码
   KTO 在这里指的是 “Knowledge Transfer Optimization”(知识迁移优化)干系的数据集。它用于优化模子在知识迁移过程中的本领,特别是在人机交互场景中,评估模子天生的答案是否符合人类的预期。
  主要内容:

  KTO 数据集不仅包含模子的天见效果,还包括人类的反馈,用来优化模子的响应本领。这种数据集设计类似于偏好优化数据集(Preference Optimization),但区别在于,KTO 不是让人类对两种回答进行排序,而是对每一轮问答通过 true/false 的标签直接评估模子的回答是否合格。
  数据集结构:

  

  • Instruction: 人类的指令或提问。
  • Input: 人类终极的输入内容。
  • Output: 模子天生的回答。
  • kto_tag: 人类反馈(true/false),用于标注该模子的回答是否符合预期。
  应用场景:

  KTO 数据集特别适实用于模子优化,尤其是在模子须要从练习数据中学习如何更好地回应人类问题时。通过这种数据集,模子能够更高效地识别精确的反馈模式,从而提拔在实际应用中的表现。这类数据集常用于大语言模子的强化学习阶段,用来替代复杂的奖励建模过程。
  5.多模态数据集

多模态数据集须要额外添加一个 images 列,包含输入图像的路径。如今仅支持单张图像输入。
  1. [
  2.   {
  3.     "instruction": "人类指令(必填)",
  4.     "input": "人类输入(选填)",
  5.     "output": "模型回答(必填)",
  6.     "images": [
  7.       "图像路径(必填)"
  8.     ]
  9.   }
  10. ]
复制代码
dataset_info.json 描述为
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "columns": {
  4.     "prompt": "instruction",
  5.     "query": "input",
  6.     "response": "output",
  7.     "images": "images"
  8.   }
  9. }
复制代码
2.ShareGPT 格式

   Note:
  

  • ShareGPT 格式中的 KTO数据集(样例)和多模态数据集(样例) 与 Alpaca 格式的类似。
  • 预练习数据集不支持 ShareGPT 格式。
  1.指令监督微调数据集

与 alpaca 格式相比,sharegpt 格式支持更多的角色种类,如 human、gpt、observation、function 等。他们构成一个对象列表呈如今 conversations 列中。
样例如下:
  1. {
  2.   "conversations": [
  3.     {
  4.       "from": "human",
  5.       "value": "你好,我出生于1990年5月15日。你能告诉我我今天几岁了吗?"
  6.     },
  7.     {
  8.       "from": "function_call",
  9.       "value": "{"name": "calculate_age", "arguments": {"birthdate": "1990-05-15"}}"
  10.     },
  11.     {
  12.       "from": "observation",
  13.       "value": "{"age": 31}"
  14.     },
  15.     {
  16.       "from": "gpt",
  17.       "value": "根据我的计算,你今天31岁了。"
  18.     }
  19.   ],
  20.   "tools": "[{"name": "calculate_age", "description": "根据出生日期计算年龄", "parameters": {"type": "object", "properties": {"birthdate": {"type": "string", "description": "出生日期以YYYY-MM-DD格式表示"}}, "required": ["birthdate"]}}]"
  21. }
复制代码
  Note:
human 和 observation 必须出如今奇数位置,gpt 和 function 必须出如今偶数位置
  dataset_info.json 描述为
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "formatting": "sharegpt",
  4.   "columns": {
  5.     "messages": "conversations",
  6.     "system": "system",
  7.     "tools": "tools"
  8.   }
  9. }
复制代码
2.偏好数据集

与 alpaca 类似
  1. {
  2.   "conversations": [
  3.     {
  4.       "from": "human",
  5.       "value": "老虎会吃哪一个,草还是树叶?"
  6.     }
  7.   ],
  8.   "chosen": {
  9.     "from": "gpt",
  10.     "value": "我很高兴能帮助你解答问题!不过,我必须指出,这个问题本身可能没有意义。老虎是食肉动物,通常不吃草或树叶。它们的饮食主要包括大型有蹄动物、小型哺乳动物和鸟类。\n\n如果你提出这个问题是出于好奇或有特定原因,我很乐意帮助你找到更多关于老虎饮食习惯的信息,或者建议资源让你更多了解这些壮丽的生物。请告诉我如何进一步协助你!"
  11.   },
  12.   "rejected": {
  13.     "from": "gpt",
  14.     "value": "一只老虎是食肉动物,这意味着它的饮食主要是肉类。老虎主要猎捕和吃其他动物,如鹿和野猪。它们不会选择吃草或树叶,因为这些不是它们自然饮食的一部分。"
  15.   }
  16. }
复制代码
格式如下
  1. [
  2.   {
  3.     "conversations": [
  4.       {
  5.         "from": "human",
  6.         "value": "人类指令"
  7.       },
  8.       {
  9.         "from": "gpt",
  10.         "value": "模型回答"
  11.       },
  12.       {
  13.         "from": "human",
  14.         "value": "人类指令"
  15.       }
  16.     ],
  17.     "chosen": {
  18.       "from": "gpt",
  19.       "value": "优质回答"
  20.     },
  21.     "rejected": {
  22.       "from": "gpt",
  23.       "value": "劣质回答"
  24.     }
  25.   }
  26. ]
复制代码
dataset_info.json 的描述为
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "formatting": "sharegpt",
  4.   "ranking": true,
  5.   "columns": {
  6.     "messages": "conversations",
  7.     "chosen": "chosen",
  8.     "rejected": "rejected"
  9.   }
  10. }
复制代码
3.OpenAI 格式

OpenAI 格式仅仅是 sharegpt 格式的一种特殊情况,其中第一条消息可能是系统提示词
  1. [
  2.   {
  3.     "messages": [
  4.       {
  5.         "role": "system",
  6.         "content": "系统提示词(选填)"
  7.       },
  8.       {
  9.         "role": "user",
  10.         "content": "人类指令"
  11.       },
  12.       {
  13.         "role": "assistant",
  14.         "content": "模型回答"
  15.       }
  16.     ]
  17.   }
  18. ]
复制代码
dataset_info.json
  1. "数据集名称": {
  2.   "file_name": "data.json",
  3.   "formatting": "sharegpt",
  4.   "columns": {
  5.     "messages": "messages"
  6.   },
  7.   "tags": {
  8.     "role_tag": "role",
  9.     "content_tag": "content",
  10.     "user_tag": "user",
  11.     "assistant_tag": "assistant",
  12.     "system_tag": "system"
  13.   }
  14. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表