【大模型】大模型指令微调的“Prompt”模板_大模型微调数据集格式

文章目录
  • 一、微调数据集格式
  • 二、常用的指令监督微调模板
  • * 2.1 指令跟随格式(Alpaca)
    
    • 2.2 多轮对话格式(ShareGPT)
    • 2.3 其他形式
    • 2.4 常见模板
  • 参考资料

一、微调数据集格式

在进行大模型微调的过程中,我们会发现“Prompt”格式太多。不同的模型对应不同的微调数据集,不同数据集的指令数据形式有所不同。

  • yahma / alpaca-cleaned :这是斯坦福大学发布的原始 alpaca 数据集的清理版本,包含有约52K条数据。数据集主页:https://huggingface.co/datasets/yahma/alpaca-cleaned
    在这里插入图片描述

  • Open-Orca / OpenOrca
    在这里插入图片描述

二、常用的指令监督微调模板

指令监督微调(Instruct Tuning) 通过让模型学习详细的指令以及对应的回答来优化模型在特定指令下的表现。

目前常见微调数据集的格式包括以下几种:

  • 指令跟随格式:以Alpaca为代表
  • 多轮对话格式:以ShareGPT为代表
  • 其他辅助格式:文本数据等
2.1 指令跟随格式(Alpaca)

指令跟随形式是指用户输入指令,模型按照指令的要求输出结果的格式。这种形式的数据集通常采用json文件格式存储,典型的如Alpaca-52k数据集。Alpaca-52k是一个开源的遵循指令的,最初用来微调LLaMA模型以得到Alpaca-7B模型的数据集,包含了52k条指令数据。

Alpaca的格式有两类,一类是instruction/output格式,另一类是 instruction / input / output 格式。各列的含义如下:

  • instruction :对应的内容为人类指令
  • input :对应的内容为人类输入
  • output :对应的内容为模型回答。

数据样例来自:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/alpaca_zh_demo.json/#L42

(1)instruction / output 格式

  {
    "instruction": "用“黎明”、“天空”和“广阔”这三个词组成一个句子。",
    "output": "随着黎明的到来,天空逐渐明亮,一片广阔的视野展现在眼前。"
  }

(2)instruction / input / output 格式

  {
    "instruction": "计算这些物品的总费用。 ",
    "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
    "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
  }

在进行指令监督微调时, instruction 列对应的内容会与 input 列对应的内容拼接后作为最终的人类输入,即人类输入为 instruction\ninput。而 output 列对应的内容为模型回答。

然而,由于生成Alpaca数据集的 self-instruct 技术得到的数据集本身存在一些瑕疵,因此数据集需要进一步清洗和改进,例如 alpaca-cleanedalpaca-gpt4 都是基于原始数据集清洗后的数据集。此外还有中文翻译版本。这些数据集通常包含几万个指令对,文件大小约为40MB左右的json格式文件。

2.2 多轮对话格式(ShareGPT)

多轮对话形式是指用户和模型之间以对话的形式进行,模型将通过与用户进行多轮的交互最终来达到用户的需求。典型的如训练Vicuna模型所使用的 ShareGPT 数据集。

ShareGPT本身是一个与ChatGPT(GPT-4)模型的聊天记录分享平台,它托管了大量由用户挑选的对话数据集,这些聊天记录通常展示的是聊天机器人自然流畅、具有创意的回答。Vicuna模型通过收集该平台的数据,其训练出来的模型具有较好的多轮对话能力。

相比 alpaca 格式的数据集, sharegpt 格式支持 更多 的角色种类,例如 humangptobservationfunction 等等。它们构成一个对象列表呈现在 conversations 列中。 下面是 sharegpt 格式的一个例子:

{
  "conversations": [
    {
      "from": "human",
      "value": "你好,我出生于1990年5月15日。你能告诉我我今天几岁了吗?"
    },
    {
      "from": "function_call",
      "value": "{\"name\": \"calculate_age\", \"arguments\": {\"birthdate\": \"1990-05-15\"}}"
    },
    {
      "from": "observation",
      "value": "{\"age\": 31}"
    },
    {
      "from": "gpt",
      "value": "根据我的计算,你今天31岁了。"
    }
  ],
  "tools": "[{\"name\": \"calculate_age\", \"description\": \"根据出生日期计算年龄\", \"parameters\": {\"type\": \"object\", \"properties\": {\"birthdate\": {\"type\": \"string\", \"description\": \"出生日期以YYYY-MM-DD格式表示\"}}, \"required\": [\"birthdate\"]}}]"
}

注意其中 human 和 observation 必须出现在奇数位置,gpt 和 function 必须出现在偶数位置。

[
  {
    "conversations": [
      {
        "from": "human",
        "value": "人类指令"
      },
      {
        "from": "function_call",
        "value": "工具参数"
      },
      {
        "from": "observation",
        "value": "工具结果"
      },
      {
        "from": "gpt",
        "value": "模型回答"
      }
    ],
    "system": "系统提示词(选填)",
    "tools": "工具描述(选填)"
  }
]
2.3 其他形式

除了上述提到的数据格式,还有一些数据格式不易转化为对话形式,例如纯文本文档。另外,还有一些针对特定用途的数据集,例如文本总结数据集以及根据纯文本生成对话的数据集,如RefGPT文章提到的方案。根据文本的不同功能,它们还包括调用API的格式和调用数据库语言的格式等。

