首页 > 其他分享 >训练集alpaca、sharegpt格式

训练集alpaca、sharegpt格式

时间:2024-10-25 21:32:28浏览次数:2  
标签:alpaca name value 生成 sharegpt 随机数 格式 type

LLaMA-Factory微调支持的格式

支持 alpaca 格式和 sharegpt 格式的数据集。

Alpaca格式

格式:

[
  {
    "instruction": "人类指令(必填)",
    "input": "人类输入(选填)",
    "output": "模型回答(必填)",
    "system": "系统提示词(选填)",
    "history": [
      ["第一轮指令(选填)", "第一轮回答(选填)"],
      ["第二轮指令(选填)", "第二轮回答(选填)"]
    ]
  }
]

instruction:指令,即需要做的事情的抽象(如总结一句话);
input:具体要做的事情(如具体是什么话);
output:模型的回答;
system:系统提示词(如什么风格、什么角色);
history:是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。在指令监督微调时,历史消息中的回答内容也会被用于模型学习。

举例:

[
  {
    "instruction": "识别并解释给定列表中的两个科学理论:细胞理论和日心说。",
    "input": "",
    "output": "细胞理论是生物科学的一个理论,它认为所有生命体都是由微小的基本单元——细胞所构成。这是生物学的一个基础理论,认为细胞是所有生物的基本结构和功能单位,所有的生物都是由一个或多个细胞组成,细胞只能通过细胞分裂产生新的细胞。这一理论由薛定谔、施瓦内和雪莱于1839年首次提出。\n\n日心说是指太阳是太阳系的中心,也就是说,行星围绕太阳旋转的理论。这个理论打破了传统的地心说观点,认为地球并不是宇宙的中心。日心说的提出者是尼古拉·哥白尼,他在16世纪初发表了他的著作《天体运行论》,阐述了太阳系行星围绕太阳运行的模型,为天文学的发展做出了巨大贡献。"
  },
  {
    "instruction": "输入三支篮球队的名称并生成一个适当的口号。",
    "input": "输入:俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队。",
    "output": "输出: \"雷霆,公牛和网队:各显神通,角逐群雄!\""
  },
  {
    "instruction": "比较以下两位著名人物,使用特征列表并以句子形式提供输出。",
    "input": "人物1:阿尔伯特·爱因斯坦\n人物2:斯蒂芬·霍金\n特征:智力、教育、对世界的影响",
    "output": "阿尔伯特·爱因斯坦和斯蒂芬·霍金都是拥有极其出色智力的人物。两人都取得过非常高的教育成就,他们推进了科学发展并在世界范围内产生了深远的影响。爱因斯坦以其相对论和质能关系公式而闻名,而霍金以其关于黑洞和宇宙的发现而著称。两位科学家都以其深厚的学识和非凡的贡献影响了世界。"
  },
  {
    "instruction": "请根据以下文章构建一个需要回答的问题。",
    "input": "",
    "output": "我不好意思,您没有提供任何信息或文章来供我根据它构建问题。 请提供相应的文章或信息,以便我能够帮助您构建问题。"
  }
]

参考:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/alpaca_zh_demo.json

Sharegpt 格式

格式:

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

相比 alpaca 格式的数据集,sharegpt 格式支持更多的角色种类,例如 human、gpt、observation、function 等等。它们构成一个对象列表呈现在 conversations 列中,用于模拟真实AI对话过程。
注意:其中 human 和 observation 必须出现在奇数位置,gpt 和 function 必须出现在偶数位置。

举例:

