- ShareGPT 格式
提出背景:ShareGPT 格式起初来自于用户在社交平台上分享与聊天模型的对话记录,这些记录涵盖了丰富的多轮对话内容。研究者们意识到,这类真实的对话数据可以帮助模型更好地学习多轮对话的上下文保持、回应生成等能力。因此,ShareGPT 格式逐渐被用于多轮对话的指令微调。
目标:帮助模型理解复杂的多轮交互,提升模型的对话连贯性、上下文一致性和信息检索能力。
主要应用:ShareGPT 格式应用于需要模拟自然对话流的场景,例如聊天机器人、客服问答、陪伴式 AI 助手等。其设计结构支持用户与助手之间交替对话的记录,适合训练多轮对话模型。 - Alpaca 格式
提出背景:Alpaca 格式由斯坦福大学的研究人员在 2023 年提出,他们旨在通过一种低成本的方式对大型语言模型进行指令微调。Alpaca 项目使用 OpenAI 的 GPT-3.5 模型生成了大量指令数据,并采用简化的格式——instruction、input 和 output 字段——来表述单轮任务。这个结构化的指令-响应格式使模型可以专注于对特定任务的理解。
目标:Alpaca 格式的设计重点在于让模型理解明确的任务指令,以便模型在接到特定任务时能生成更精确的响应。
主要应用:Alpaca 格式被广泛应用于以任务为导向的指令微调任务中,尤其适合单轮任务(如总结、翻译、问答等),并不依赖多轮对话上下文,结构简洁且任务导向清晰。
总结
ShareGPT:适用于多轮对话微调,背景是对多轮自然对话数据的需求。
Alpaca:适用于单轮指令微调,背景是低成本的指令微调需求,通过简单的指令-响应结构实现任务定向训练。
dataset_info.json
包含了所有经过处理的 本地数据集 和 在线数据集。如果使用本地数据集, 务必在 dataset_info.json
中添加对应数据集及其内容的定义
目前支持 Alpaca
格式 和 ShareGPT
的格式
1.Alpaca
针对不同任务,数据集格式要求如下:
- 指令监督微调
- 预训练
- 偏好训练
- KTO
- 多模态
1.指令监督微调
-
样例如下
-
解释
-
instruction
对应的内容是人类指令 -
input
对应内容是人类输入 -
output
对应内容是模型回答在进行指令监督微调时, instruction 列的内容会与 input 列对应内容拼接后作为最终人类的输入,即人类输入为
instruction\ninput
。而output
为模型回答 -
如果指定
system
列,对应内容将被作为系统提示词 -
history 列是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。注意,在指令监督微调时,历史消息中的回答内容也会被用于模型学习
-
-
最终指令微调的格式要求如下
[ { "instruction": "人类指令(必填)", "input": "人类输入(选填)", "output": "模型回答(必填)", "system": "系统提示词(选填)", "history": [ ["第一轮指令(选填)", "第一轮回答(选填)"], ["第二轮指令(选填)", "第二轮回答(选填)"] ] } ]
-
样例如下
[ { "instruction": "今天的天气怎么样?", "input": "", "output": "今天的天气不错,是晴天。", "history": [ [ "今天会下雨吗?", "今天不会下雨,是个好天气。" ], [ "今天适合出去玩吗?", "非常适合,空气质量很好。" ] ] } ]
-
-
对于上述的数据,dataset_info.json 的数据集描述应为
"数据集名称": { "file_name": "data.json", "columns": { "prompt": "instruction", "query": "input", "response": "output", "system": "system", "history": "history" } }