数据集的概念理解、格式区别、制作和使用

1.数据集是什么

数据集(dataset)是指用来训练、测试、评估机器学习模型的数据。数据集通常包括以下两个部分:

  1. 训练集(training set):用于训练模型的样本集合。

  2. 测试集(test set):用于评估模型的最终性能。

说明
本文档中的所有下载的所需资源都可以在网盘下载

2.训练集的格式类型

Alpaca格式和ShareGPT格式是两种常用于训练对话式AI模型的数据集格式,它们在结构和应用场景上有一些区别。
你也可以阅读Llama-factory/dataset/README.md了解更多数据集格式的介绍。

2.1 Alpaca 格式:像“做题训练”

背景

Alpaca格式由斯坦福大学团队提出,用于训练指令跟随模型(如Alpaca模型)。其核心是基于指令微调(Instruction Fine-tuning),通过人工构造的指令-输出对,让模型学会根据指令生成符合要求的响应。

数据结构

通常为单轮对话,每条数据包含三个字段:

{  "instruction": "给出三个保持健康的方法。",  // 用户指令  "input": "",                             // 可选,额外输入(可为空)  "output": "1. 定期锻炼... 2. 均衡饮食... 3. 充足睡眠..."  // 期望的模型输出}

核心思想:给模型出题,让它学会“答题”。
例子
假设你教小孩数学,每次给他一道题和一个答案,比如:

  • 题目(instruction):计算3+5等于几?

  • 答案(output):8

特点

  • 单次问答:每次只练一道题,没有上下文。

  • 目标明确:训练模型准确完成“任务”(比如翻译、写诗、回答问题)。

  • 数据可能是人造的:题目和答案可能由人设计,或者机器生成后筛选。

适合场景

  • 教AI模型学会具体技能,比如“把英文翻译成中文”。

  • 不需要对话,只要输入问题,直接输出答案。

2. ShareGPT 格式:像“聊天记录”

背景

ShareGPT格式源于用户分享的真实对话数据(如用户与ChatGPT的交互记录),强调多轮对话的上下文连贯性,更接近真实的人机交互场景。

数据结构

通常为多轮对话,每条数据包含对话轮次:

[  {    "conversations": [      {"role": "human", "content": "如何学习编程?"},      {"role": "gpt", "content": "可以从Python开始..."},      {"role": "human", "content": "推荐一些学习资源?"},      {"role": "gpt", "content": "Codecademy、LeetCode..."}    ]  }]

核心思想:让模型学会“多轮对话”,像真人聊天一样。
例子
你和朋友聊天的记录:

  • 你:今天天气怎么样?

  • 朋友:晴天,28度。

  • 你:适合去爬山吗?

  • 朋友:适合,但注意防晒。

特点

  • 多轮对话:保留完整的聊天记录,AI需要看懂上下文。

  • 角色分明:明确区分“用户说的话”和“AI的回答”。

  • 数据来自真实对话:比如用户和ChatGPT的真实聊天记录。

适合场景

  • 训练聊天机器人,让对话更自然、连贯。

  • 需要AI记住之前的对话内容(比如用户说“我刚刚提到的电影是什么?”)。

2.3 对比总结

Alpaca格式

ShareGPT格式

样子

单次问答(题目→答案)

多轮对话(用户→AI→用户→AI…)

目标

学会完成具体任务(做题)

学会聊天(像真人对话一样)

数据

人造的题目和答案

真实的聊天记录

典型字段

instruction, input, output

conversations(含rolecontent

通俗例子理解

  • Alpaca格式
    你问AI:“写一首关于春天的诗。” → AI直接输出一首诗。

  • ShareGPT格式
    你问AI:“我想去旅游,推荐个地方?”
    AI回答:“云南大理不错。”
    你又问:“有哪些必去景点?”
    AI回答:“洱海、古城、苍山……”

怎么选这两种数据?

  • 如果你想训练AI“完成任务”(比如写代码、回答问题),用Alpaca

  • 如果你想训练AI“和人聊天”,用ShareGPT

简单来说:

  • Alpaca = 做题训练,直奔答案。

  • ShareGPT = 模拟聊天,有来有回。

2.4 数据转换与使用

  • 从ShareGPT到Alpaca
    可将多轮对话拆分为单轮指令-响应对(需注意上下文丢失问题)。

  • 从Alpaca到对话格式
    instruction+input合并为用户输入,output作为模型响应。

2.5 实际应用建议

  1. 混合使用:结合Alpaca的指令数据和ShareGPT的对话数据,可同时提升模型的指令理解能力和多轮交互能力。

  2. 数据清洗:去除噪声、重复或低质量样本。

  3. 格式统一:根据模型需求统一为单轮或多轮格式(如LLaMA偏好多轮对话格式)。

3. 数据集的获取

数据集是训练AI模型的基础,不同用途的数据集来源也各不相同:

3.1 通用数据集的来源

公开的现成数据集

  • 特点:免费或开源,可直接下载使用。

  • 例子

    • Hugging Face Hub:AI界的“应用商店”,有数万个开源数据集(如Alpaca、ShareGPT的官方数据)。

    • Kaggle:数据科学社区,提供各种领域的数据(如用户评论、新闻文章)。

    • 政府/机构开放数据:比如国家统计局、世界银行公开的数据。

2. 用户生成内容(UGC)

  • 特点:来自真实用户的互动记录,贴近实际需求。

  • 例子

    • 聊天记录:用户与AI助手(如ChatGPT)的对话(需脱敏处理)。

    • 社交媒体:知乎的问答和讨论。

    • 评论与论坛:贴吧帖子。

3. 人工构造数据

  • 特点:人工设计问题和答案,针对性更强。

  • 例子

    • 任务指令:比如让标注员写“翻译句子”的指令和答案。

    • 模板生成:用固定模板批量生成数据(如“写一首关于{季节}的诗”)。

4. 网络爬取

  • 特点:用程序自动抓取网页内容,数据量大但需清洗。

  • 例子

    • 各种百科:抓取词条内容作为知识库。

    • 问答网站:抓取问题和回答。

    • 新闻网站:抓取文章用于训练文本生成模型。

5. 合成数据(AI生成)

  • 特点:用大模型自动生成数据,成本低但需筛选。

  • 例子

    • Self-Instruct:让AI自己生成指令和答案(Alpaca数据集的核心方法)。

    • 人工数据增强:对现有数据改写、扩展,增加多样性。

3.2 对话式AI数据集的特殊来源

针对Alpaca、ShareGPT这类对话模型,数据来源更聚焦:

指令-回答对(Alpaca风格)

  • 来源

    • 人工设计:团队编写任务指令(如“写邮件”“解释概念”)。

    • 模型生成:用LLM等生成指令和答案,再人工筛选。

  • 典型例子:斯坦福的Alpaca数据集,包含5.2万条指令-回答对。

真实多轮对话(ShareGPT风格)

  • 来源

    • 用户分享:用户自愿上传与AI的聊天记录(需匿名化)。

    • 平台收集:如ChatGPT的用户对话(需符合隐私政策)。

  • 典型例子:ShareGPT网站上的公开对话记录。

3.3 数据来源的注意事项

  1. 合法性

    • 避免使用未经授权的数据(如盗版书籍、隐私对话)。

    • 遵守平台规则(如某些站点禁止大规模爬取用户内容)。

  2. 数据质量

    • 清洗噪声:删除乱码、广告、重复内容。

    • 过滤低质量内容:如拼写错误、无意义回答。

  3. 多样性

    • 覆盖不同场景(如问答、创作、推理)。

    • 平衡语言风格(正式、口语化、方言等)。

3.4 小白如何获取数据集?

  1. 直接下载现成的

  2. 自己生成

    • 用大模型生成指令-回答对(模仿Alpaca格式)。

    • 记录自己与AI的对话,整理成ShareGPT格式。

  3. 混合使用

    • 结合公开数据和自己构造的数据,提升模型能力。

3.5 一句话总结

数据集的来源 = 公开资源 + 用户生成内容 + 人工构造 + 网络爬取 + AI合成。想训练对话AI,就用现成的Alpaca/ShareGPT数据,或自己用LLM生成!

4. 数据集制作示例

4.1 下载使用现成数据集

4.2 使用LLM生成数据集

QA对直接转换

LLM生成的QA对

easy-dataset

使用ollama下载数据集处理专用模型,如qwen2.5-7b, 然后用easy-dataset生成数据集。
使用qwen2.5-7b的好处是,没有思考过程,相对较快。

ollama run qwen2.5

4.3 自己构造数据集

纯手工自行编辑。

5. Llamafactory中使用自行构建的数据集

5.1 设置dataset_info.json

5.2 导入数据集

5.3 选择并训练模型


数据集的概念理解、格式区别、制作和使用
http://localhost:8090/archives/shu-ju-ji-de-gai-nian-li-jie-ge-shi-qu-bie-zhi-zuo-he-shi-yong
作者
Administrator
发布于
2025年05月06日
更新于
2025年05月06日
许可协议