当然,除非以纯文本的形式存在,否则这些格式都可以转换为指令跟随或多轮对话的格式。 下面给出两个具体的示例:

  • 纯文本数据集
    大语言模型通过学习未被标记的文本进行预训练,从而学习语言的表征。通常,预训练数据集从互联网上获得,因为互联网上提供了大量的不同领域的文本信息,有助于提升模型的泛化能力。 预训练数据集文本描述格式如下:

    [
    {“text”: “document”},
    {“text”: “document”}
    ]

在预训练时,只有 text 列中的 内容 (即document)会用于模型学习。

  • 偏好数据集
    偏好数据集用于奖励模型训练、DPO 训练和 ORPO 训练。对于系统指令和人类输入,偏好数据集给出了一个更优的回答和一个更差的回答。偏好数据集需要在 chosen 列中提供更优的回答,并在 rejected 列中提供更差的回答。
    基于 Alpaca 的偏好数据集,在一轮问答中其格式如下:

    [
    {
    “instruction”: “人类指令(必填)”,
    “input”: “人类输入(选填)”,
    “chosen”: “优质回答(必填)”,
    “rejected”: “劣质回答(必填)”
    }
    ]

2.4 常见模板

参考博客:[NLP]LLM—大模型指令微调中的“Prompt”

参考资料

  • [NLP]LLM—大模型指令微调中的“Prompt”
  • LLaMA Factory-数据处理

如果你对AI大模型应用感兴趣,这套大模型学习资料一定对你有用。

1.大模型应用学习大纲

AI大模型应用所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

2.从入门到精通全套视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
在这里插入图片描述
在这里插入图片描述

3.技术文档和电子书

整理了行业内PDF书籍、行业报告、文档,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

请添加图片描述

朋友们如果有需要全套资料包,可以点下面卡片获取,无偿分享!

<think>好的,我现在需要处理用户关于大模型微调数据集格式及原理的问题。首先,我得回忆一下用户之前的问题和我的回答,确保信息连贯。用户之前可能已经了解了一些微调的基本概念,现在需要更深入的数据集相关知识。 用户提到了引用[1]和[2],其中引用[2]特别提到构造数据集微调时的数据集问题。用户的需求是了解数据集格式和相关原理,所以需要详细解释常见的格式如JSONL、CSV、文本格式,以及它们的结构。 接下来,我需要考虑数据预处理步骤,比如清洗、分词、格式化,这些对模型训练的影响。然后,原理部分要涉及监督学习微调(SFT)、指令数据集、对齐机制,比如RLHF,以及数据分布的重要性。还要结合引用中的内容,比如构造数据集的方法和微调策略。 用户可能需要实际例子,所以准备一个JSONL的示例会有帮助。同时,生成的相关问题需要覆盖数据构造、格式转换、预处理影响、小数据微调和小样本学习,这些都是用户可能进一步询问的方向。 最后,确保回答结构清晰,分点说明,使用正确的中文术语和LaTeX格式,比如公式用$$...$$,并正确添加引用标识。检查是否有遗漏的关键点,比如数据集质量的重要性,或者不同微调方法对数据的需求差异。</think># 大模型微调数据集格式与原理详解 ## 一、数据集格式解析 大模型微调常用三种核心数据格式: 1. **JSONL格式** (主流选择) ```json {"prompt": "解释量子力学", "response": "量子力学是研究微观粒子运动规律的物理学分支..."} {"prompt": "写一首关于春天的诗", "response": "春风拂面柳丝长,细雨润物百花香..."} ``` 特点:每行独立JSON对象,支持复杂结构,适合多轮对话(可添加`history`字段)[^2] 2. **指令模板格式** ```text ### Instruction: 写一篇环保倡议书 ### Response: 亲爱的市民朋友们,地球是我们共同的家园... ``` 3. **纯文本格式** ```text 用户:如何提高英语听力? 助手:建议采用精听与泛听结合的方法,首先选择适合自己水平的材料... ``` 适用于领域适应微调(如医学文献、法律条文) ## 二、数据处理原理 数据构造遵循监督式微调(SFT)的基本公式: $$ \mathcal{L}(\theta) = -\sum_{(x,y)\in D} \log P_\theta(y|x) $$ 其中$x$为输入,$y$为目标输出,$D$为训练数据集[^1] 关键处理步骤: 1. **数据清洗**:过滤噪声数据(错误标注、低质量内容) 2. **分词对齐**:使用与基础模型一致的tokenizer处理文本 3. **长度控制**:根据模型最大上下文长度(如4096 tokens)进行截断或分块 4. **格式统一**:确保指令-响应对格式的一致性 ## 三、核心设计原则 1. **任务对齐性**:数据分布应与目标任务高度匹配 - 对话任务:包含多轮对话历史 - 代码生成:需包含代码注释与实现 2. **多样性保障**:通过数据增强技术(如回译、语义改写)扩展样本 3. **质量优先**:人工标注的1万条高质量数据往往优于10万条自动生成数据[^2] 4. **领域适应性**:特殊领域(如法律、医疗)需要构建专业术语词表 ## 四、进阶数据构造 对于强化学习微调(RLHF),需要构建: ```json { "chosen": "环保的方式包括垃圾分类...", "rejected": "随便扔垃圾也没关系..." } ``` 通过对比学习实现输出对齐,目标函数为: $$ \mathcal{L}_{\text{RLHF}} = \mathbb{E}_{(x,y_w,y_l)\sim D}[\log \sigma(r_\phi(y_w|x) - r_\phi(y_l|x))] $$ 其中$r_\phi$为奖励模型[^1] ## 五、典型数据示例 ```json { "instruction": "将以下句子翻译成英文", "input": "人工智能正在改变世界", "output": "Artificial intelligence is transforming the world", "task_type": "translation" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值