【大模型】大模型指令微调的“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-数据处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/394562.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 日志爆满,删除日志文件,定时清理日志

今天发现网站不能正常访问,于是登陆服务器查找问题。 机智的我随手用命令:df -l 发现 硬盘爆满了,于是就知道问题所在了。 Filesystem 1K-blocks Used Available Use% Mounted on/dev/xvda1 20641404 16963004 16929876 10…

安捷伦N9918A是德keysight N9918B 30khz-26.5g频谱分析仪

Agilent N9918A、Keysight N9918B、 FieldFox 手持式射频和微波组合分析仪,30 kHz - 26.5 GHz 附加功能: 30 kHz 至 26.5 GHz动态范围:100 dBCAT:故障点距离、回波损耗、电缆损耗VNA:S11、S21、S22、S12、幅度和相位…

PMP考试一定要考到3A吗?怎么备考?

PMP(Project Management Professional)认证是全球公认的项目管理专业人士资格认证,它代表着项目管理领域的高水平标准。 在备考PMP考试时,有些赛宝关心是否需要考到3A(即三个领域均为Above Target,超出目标…

GoFly快速开发框架代码市场使用说明

说明 我们框架坚持开源的项目绝不能存在收费项目,所以我们gofly快速开发开源版没有内置代码仓插件,因此需要使用代码市场中的代码包需要再企业版中使用,代码市场插件如下: 图1、社区-代码市场​​​​ 他和企业版管理后台的代码仓…

慢SQL优化的30个思路方案整理

文章目录 (1)索引优化(2)查询重构(3)减少数据扫描量(4)利用缓存(5)分区表(6)优化排序和分组(7)业务查询条件限…

openfoam模拟时取消报错Floating point exception (core dumped),从而看到具体错误内容

一、理论简介: unset FOAM_SIGFPE 是用于在 OpenFOAM 环境中解除对浮点异常(Floating Point Exception, FPE)的信号处理。 FOAM_SIGFPE 环境变量的作用 在 OpenFOAM 中,FOAM_SIGFPE 环境变量用于控制程序对浮点异常&#xff08…

【设计模式】设计模式之观察者模式

文章目录 观察者模式什么是观察者模式引入组成UML图代码实现1. 定义观察者接口2. 定义主题接口3. 实现具体观察者4. 实现具体被观察者5.测试 应用场景优点缺点 观察者模式 什么是观察者模式 观察者模式(Observer Pattern)是一种设计模式 它定义了一种…

BTS4140N:高侧电源开关芯片中文数据手册

芯片概述 : BTS4140N是一款智能高压侧电源开关N沟道垂直功率MOSFET,带电荷泵和电流控制输入、采用智能SIPMOS技术单片集成,提供嵌入式保护和诊断功能。 芯片特征描述 电流控制输入短路保护电流限制欠电压时关断过压保护(包括负载突…

【mars3d】GraphicLayer遍历添加数据,正确拿到数据

import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象 export let graphicLayer // 矢量数据图层 export const mapOptions {scene: {center:{"lat":30.577085,"lng":116.885511,"alt":45203.5,"heading&…

Jenkins参数化构建

目录 一. 准备ansible 二. Gitlab新建子项目 三. Jenkins建立任务,进行初步配置 四. 导入nginx主机的公钥 五. 配置ansible执行脚本 六. 构建测试 一. 准备ansible 在jenkins主机中安装ansible [rootjenkins ~]# yum install -y epel-release [rootjenkins…

【学习笔记】Day 6

一、进度概述 1、《地震勘探原理》第二章 2、“DenseNet” 周报分享 二、详情 1、《地震勘探原理》第二章 注:本来的打算是逐章整理,但是在听老师指导后,明晰了学习目的。故学习方法更改为侧重 “刷” 。不求一遍全弄懂&#xff0c…

AI在商品计划领域的应用

在现代商业环境中,AI驱动的商品计划优化已经成为企业有效管理资源和提高利润的关键因素。 市场预测与库存管理 精准市场预测:以某著名零售品牌为例,该品牌引入了一种基于AI的智能分析工具,帮助实现了精准的市场预测与库存管理。根…

【Linux基础】Linux基本指令(一)

目录 前言一, ls指令二,pwd指令三,cd指令3.1 当前目录与上级目录3.2 绝对路径和相对路径3.3 tree指令 四,创建一个普通文件或目录4.1 touch指令4.2 mkdir指令 五,删除目录或文件5.1 rmdir指令5.2 rm 指令 六&#xff0…

细节持续跟新

1.input的自带光标如何去除 2.阻止事件冒泡 3.获取父亲兄弟的innertext 4.画表格 参考博主链接 前端-HTML表格制作_哔哩哔哩_bilibili 美化

不同环境下RabbitMQ的安装-3 操作RabbitMQ

前面两篇从不同环境下RabbitMQ的安装-1 为什么要使用消息服务 到同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ介绍了关于如何在ARM架构、X86架构和Window系统下如何安装,各位小伙伴可以根据自己的实际开发场景参考安装。 到本篇是一些…

【ARM】CMSIS 软件标准接口

目录 CMSIS:Cortex Microcontroller Software Interface Standard1. 概述2. CMSIS-Core2.1 概述2.2 关键组件2.3 示例代码2.4 详细解释 3. CMSIS-DSP3.1 概述3.2 关键组件3.3 示例代码3.4 详细解释 4. CMSIS-RTOS4.1 概述4.2 关键组件4.3 示例代码4.4 详细解释 5. C…

【案例40】Apache中mod_proxy模块的使用

NC中间件 应用场景:配置了apache的情况,包括uap集群,配置https等场景下均适用;如果是单机(NC单结点情况不存在问题,则不用配置这项; was环境也不用配置此项。) 解决方案:按如下两…

Spring Boot 3.x Rest API最佳实践之API设计

本系列教程将会以企业中API基础功能封装为目标,用最新的Spring Boot 3.x版本来逐步搭建和完善Rest API项目基础架构,并结合实际电商项目中API的实现需求来进行最佳实践。如果觉得对你有帮助,记得点赞收藏,关注小卷,后续…

React性能之--如何避免组件重复渲染?

在react中,我们会发现存在组件会重复渲染,虽然说如果项目不大的话,这点影响不大,但是我们还是尽量避免组件渲染比较好,养成好习惯,尽可能让不管是大小项目,都让性能尽可能优化 。那我们如何避免…

Linux/C 高级——Linux命令

从这里开始,我们展开对Linux/c 高级的学习,首先介绍的是在Linux/c高级中,Linux的部分 目录 1.Linux简介 1.1Linux起源 1.2查看系统版本命令 1.3分层结构 1.4系统关机重启命令 2.Linux安装工具 2.1软件包安装 2.1.1软件包的管理机制 …