[
  {
    "conversations": [
      {
        "from": "human",
        "value": "我需要为John Doe生成一张发票。他购买了2个苹果,每个$1,以及3根香蕉,每根$0.5。"
      },
      {
        "from": "function_call",
        "value": "{\"name\": \"generate_invoice\", \"arguments\": {\"customer_name\": \"约翰·多伊\", \"items\": [{\"name\": \"苹果\", \"quantity\": 2, \"price\": 1}, {\"name\": \"香蕉\", \"quantity\": 3, \"price\": 0.5}]}}"
      },
      {
        "from": "observation",
        "value": "{\"invoice_id\": \"INV12345\", \"customer_name\": \"约翰·多伊\", \"items\": [{\"name\": \"苹果\", \"quantity\": 2, \"price\": 1, \"total\": 2}, {\"name\": \"香蕉\", \"quantity\": 3, \"price\": 0.5, \"total\": 1.5}], \"total\": 3.5, \"status\": \"生成\"}"
      },
      {
        "from": "gpt",
        "value": "发票已成功生成。发票编号为INV12345。约翰·多伊的总金额为$3.5。发票包含2个苹果,总金额为$2,以及3根香蕉,总金额为$1.5。"
      }
    ],
    "tools": "[{\"name\": \"generate_invoice\", \"description\": \"生成发票\", \"parameters\": {\"type\": \"object\", \"properties\": {\"customer_name\": {\"type\": \"string\", \"description\": \"客户名称\"}, \"items\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"name\": {\"type\": \"string\", \"description\": \"The item name\"}, \"quantity\": {\"type\": \"integer\", \"description\": \"The quantity of the item\"}, \"price\": {\"type\": \"number\", \"description\": \"The price per unit\"}}, \"required\": [\"name\", \"quantity\", \"price\"]}}}, \"required\": [\"customer_name\", \"items\"]}}, {\"name\": \"generate_password\", \"description\": \"生成随机密码\", \"parameters\": {\"type\": \"object\", \"properties\": {\"length\": {\"type\": \"integer\", \"description\": \"密码的长度\"}}, \"required\": [\"length\"]}}]"
  },
  {
    "conversations": [
      {
        "from": "human",
        "value": "假设你有一个需要随机数的Java程序,范围在0到10之间。你可以使用什么代码片段来生成这样的数字?\n\n下面是一个示例代码片段,它使用Math.random()方法来生成一个在0到1之间的随机数,然后缩放并四舍五入结果,得到一个在0到10之间的随机数:\n\n```java\nint randomNumber = (int) (Math.random() * 11);\n```\n\n在Java中是否有更有效的方法来生成随机数?你会如何修改代码以生成具有不同范围或分布的随机数?"
      },
      {
        "from": "gpt",
        "value": "您提供的代码片段是Java中生成随机数的一种常见且高效的方法。然而,如果您需要对随机数生成有更多的控制,您可以使用java.util.Random类,它提供了更多生成随机数的选项。\n\n要生成一个在不同范围内的随机数,您可以修改代码以调整缩放因子。例如,要生成一个在1到10之间的随机数,您可以使用以下代码:\n\nint randomNumber = (int) (Math.random() * 10) + 1;\n\n要生成具有不同分布的随机数,您可以使用各种技术,如正态分布、指数分布或自定义分布。生成正态分布的一种方法是使用Box-Muller变换。这里有一个代码示例,它生成具有正态分布的随机数:\n\nRandom random = new Random();\ndouble u1 = random.nextDouble();\ndouble u2 = random.nextDouble();\ndouble z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\ndouble mean = 5;\ndouble stdDev = 2;\nint randomNumber = (int) (z * stdDev + mean);\n\n这段代码生成一个具有均值5和标准差2的正态分布随机数。您可以调整均值和标准差来生成具有不同分布的随机数。"
      },
      {
        "from": "human",
        "value": "你能解释一下算法分析中的大O记法概念吗?"
      },
      {
        "from": "gpt",
        "value": "是的,大O表示法是一种描述算法性能随输入数据大小增加的方法。它用于估计算法在最坏情况下的时间复杂度或空间复杂度。大O中的“O”代表“数量级”,这意味着随着输入大小的增加,算法所需的操作数以一定的速率增长。\n\n例如,如果我们有一个需要n步才能解决大小为n的问题的算法,那么时间复杂度可以表示为O(n),这意味着操作数随着输入大小线性增长。如果我们有一个需要n^2步才能解决大小为n的问题的算法,那么时间复杂度可以表示为O(n^2),这意味着操作数随着输入大小二次方增长。\n\n还有其他几种大O表示法,如O(log n)、O(n log n)、O(2^n)等,它们代表了随着输入大小增加的不同操作数增长速率。通过分析算法的大O表示法,我们可以比较不同算法的性能,并选择给定问题最有效的算法。\n\n您是否有关于大O表示法或算法分析的特定问题?"
      }
    ],
    "tools": "[]"
  },
]

参考:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/glaive_toolcall_zh_demo.json

总结

  • Alpaca 格式适用于指令驱动的任务,如文本生成、摘要、翻译等,具有清晰的指令、输入和输出字段。
  • ShareGPT 格式则侧重于多轮对话,适用于对话系统的训练,模拟用户与 AI 的交互。

如果是基于指令的任务,Alpaca格式是理想的选择;如果是对话模型,ShareGPT格式会更合适。

标签:alpaca,name,value,生成,sharegpt,随机数,格式,type
From: https://www.cnblogs.com/judes/p/18503312

相关文章

  • C++获取当前时间并格式化为字符串
    代码一#include<iostream>#include<chrono>intmain(){ autonowTime=std::chrono::system_clock::now(); autonowTimeT=std::chrono::system_clock::to_time_t(nowTime); autopNowTm=std::localtime(&nowTimeT); charbuf[128]; std::strfti......
  • RAW格式和JPG格式有什么区别
    RAW格式和JPG格式的区别主要包括:1.数据保存形式不同;2.编辑灵活性不同;3.文件大小和存储空间不同;4.颜色深度差异;5.适用场景不同;6.兼容性差异;7.输出质量的对比。其中,数据保存形式的差异是二者之间的核心区别,RAW为未经压缩处理的原始数据,而JPG则是有损压缩后的图像。1、数据保存形......
  • modsecurity: 规则例子: 根据参数进行判断/规则的通用格式
    一,根据参数的值进行判断:1,对所有参数进行判断规则:SecRuleARGS"@rxattack""phase:1,log,deny,id:1"测试:http://a.b.com/index.html?name=attack2,根据变量名进行判断规则:判断name变量中是否包含adminSecRuleARGS:name"@rxadmin""phase:1,log,deny,id:2012"测......
  • 音乐伴奏使用常见问题:音乐伴奏使用什么格式最好?
    音乐伴奏是指在演唱或演奏过程中提供的背景音乐或辅助旋律,它对于提升整体音乐表现力至关重要。不同的场合对音乐伴奏有不同的需求,因此了解伴奏文件的格式及其特点对于选择正确的格式至关重要。以下是几种在音乐伴奏中常用的音频文件格式及其适用场景。目前主流常用音乐伴......
  • 如何使用 IDM 下载 M3U8 视频并转换为常用格式图文教程
    M3U8文件通常用于HTTP Live Streaming(HLS)协议,这种格式非常适合在线视频流播放。然而,有时我们需要将这些视频下载到本地,以便离线观看或进行进一步编辑。本教程将指导您如何使用Internet Download Manager(IDM)下载M3U8视频,并介绍如何使用简鹿视频格式转换器将下载的视频转......
  • FPGA、VHDL 基于RISC-V格式的16位位缩模型机设计
    项目地址:FPGA、VHDL基于RISC-V格式的16位位缩模型机设计设计目的实现基于RISC-V格式的16位MCU设计,参考RISC-V的基本格式,进行位数缩减。实现RISC-V中寄存器加法add,立即数加法addi,半字加载lh,半字存储sh,不等条件跳转bne,相等条件跳转beq,无条件跳转链接jal。实现立即寻址、寄存......
  • ACM与蓝桥杯竞赛指南 基本输入输出格式六
    A+BforInput-OutputPractice(VI)题目描述:Yourtaskistocalculatethesumofsomeintegers.输入格式:Inputcontainsmultipletestcases,andonecaseoneline.EachcasestartswithanintegerN,andthenNintegersfollowinthesameline.输出格......
  • ACM与蓝桥杯竞赛指南 基本输入输出格式五
    有了上一题的基础,再来看个复杂点的输入输出,1089题,A+BV大家可以先阅读题目一开始就告诉有多少组N,每一组又告诉有多少个数字M。大家可以结合样例理解:A+BforInput-OutputPractice(V)题目描述:Yourtaskistocalculatethesumofsomeintegers.输入:  24 1......
  • 简单的格式化配置ESLint 配合 Prettier
    要让编辑器(例如VSCode)自动处理多余的空格、自动格式化代码(如将<div></div>转换为<div/>),你可以安装和配置以下工具: 1.Prettier(推荐) Prettier是一款流行的代码格式化工具,支持多种语言和格式化规则。它可以自动处理多余的空格、代码缩进、以及将空标签转换为自闭合标签......
  • 如何使用格式工厂将 PDF 转换为 Word 文档
    格式工厂是一款多功能的多媒体文件转换工具,它不仅可以转换音频和视频文件,还可以处理文档格式之间的转换。下面是一篇详细的教程,简鹿办公教你如何使用格式工厂将PDF文档转换为Word(.docx)格式。需要注意的是,如果PDF文件是由扫描件组成的图片,则可能无法直接转换为可编辑的文本......