Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
目前 Easy Dataset 支持客户端、NPM、Docker 三种启动方式,所有启动方式均完全在本地处理数据,无需担心数据隐私问题。
为了解决各种本地部署的环境问题,可以直接用客户端启动,支持以下平台:
本项目基于 Next 构建,所以本地只要有 Node 环境就可以通过 NPM 直接启动,适合开发者,需要调试项目的同学:
克隆仓库:
安装依赖:
启动服务器:
注意:使用 NPM 启动的情况下,当系统发布新版本后,需要重新执行 git pull
拉取最新代码,并且重新执行 npm install
、npm run build
、npm run start
三个步骤。
如果你想自行构建镜像,在云服务或者内网环境私有部署,可以使用项目根目录中的 Dockerfile
:
克隆仓库:
构建 Docker 镜像:
运行容器:
注意: 请将
{YOUR_LOCAL_DB_PATH}
替换为你希望存储本地数据库的实际路径。
目前各行各业都在积极探索微调自己行业的大模型,其实微调的过程不是难事,目前市面上也有比较多成熟的工具,比较难的是前期的数据集准备的环节,数据集的质量直接决定了模型微调后的效果,高质量领域数据集的构建始终面临多重挑战,大家在构建数据集的过程中可能会普遍遇到以下问题:
完全不知道怎么做,目前就在纯人工去做,想提高效率
直接将文档丢给 AI ,但是 AI 对于大文件生成的 QA 对效果比较差
AI 本身有上下文的限制,一次不能生成太多的问题,分批生成后面又会生成重复的问题
已经有整理出来的数据集了,想有一个批量管理数据集的地方,可以进行标注和验证
对于数据集有细分领域的需求,不知道如何去构建领域标签
想要微调推理模型,但是不知道推理微调数据集中的 COT 怎么构造
想从一个格式的数据集转换成另一个格式的数据集,不知道怎么转换
为了解决这些问题,Easy DataSet 应运而生,通过系统性解决方案实现从文献解析到数据集构造、标注、导出、评估的全流程闭环,以下是工具预期要解决的问题:
能够支持多种文献处理,将各种格式的文献处理为模型可理解的格式
能够做到基于 AI 辅助生成数据集,而且不丢失准确性
能够解决由于模型上下文限制导致的截断问题
能够批量构造数据集,能生成 COT,而且不生成重复的数据集,
能够构建领域标签,并且按照领域树组织数据集
能够合理的管理数据集,方便对数据集进行质量校验等操作
能够方便的对生成的数据集进行格式转换,比如 Alpaca 和 ShareGPT 格式
能够基于数据集对模型进行有效评估
Easy DataSet 以 项目制 为核心单元,贯穿 「文献处理-问题生成-答案构建-标签管理-数据导出」 全链路:
模型配置中心:支持 OpenAI 格式 API(如 OpenAI、DeepSeek、各种三方模型提供商)及本地模型(Ollama),内置模型测试 Playground,支持多模型对比。
智能文献处理:采用 「章节感知递归分块」 算法,基于 Markdown 结构实现语义级分割,确保单块内容完整(最小/最大长度可配),附带大纲提取与摘要生成。
领域标签体系:AI 自动生成二级领域树(如 「体育-足球」 ),支持手动修正,为每个 QA 对绑定精准标签,降低重复率。
智能数据生成:从领域信息中提取问题,基于问题 + 领域信息智能构造数据,并支持多维度数据标注、多格式数据导出。
问题批量生成:基于文本块语义,按字符密度动态生成问题(可配置),支持批量创建与中断恢复。
答案智能构建:关联原始文本块生成答案,支持推理模型(如DeepSeek-R1)生成带思维链(COT)的答案。
质量校验机制:提供问题/答案的批量删除、手动编辑及AI优化(输入指令自动润色),确保数据可用。
多格式导出:支持 Alpaca、ShareGPT 标准格式,自定义字段映射,包含领域标签与 COT 信息。
数据集广场:聚合 HuggingFace、Kaggle 等多平台数据源,支持关键字一键检索,解决 「数据从哪来」 的初始难题。
文本分割基于设置的长度范围进行操作,将输入文本按照规则分割成合适的段落,以便后续处理。
功能:设定分割后每个文本片段的最小字符长度,当前默认值为 1500。若某段文本长度小于该值,会与相邻文本段合并,直至满足最小长度要求。
设置方法:在 “Minimum Length” 后的输入框中输入期望的数值(需为正整数)。
数值不宜过大,否则可能导致文本片段数量过少,影响后续处理的灵活性;也不宜过小,避免文本片段过于零碎。
功能:限制分割后每个文本片段的最大字符长度,当前默认值为 2000。超过该长度的文本会被分割成多个片段。
设置方法:在 “Maximum Split Length” 后的输入框中输入合适的数值(需为正整数且大于最小长度值)。
功能:设定生成问题的最大字符长度,当前默认值为 240。确保生成的问题在合理长度范围内,便于阅读和理解。
设置方法:在 “Question Generation Length” 后的输入框中输入期望的数值(需为正整数)。
功能:设置生成问题时移除问号的概率,当前默认值为 60%。可根据具体需求调整问题格式。
设置方法:在 “Removing Question Marks Probability” 后的输入框中输入 0 - 100 之间的整数(代表百分比概率)。
功能:用于限制同时生成问题和生成数据集的任务数量,避免因任务过多占用过多系统资源,导致系统性能下降或任务失败。
设置方法:根据系统资源情况和任务需求,设置合适的并发任务数量上限。具体操作可能需在相关设置界面找到对应的输入框或滑块进行调整(若存在)。
功能:MinerU Token 用于基于 MinerU AIP 转换 PDF 的身份验证和授权。
设置方法:在对应的输入框中输入有效的 MinerU Token。需注意,MinerU Token 有效期仅为 14 天,过期后需及时更换新的 Token 以保证功能正常使用。
功能:限制自定义大规模视觉模型相关任务的并发数量,合理分配系统资源,保障模型处理任务的稳定性和效率。
设置方法:根据模型的计算复杂度和系统资源情况,谨慎设置并发限制,过高可能导致系统负载过大,过低则可能无法充分利用系统资源。
功能:Hugging Face Token 用于在与 Hugging Face 平台交互时进行身份验证,实现数据集上传等功能(目前 Hugging Face 功能尚未实现,此 Token 设置暂时仅为预留)。
设置方法:在 “hf_” 后的输入框中输入 Hugging Face 平台生成的 Token。
目前平台已默认内置了部分模型提供商,仅需要填入模型提供商对应的密钥即可:
注意:不在以上列表的模型提供商也是支持配置的,模型提供商、API 接口地址、API Key、模型名称这些信息都是支持自定义输入的,只要是符合 OPEN AI 格式的 API,平台均可兼容。
点击刷新模型列表,可查看该提供商提供的所有模型(这里也可以手动输入模型名称):
支持配置语言模型(用于完成文本生成任务)和视觉模型(用于完成视觉分析任务):
另外也支持配置模型的温度和最大输出 Token:
Temperature:控制生成文本的随机性,温度越高,结果越随机多样,反之越稳定保守。
Max Token:限制模型生成文本的长度,以 Token 为单位,防止输出过长。
支持 Ollama ,可自动拉取本地已经部署的模型列表:
支持配置多个模型,可通过右上角模型下拉框切换模型:
支持同时选择多个模型(最多三个)进行模型回答效果的对比,可以方便大家测试在不同的任务场景下,哪个模型的效果更好:
支持测试视觉模型:
目前平台支持 Markdwon、PDF、DOCX、TXT 四种格式的文献处理:
模型对于具备良好结构划分的 Markdown 文献理解效果最好,建议大家优先上传 Markdwon 文件。
由于 PDF 格式相对特殊,平台针对不同场景支持了四种不同的 PDF 处理方式,当上传的文献中含有 PDF 格式的文献时,会触发弹框:
专注于快速识别简单 PDF 文件的关键轮廓,处理规整纯文本报告、简单说明文档等效率高,但无法精准解析含大量公式、图表等复杂内容的文件。
可以识别复杂的 PDF 文件,包括公式和图表。该方式要求在模型配置中添加视觉模型配置,通过自定义的视觉模型来实现对 PDF 文件的解析。可以根据具体需求定制解析规则和模型参数,以适应不同类型的复杂 PDF 文件。
当选择 MinerU API 解析、自定义视觉模型解析时,PDF 处理时间可能较长,请耐心等待:
可通过 「设置-任务设置」 配置自定义视觉模型的最大并发数量,及最多同时处理多少页 PDF,并发数量越大,处理速度也快,注意考虑模型提供商的并发量限制。
在选择好文件和处理方式,点击上传前,注意一定要提前在右上角选择模型,否则会导致处理失败:
注意,这一步大家没必要选推理模型(比如 DeepSeek-R1),选择一个普通的问答模型比如豆包、千问都可以,在这一步推理模型并不会起到优势,而且会拖慢处理速度。
点击上传后,会将传入的文献进行了智能的文本分割,我们可以在分割列表里看到被拆分好的文本块,以及每个文本块的字数:
可以查看每个文本块的详情:
可以对每个文本块进行编辑:
可以筛选指定文献已经生成的文本块:
可预览文献详情(转换为 Markdown),下载文献(Markdown),删除文献:
预览文献:
可以直接到 下载适合自己系统的安装包:
如果遇到 Github 下载较慢,可以使用网盘下载:
是一个强大的大模型数据集创建工具。
设置时需考虑服务器的硬件性能、网络带宽等因素,若并发任务过多,可能导致任务排队等待时间过长,甚至出现任务超时失败的情况。另外,此处可能会受浏览器的最大并发数量限制影响,可以手动扩大本地浏览器的最大并发数量,参考:
可通过 「设置 - 任务设置」 配置 MinerU API Key,调用 MinerU API 进行解析,可深度解析含公式、图表的复杂 PDF 文件,适用于学术论文、技术报告等场景,文件越复杂处理速度越慢。可以通过 申请 MinerU API Key(注意有效期为 14 天,过期需重新申配置)。
跳转至 MinerU 平台: ,用户可在此平台解析 PDF,并下载 Markdwon 文件,再回平台重新上传。
关于文本分块的原理,以及想自定义分块规则以适应不同的文献结构,可查看:《》 章节。
ollama
Ollama
http://127.0.0.1:11434/api
openai
OpenAI
https://api.openai.com/v1/
siliconcloud
硅基流动
https://api.ap.siliconflow.com/v1/
deepseek
DeepSeek
https://api.deepseek.com/v1/
302ai
302.AI
https://api.302.ai/v1/
zhipu
智谱AI
https://open.bigmodel.cn/api/paas/v4/
Doubao
火山引擎
https://ark.cn-beijing.volces.com/api/v3/
groq
Groq
https://api.groq.com/openai
grok
Grok
https://api.x.ai
openRouter
OpenRouter
https://openrouter.ai/api/v1/
alibailian
阿里云百炼
https://dashscope.aliyuncs.com/compatible-mode/v1
切换至领域树 Tab,我们可以看到基于 AI 智能分析出的文献的领域树,以及从文献提取的原始目录:
在后续生成问题以及数据集的任务中,平台会基于这个领域树去构建,并且把生成的问题和数据集映射到每个领域标签上。领域树可以让每条数据集具备全局理解的能力,并且减少生成重复数据集的可能性。
如果你觉得 AI 生成的领域树,有哪些不准确或者不完善的地方,也可以直接手动添加或者更改和删除标签,建议把领域树的划分确认的更准确后,再去生成问题。
当删除、新增一个新的文献时,会提供三种模式:
修改领域树:根据新增或删除的文档修改当前领域树,仅影响发生变更的部分
重建领域树:基于所有文档内容生成全新的领域树
保持不变:保持当前领域树结构不变,不进行任何修改保持当前领域树不变
任务完成后,可在文本块中查看已经生成好的问题。
可对已生成问题的文本块、未生成问题的文本块进行筛选:
可批量、全选文本块,并批量构造问题:
可以实时查看批量任务的进度:
每个文本块生成多少问题,是由 「项目设置 - 任务设置」 里的生成问题的最大长度决定的,默认设置是每 240 个字符生成一个问题,大家 2000 字符左右的文本块生成了 8 个问题,大家可以根据自己文献的信息密度来灵活调整:
还可以控制生成的问题中消除 ?的比例(默认将消除 60%)。
在实际问答任务中,用户的问题并不总是会携带 ?消除一定比例的 ? 有助于提升微调效果
可以控制批量任务中的最大并发数量,(默认最大并发 5 个任务)。
注意,部分模型提供商会对最大并发数量进行限制,调整过大的值可能导致批量任务失败,建议灵活测试调整。
例如,在下面的自定义提示词中,我们:
通过自定义全局提示词要求必须使用英文
通过自定义问题生成提示词要求问题必须保持精简
通过自定义答案生成提示词要求答案必须风趣幽默
最终干预后的效果:
在 Easy Dataset 中,通过 「设置 - 任务设置 - 分块设置」 可自定义设置文献处理时的不同分块策略。
文本分块的作用,就是把文档拆分成小片段,方便后续的应用程序使用,通过分块,我们可以:
解决文档长度不一致的问题:实际的文档库中,文本的篇幅长短不一。通过分割,能保证所有文档都能以相同的方式进行处理。
突破模型的限制:不少模型都有最大输入长度的限制。把文档分割后,就可以处理那些原本因为太长而无法使用的文档。
提升表示质量:对于长文档而言,如果想一次性提取过多信息,提取质量就可能下降,而分割文档能让每个片段的表示更加精准、有针对性。
提高检索的精准度:在信息检索系统里,分割文档可以让搜索结果更细致,使查询内容能更精确地匹配到文档里相关的部分。
优化计算资源的利用:处理小片段文本更节省内存,而且还能更高效地并行处理任务。
最简单也是容易想到的分割策略,就是按照文档的长度来划分。这种方法简单又有效,能确保每个片段都不会超过设定的长度上限。基于长度分割的优势主要体现在这几个方面:实现起来简单易懂、分割出的片段长度比较一致、能很方便地根据不同模型的要求进行调整。基于长度的分割又可以细分为:
基于词元分割:按照词元数量来分割文本,在和语言模型配合使用时非常实用。
基于字符分割:依据字符数量来分割文本,这种方式在不同类型的文本中都能保持较好的一致性。
选择固定长度分块时,可配置:
separator: "\n\n":指定文本分割的边界标识,默认使用连续两个换行符(\n)作为分隔符。这意味着文本会在每个空行处被截断,将原始内容拆分为独立的段落块。例如,一篇包含多个空行分隔的文章会被按段落分割成多个子文本。通过调整分隔符(如改为 "\n" 或 "---"),可以灵活控制分割粒度,适用于不同格式的文本(如代码、Markdown文档等)。
chunkSize: 1000:定义每个分割块的最大字符长度上限。当文本被分隔符拆分后,若某个块的字符数超过此值,则会被进一步细分为更小的块,确保所有块均不超过指定大小。例如,一个包含3000字符的段落会被拆分为至少3个块(每个≤1000字符)。此参数直接影响后续处理的粒度:较小的值会生成更多、更精细的块,适合需要精确上下文的场景;较大的值则减少块数量,保留更完整的语义单元。
chunkOverlap: 200:控制相邻分割块之间的重叠字符数。在每个块的末尾,会保留指定数量的字符作为与下一个块的重叠区域。例如,当 chunkOverlap: 200 时,前一个块的最后200个字符会重复出现在下一个块的开头。这种设计确保语义连续性,避免关键信息因分割被截断,尤其在依赖上下文的任务(如检索、问答)中至关重要。重叠区域作为过渡缓冲区,帮助模型在处理单个块时仍能获取相邻内容的上下文信息。
文本自然地组织成段落、句子和单词等层次结构。我们可以利用这种内在结构来制定分割策略,使分割后的文本保持自然语言的流畅性,在分割块内保持语义连贯,并适应不同程度的文本粒度。首先分割器会试图保持较大的单元(如段落)完整。如果一个单元超过了块大小限制,它会进入下一个层次(如句子)。如有必要,这个过程会一直持续到单词级别。
文本结构(递归)分块同样支持配置最大分块大小、重叠字符数,另外支持配置多个自定义分隔符:
基于 Markdown 的文档结构分块,是平台默认的分块策略:
首先需要设定文本块的最小、最大分割长度;
然后自动对章节(比如 Markdown 里的 #、##、###
)进行识别;
对已识别到的章节字数进行计数,在恰好位于 > 最小分割长度 同时 < 最大分割长度的前提下进行分段;
当遇到超长段落(超出最大分割长度)的时候,在执行递归分段算法,确保语义的完整性。
当分块的目标中含有大量代码时,传统的分割方式都不适用,可能会对代码进行阶段,Easy Dataset 也提供了基于智能代码语意理解能力的分割方式,可以选择目标语言进行分块:
当以上分块策略均不能满足你的需求时,可选择使用可视化自定义分块功能,首先找到要分块的文献,点击查看详情:
打开文件预览视图后,点击右上角开启自定义分块模式:
在需要分块的位置选中文本:
上方将展示当前分块的位置、分块数量以及每个块的字符数:
点击保存分块:
保存后,将完全替换掉当前文献历史的分块内容:
数据增强面临的问题
当前,大模型的训练高度依赖训练数据的规模与质量,但现实往往面临着两大矛盾:
数据稀缺性:高质量语料(如学术文献、专业文本)总量有限,公开数据集(如 C4、RefinedWeb )经严格过滤后仅保留不到 10%
的原始内容,难以支撑模型的持续扩展和训练。
重复退化问题:在传统深度学习中,重复训练是可以继续提升模型性能的,但 LLM
训练中,过度重复会导致模型泛化能力下降、优化稳定性变差,尤其是参数规模超千亿的模型。
例如,当使用
1950
亿 tokens 的高质量数据训练 130 亿参数模型时,若直接重复 10 次,模型在推理任务(如 GSM8K 数学题)的准确率会下降 23%,验证损失上升17%
。这表明:数据重复并非简单的“量的补充”,而是需要质的多样性重构。
字节跳动 Seed 团队最近发表了一篇论文:《Reformulation for Pretraining Data Augmentation
》
其中提出了一种新的 Massive Genre-Audience(MGA) 方法,通过轻量级框架将现有语料系统重构为多样化变体,核心思路是:基于不同 “体裁(Genre)” 和 “受众(Audience)” 生成内容变体,在保留核心知识的同时创造语义丰富的新数据。
虽然论文主要是表述预训练的数据集增强,但其思路同样适用于在模型微调阶段的数据集构造。
“Massive Genre-Audience
”(大规模类型-受众)是论文中提出的 MGA(Massive Genre-Audience Reformulation)
方法的核心概念,其含义可从以下两方面具体理解:
大规模的多样性生成:指该方法通过系统设计,能够生成海量的内容变体。例如,论文中提到每次推理会生成 5 对“类型-受众”组合,使原始文档扩展为 5 个新文档,实现 3.9 倍的 Token 数扩展。
覆盖广泛的场景:强调其适用于大规模语料库的扩展,解决数据稀缺和重复问题,支持模型在数十亿参数规模下的高效训练。
Genre(类型): 指内容的“知识表达框架”,通过多个维度定义,包括:
沟通目的(如教育、分析、叙事);
内容结构(如分步教程、学术论文、对话体);
语言风格(如严谨学术风、通俗故事风);
知识深度(如初学者入门、专业研究者深度分析)。 例如,将同一篇科普文章重构为“学术论文”或“儿童故事”,会采用不同的结构和语言风格,但保留核心知识。
Audience(受众): 指内容的目标读者群体,结合以下特征:
人口统计学因素(年龄、职业、教育背景,如“12-15岁中学生”“医学专业研究生”);
知识背景与动机(如“对化学感兴趣的初学者”“需要教学素材的中学教师”)。 例如,针对“办公室工作人员”的急救指南会侧重实用性和通俗表达,而针对“医学生”的版本则会包含更多专业术语和深度理论。
通过“类型-受众”对驱动内容多样性:每个“类型-受众”组合定义了一种重构方向,使同一原始文本能以不同形式呈现(如将科学知识转化为面向儿童的故事、面向学者的分析报告等),从而避免数据重复,增强模型对不同场景的泛化能力。
轻量级与可扩展性:利用小模型自适应生成“类型-受众”对,无需依赖100亿参数以上的大型模型,降低计算成本,适合大规模语料库扩展。
“Massive Genre-Audience”
本质上是一种数据增强策略,通过系统化地生成海量“类型-受众”组合,将现有文本重构为多样化的变体,既保留核心信息,又覆盖不同表达形式和读者群体,对模型训练数据进行增强,从而提升模型性能。
在该论文中,MGA 的技术实现分为三个关键步骤:
阶段1:Genre-Audience对生成
利用 3.3B 参数的混合专家模型(MoE),从原始文档中自适应提取5组不同的体裁-受众组合。例如,一篇科普文章可被映射为 “学术论文-科研人员”、“对话体-老年人”、“教科书-中学生”
等组合,每个组合定义内容的表达框架(如结构、语言风格、知识深度)和受众特征(如年龄、教育背景、专业领域)。
阶段2:文本重构
使用量化后的轻量级工具模型,根据每对 Genre-Audience
的要求重构文本。例如,将 “气候变化” 原始文本重构为面向小学生的对话体故事时,会简化术语、增加具象案例;重构为学术报告时,则强化数据论证和理论框架。
质量控制:Limited Consistency准则 引入 LLM 裁判模型,以 “有限一致性” 为标准评估重构文本:允许风格、表达顺序的差异,但要求核心信息可追溯至原始文本。例如,若重构文本丢失所有原始信息点或语义偏差过大,则判定为无效(评分<3)。
论文中的框架将 1950亿 tokens
的 FineWeb-Edu
数据集扩展为 7700亿 tokens
的 MGACorpus
,token
数量扩大 3.9
倍,且每个原始文档生成5个语义不同的变体。
相比现有数据增强方案(如 Phi-4、Cosmopedia
),MGA 的核心优势在于:
不依赖超大模型:无需 120 亿参数以上的生成模型(如GPT-4),仅用 3.3B MoE
模型即可实现高质量重构,计算成本降低 40%。
免复杂种子系统:传统方法需预定义种子模板(如QA对、维基风格),而 MGA
直接从原始文本动态生成 Genre-Audience
对,避免人工设计的局限性。
平衡多样性与保真度:通过 prompt
工程调节“信息保留”与“内容变异”的权衡。例如,严格模式(SLM-Strict
)要求 80%
以上核心信息保留,适合知识密集型任务;宽松模式(SLM-Relaxed
)允许更多创意扩展,适合泛化能力训练。
实验表明,使用 MGA
思路增强的数据集训练模型,在数据受限场景下显著优于传统方案:
跨模型规模的一致性提升:在13亿到130亿参数模型中,MGA-Expansion
方案较原始数据训练的基线模型:
推理任务(如TriviaQA、GSM8K)准确率提升 2.03%-15.47%
,例如17亿参数模型在 GSM8K
的解题率从 7.81%
提升至 13.87%
;
知识任务(如 MMLU-Pro
)得分提升 2.15%
,表明多样化重构帮助模型捕捉知识的多维度表达;
抗重复能力:当原始数据重复10次时,基线模型验证损失上升0.25,而MGA处理后损失仅上升0.08。
与其他合成数据的对比:对比 Cosmopedia、Nemotron
等方案,MGA
在 377M
参数模型上的平均性能(37.28)超越 Cosmopedia(35.57)和多数 Nemotron 策略(如“知识提取”35.72)。其核心原因在于:
Genre-Audience驱动的多样性:每个原始文本生成5种不同体裁和受众的变体,如“医学指南”可重构为“医生学术报告”“患者科普手册”“医学院教材”等,覆盖不同语言风格和知识深度,避免合成数据的模式坍塌。
领域适应性:在数学(Open-Web-Math)、编程(Python-Edu)等专业领域,MGA 重构数据使 17 亿参数模型的验证损失分别降低 0.12 和 0.09,而传统重写方法(如WRAP)效果有限。
MGA 的有效性源于对 LLM 学习机制的三点优化:
对抗数据重复导致的“记忆偏差”:原始数据重复会使模型过度记忆特定表达形式(如网页模板、固定句式),而MGA通过体裁变异(如从说明文到对话体)打破这种模式,迫使模型学习抽象语义。例如,在FineWeb-Edu数据中,原始文本结尾常包含“选择网站”的标准化提示,重复训练会使模型在该位置的预测损失降低22%,但MGA重构后,模型在该类噪声位置的损失反而上升,表明其更关注内容本身而非格式。
促进“泛化性学习”而非“特异性记忆”: 实验发现,使用MGA数据训练的模型在真实数据(如FineWeb-Edu)上的验证损失略高,但在外域任务(如ARC科学推理)上表现更优。这是因为模型优先学习跨体裁的通用模式,而非记住特定数据集的分布特征。
缓解“合成数据坍塌”问题:传统合成方法易因种子模板有限导致数据分布偏移(如QA对格式同质化),而MGA通过动态生成Genre-Audience对,使合成数据的嵌入分布与原始数据保持重叠但扩展(如t-SNE可视化中,Base模型生成的变体既覆盖原始数据簇,又延伸至新区域)。
在 Easy Dataset 1.3.6 版本中,引入了上述论文中提到的 MGA 数据增强方案。
我们正常创建一个用于测试 MGA 的新项目:
配置好模型后,在文献处理模型上传一些文献:
默认情况下,直接生成问题和数据集不会采用 MGA 增强方案。
我们可以针对特定需要启用 MGA 的文献来生成 Genre(类型)、Audience(受众)
(GA)对:
GA 对可以由 AI 自动生成(基于文献关键内容进行提取),也可以手动添加:
选择 AI 自动生成,会默认生成 5 个 GA 对:
你可以对自动生成的 GA 对进行选择启用,自定义变更,或者删除操作:
点击保存后,文献列表处将展示文献已经生成的 GA 对:
如果文献较多,你也可以选择为所有文献批量生产 GA 对。
对于已生成 GA 对的文献,可选择是追加模式还是覆盖模式:
生成完成后,点击文献列表处的 GA 标签,依然可以查看文献的 GA 详情:
在文献启用 MGA 模式(已经生成了 GA 对)后,后续再基于该文献构造问题和数据集都将基于文献下的所有 GA 进行生成:
在默认 240 字符生成一个问题的设置下,对于 1500 字左右的文本块,基础模式下将生成 6 个问题,但是在生成了 5 个 GA 的情况下将生成 30 个问题。
注意:启用 MGA 模式后生成的问题和数据集数量相比之前会成倍增长,所以会消耗更多的 Token,以及使数据集生成速度变慢。
例如在幽默科普型(对技术感兴趣的中学生)GA 下:
生成的一个数据集样例为:
想象有一位“大教授”(大模型),知识渊博但“脾气很大”:培养他需要巨额学费(训练成本高),请他讲课需要豪华教室(高算力硬件),每节课费用惊人(推理成本高)。而“小学生”(小模型)虽然乖巧轻便(低部署成本),但知识面有限。
模型蒸馏就是让大教授把解题思路 “浓缩” 成小抄,教给小学生的过程。
大教授不会直接说 “这道题选A”,而是给出一组概率分布(比如 A 选项 80% 可能,B 选项 20% 可能),这种“软答案”包含了他的思考逻辑。
小学生通过模仿大教授的思路,既能学到核心知识,又不用承担高额成本,就像用“解题思路小抄”快速掌握重点。
简单理解:从大模型中提取原始数据集、推理过程,再微调小模型。
大模型虽强,但实际应用中面临两大难题:
算力门槛高:训练一个千亿参数模型需消耗数百万美元,普通企业和个人根本玩不起。
部署困难:大模型运行需要几十 GB 内存,普通个人设备根本“装不下”。
蒸馏的核心价值:个人和小型企业没有能力部署大参数模型,但可以从大模型蒸馏出特定领域的小模型来使用,在大幅降低部署成本的同时,也能够保持特定领域下的使用效果。
DeepSeek 推出的系列开源蒸馏模型:
李飞飞团队的论文 《s1:Simple test- time scaling》 中提到:仅花费 50 美元,就训练出一个比肩 ChatGPT o1 和 DeepSeek R1 的模型,基于通义的开源模型 Qwen2.5-32B 进行的微调,而微调所用的数据集,其中一部分蒸馏自 Google Gemini 2.0 Flash Thinking。
这个模型的诞生,是先通过知识蒸馏,从 Gemini API 获取推理轨迹和答案,辅助筛选出 1000 个高质量的数据样本。然后,再用这个数据集,对通义 Qwen2.5-32B 进行微调,最终得到性能表现不错的 s1 模型。
蒸馏
小模型模仿大模型的解题思路
轻量化部署(手机、企业私有云)
微调
用特定数据给模型“补课”(如医疗数据)
垂直领域定制(如法律、医疗问答)
RAG
模型调用外部知识库“作弊”
企业文档检索(如内部培训资料)
准备“小抄”(软标签生成)
大教授先“做一遍题”:用原始数据(如“这部电影很棒”)输入大模型,生成概率分布。
小学生“刷题”(模型训练)
小模型输入同样数据,输出自己的预测(如“正面85%,负面15%”),对比大教授的“小抄”计算差距(损失函数)。
通过反复调整参数(反向传播),让小模型的答案越来越接近大教授的思路。
结合“标准答案”(软硬标签结合)
小模型既要学大教授的思路(软标签),也要保证基础题正确率(硬标签,如“猫就是猫”),通过平衡系数(α)调节两者比重,避免“学偏”。
在模型蒸馏过程中,数据集的构造是非常重要的,直接决定蒸馏模型的质量,需要如下要求:
覆盖任务场景:数据集需与原始任务(如图像分类、自然语言处理等)的真实分布一致,确保教师模型和学生模型学习到的数据特征具有实际意义。
多样性与平衡性:数据需包含足够的样本多样性(如不同类别、噪声水平、边缘情况等),避免因数据偏差导致蒸馏后的模型泛化能力不足。
为了满足这样的要求,我们在特定领域上肯定不能完全随机提取数据集,在 Easy Dataset 中的思路是:
先通过顶级主题(默认使用项目名称),构造多级领域标签,从而构造完整的领域树,在基于 “学生模型” 从领域树的叶子结点提取问题,最终使用 “教师模型” 为问题逐个生成答案和思维过程。
我们创建一个体育与运动(Physical Education and Sports)的新项目:
然后我们来到数据蒸馏模块,点击生成顶级标签:
此操作可以我们从顶级主题(默认是项目名称)生成 N 个子主题(标签),数量可自定义输入,任务成功后,将在对话框生成标签预览:
我们可以点击每个子主题上的添加子标签,可以继续生成多层子主题:
为了保证子主题生成的相关性,生成多层子主题将传入完整的标签路径:
多级领域标签树构建完成后,可以开启从叶子标签上提取问题:
我们可以选择生成问题的数量,另外提取问题时也将传入完整领域标签路径:
生成完成后,可以对问题进行预览:
可以从领域树叶子结点上看到已生成的问题:
然后可以在每个问题上点击生成答案:
也可以到问题管理模块为已生成的问题批量生产答案(蒸馏出的问题由于未关联文本块,默认展示为 Distilled Content):
如果你不需要精细化的控制以上的每一步,可以选择全自动蒸馏数据集:
在配置框中,我们可以看到如下选项:
蒸馏主题(默认为项目名称)
生产领域树标签的层级(默认为两层)
每层生成的标签数量(默认为 10 个)
每个子标签生产的问题数量(默认为 10 个)
任务开始后,我们可以看到详细的任务进度,包括构建标签、问题、答案的具体进度:
同时打开历史数据目录(Open Data Directory(History))、当前数据目录(Open Data Directory)
将历史数据目录下的所有文件夹移动至当前数据目录:
重启客户端,将弹出数据迁移弹框,点击开始迁移
迁移成功后,可在新版本使用历史数据。
系统会根据当前用户选择的语言决定最终生成数据集的语言,目前支持中、英两种语言。当前默认语言环境为中文,如果需要生成英文数据集,需要手动切换至英文。
目前支持 OpenAI 标准协议 的模型接入,兼容 Ollama,系统只是内置了一些常见的模型配置,如果未找到可以自定义模型提供商、 模型名称、API地址、密钥 。
系统在很多情况下会要求模型按照规定 JSON 格式输出,如果模型本身的理解能力、上下文长度不足,则输出可能不稳定,建议更换参数量较大、上下文长度较大的模型。
任务的处理速度大部分情况下取决于选择的模型本身的处理速度,如果是本地模型,请检查资源利用率;如果是远程模型,建议更换更快更稳定的平台。
很有可能触发了模型的限流策略、常见于未充值的硅基流动、免费的 OpenRouter 模型,可以手动将任务配置里的并发处理数量调小,目前默认是 5 。
可以在项目配置 - 提示词配置增加自定义提示词进行主动干预。
🔧 修复
选择模型后刷新列表跨域问题 → 修复模型列表刷新时的跨域请求错误,确保不同域下模型数据正常加载。
上传 DOCX 文件处理超时 → 优化文件解析线程池配置,解决大文件处理时的超时异常。
删除文献时原始目录删除失败 → 修正文件系统操作逻辑,确保文献删除时关联的原始目录同步清理。
⚡ 优化
Docker 打包脚本 → 优化镜像构建流程,减少冗余依赖,提升打包效率。
数据蒸馏任务问题生成 → 问题生成时不再包含标签序号,适配无结构化格式需求。
数据集详情 Token 展示 → 在数据集详情页新增 Token 数量统计,直观显示文本长度(支持模型输入限制参考)。
✨ 新功能
🔧 修复
数据集确认/保存失败 → 修复因权限校验异常或网络波动导致的数据集保存失败问题,提升操作稳定性。
修改文本块后筛选条件失效 → 解决文本块内容更新后,筛选条件(如标签、状态)未同步刷新的问题。
硅基流动默认 API 错误 → 修正默认配置中硅基流动 API 地址及认证参数,确保模型调用正常。
导出自定义格式数据集丢失标签 → 恢复自定义格式导出时标签字段的正常提取,支持保留完整元数据。
⚡ 优化
Windows 安装路径自定义 → 安装程序新增路径选择功能,默认不再强制安装至 C 盘,支持用户指定安装目录。
Alpaca 数据集导出配置优化
字段选择:支持切换问题使用 instruction
或 input
字段,适配不同模型训练需求。
自定义指令:允许手动输入或修改 instruction 内容,提升数据生成灵活性。
🔧 修复
领域树视图下问题无法展示 → 修复领域树节点展开后问题列表空白的异常,确保层级结构正常渲染。
自定义视觉模型解析失效 → 恢复自定义视觉模型对 PDF/图片的解析功能,优化模型加载逻辑。
多文件文本块排序错乱 → 解决跨文件文本块混合排序时的顺序混乱问题。
新版本升级后数据库同步失败 → 修复升级过程中本地数据库与后台数据同步异常,确保版本迭代数据完整性。
🔧 修复
修复文本块待生成问题筛选失效的问题
修复文本块排序错乱的问题
修复上传文档后不等待接口响应直接刷新业务的问题
⚡ 优化
文本块查询时剔除包含“distill content”的无效文本块
✨ 新功能:后台异步任务
背景:原前端同步执行批量任务易受浏览器并发限制,导致页面卡顿。 优化:将任务迁移至后台异步处理,提升大规模数据操作效率。
支持的异步任务类型
自动提取问题:创建任务后,后台自动批量处理未生成问题的文本块,支持配置并发量。
自动生成数据集:后台自动为未生成答案的问题批量生成答案,释放前端资源。
交互改进
任务状态图标:右上角显示实时进度,点击查看任务详情、日志及异常处理选项。
✨ 新功能
新模块:蒸馏模块
数据集一键上传 Huggingface
支持将数据集直接推送至 Huggingface 平台,方便模型训练与共享
⚡ 优化
项目管理增强
支持删除待升级、升级失败状态的项目
新增“打开项目文件夹”功能,快速定位目标项目路径
领域树性能优化
问题节点改为按需加载,大幅提升领域树视图的查询速度
顶部导航栏样式
优化布局和视觉设计,提升操作便捷性
数据集详情页渲染
答案内容支持 Markdown 格式渲染,增强可读性
数据存储优化
数据集存储时不再包含关联文本块原始内容,节省约大量存储空间
🔧 修复
修复数据集优化过程中意外生成 COT 的问题
修复文本处理页上传时已移除文件仍被处理致报错的问题
⚡ 优化
将本地文件存储重构为本地数据库存储,大幅优化大量数据下的使用体验
随机取出问题中的问号(支持配置)
优化多项功能使用体验
✨ 新功能
领域树灵活管理模式
新增/删除文献时支持三种模式:
修订模式:仅修正新增/删除文献相关的领域树节点,最小化影响现有结构
完全重建模式:基于所有文献目录重新生成领域树(现有逻辑)
锁定模式:固定当前领域树,新增/删除文献不触发更新
多种文本分块策略
Markdown分块:根据文档标题自动分割,保持语义完整性(适用于结构化Markdown)
自定义分割符递归分块:按优先级递归尝试多级分隔符(可配置),适合复杂文档
自定义分割符固定长度分块:按指定分隔符切分后组合为固定长度(可配置)
Token分块:基于Token数量分块(非字符数),适配模型输入要求
程序代码智能分块:根据编程语言语法结构智能分割,避免语法断裂
可视化自定义分块
支持通过图形界面手动调整分块边界,实时预览分块效果
客户端工具增强
新增本地日志存储,可一键打开日志目录排查问题
新增清除缓存功能,支持清理历史日志和数据库备份文件
本次更新在修复系统问题的基础上,对存储方式进行了重大优化,将本地文件存储重构为本地数据库存储,为提升大量数据下的使用体验带来大幅改进。由于此次改动较大,特发布 beta 版本供大家体验。如果大家在使用本版本过程中遇到任何问题,欢迎通过 Issues 提交反馈,帮助我们进一步完善产品。
🔧 修复
修复数据集优化过程中意外生成 COT 的问题
修复了文本处理页上传时已移除文件仍被处理致报错的问题
⚡ 优化
将本地文件存储重构为本地数据库存储,大幅优化大量数据下的使用体验
随机取出问题中的问号(支持配置)
优化多项功能使用体验
✨ 新功能
客户端新增本地日志存储,可打开日志目录排查问题
客户端新增清除缓存功能,可清理历史日志文件和备份的数据库文件
🔧 修复
修复第一次配置模型报错的问题
修复 Docker 打包镜像报错的问题
⚡ 优化
使用 OPEN AI SDK 对模型交互接口进行重构,提升兼容性
✨ 新功能
支持视觉模型配置
支持使用自定义视觉模型解析 PDF,准确率更高
模型测试支持发送图片,对视觉模型进行测试
数据集详情页支持查看所属文本块
支持用户自己编辑文本块
支持下载和预览查看解析好的 Markdown 文件
⚡ 优化
增强模型默认最大输出 Token 限制
去除更新失败弹窗
去除部分干扰错误日志输出
✨ 新功能
支持一键打开客户端数据目录
支持模型温度、最大生成 Token 数量配置
支持两种 PDF 文件解析(基础解析、MinerU 解析)
支持数据集导出 CSV 格式
🔧 修复
修复领域树视图下无法选中问题、删除问题失败的 Bug
修复升级新版本链接可能不准确的问题
⚡ 优化
去除答案和思维链中多余的换行符
去除更新失败弹窗、更新下载最新安装包地址
✨ 新功能
文献管理支持已生成、未生成问题的筛选
🔧 修复
修复文本块排序不准确的问题
⚡ 优化
下调默认并发量为 3 (解决触发部分模型限流问题)
优化问题生成提示词,提升问题生成质量
下调最小分割字符数为 100,上调最大分割字符数为 10000
当模型未按标准格式输出时,日志增加原始输出信息
✨ 新功能
支持编辑问题、自定义问题
支持数据集直接在 LLaMa Factory 中使用
支持配置用户自定义提示词
🔧 修复
修复 extractThinkChain 报错的问题
修复 NPM 依赖弃用问题
修复问题筛选,全选联动的问题
⚡ 优化
优化上传多个文献时删除文献后重新构建领域树的操作
客户端打开后默认最大化,不再全屏
优化思维链内容,去除参考文献的话术
🔧 修复
修复缓存导致的项目列表为空的问题
修复问题分割字数配置不生效的问题
修复部分特殊文件名导致的报错问题
修复部分 Loading 状态失效的问题
⚡ 优化
客户端内打开外部链接,默认跳转浏览器
继续优化数据集结果生成的成功率
大量问题下领域树展示性能优化
✨ 新功能
新建项目时可选择复用其他项目的模型配置
单个项目支持上传多个文件(共享领域树)
问题管理增加已生成/未生成数据集的筛选
支持 docx 类型文件上传
支持一键多平台搜索:
内置多个可公开获取数据集的平台:
同步:
GA(载体、受众)对的数据集增强 引入 “载体(Generator)- 受众(Audience)” 配对机制,根据数据应用场景生成针对性内容。 文档:
无文献蒸馏模式:无需依赖现有文献,直接从大模型中蒸馏生成数据集 ,查看文档:
欢迎使用 Easy Dataset(以下简称“本软件”或“我们”)。我们高度重视您的隐私保护,本隐私协议将说明我们如何处理与保护您的个人信息和数据。请在使用本软件前仔细阅读并理解本协议:
为了最大限度保护您的隐私安全,我们明确承诺:
不会收集、保存、传输或处理您输入到本软件中的第三方服务 API Key 信息;
不会收集、保存、传输或处理您在使用本软件过程中产生的任何数据集内容,包括但不限于用户上传的文件、自定义标注数据、分析结果及其他业务数据;
不会收集、保存、传输或处理任何可识别个人身份的敏感信息(如姓名、联系方式、地址等)。
本软件支持您自行申请并配置的第三方服务(如数据存储平台、分析工具、API 接口等),以完成数据集的管理、处理或分析功能。您使用的第三方服务由您选择的提供商独立运营并完全由其负责,Easy Dataset 仅作为本地工具提供与第三方服务的接口调用功能。
因此:
所有您通过本软件与第三方服务交互产生的数据(包括数据集、操作记录等)均与 Easy Dataset 无关,我们既不参与数据的存储,也不会进行任何形式的数据传输或中转;
您需要自行查看并接受对应第三方服务提供商的隐私协议及相关政策,这些服务的隐私协议可访问各提供商官方网站进行查看。
您需自行承担因使用第三方服务提供商而可能涉及的隐私风险。具体隐私政策、数据安全措施与相关责任,请查阅所选服务提供商官方网站相关内容,我们对此不承担任何责任。
本协议可能随软件版本更新进行适当调整,请您定期关注。协议发生实质性变更时,我们将以适当方式(如软件弹窗、公告等)提醒您。
若您对本协议内容或 Easy Dataset 隐私保护措施存在任何疑问,欢迎通过官方渠道(邮箱/客服电话/在线表单)联系我们。感谢您选择并信任 Easy Dataset,我们将持续为您提供安全可靠的产品体验。
很多同学弄不清楚,给模型喂的数据究竟需要什么样的格式,实际上就是还没分清楚几种常见的微调任务类型。为了在不同的业务场景下解决不同的问题,我们可能采取的微调任务类型是不一样的,那所用的数据集格式肯定也会有所差别。所以,为了弄清楚我们要整理什么样的数据集格式,先要搞清楚我们要做的微调属于哪种任务场景,下面是我梳理的对常见微调任务的一个分类图:
从零开始训练一个模型,一般这个流程叫做预训练,这个过程的目的就是让模型掌握语言的通用规律,以及基本的语言理解能力。目前我们市面上主流的大模型,比如 ChatGPT、DeepDeek
等等,都属于 “自回归模型”,而 “自回归模型” 的本质就是:
用过去的自己来预测未来的自己。
我们都知道,大模型输出文本的时候是按照 Token
来输出的。Token
简单理解就是把句子拆成最小语义单元(如中文拆字 / 词,英文拆词或子词)。回答被拆分出了 4 个 Token
,每个 Token
都是根据前面的问题 + 已经输出的 Token
预测出来的。在预训练的数据集中,这些关键字出现在一起的次数越多,那模型输出的概率越大。所以我们的数据集越丰富,模型预测 Token
输出的准确率就越高,最终的输出效果也就更好。所以在预训练的过程中,我们一般用海量非结构化文本(比如书籍、网页、对话),通过「预测下一个词」来训练模型,这也就意味着预训练的数据集格式是没有明确要求的,例如下面这些数据我们可以直接用于训练:但是在特定领域的微调上,就不能用非结构化文本了,我们可以这样理解:
预训练阶段:就像婴儿学说话,听到的是各种声音(非结构化),不管是什么,直接让他多听,慢慢多就能学会语言规律;
指令微调阶段:就像教小孩做事「听到问题要回答」,需要明确告诉他这是什么问题,正确答案是什么。如果继续用没规律(非结构化)对话,他对你要让他学的事情就不会印象太深刻。
而预训练的过程,我们可以理解成一个无需人工监督,自己学习和锻炼能力的过程,对应的,想要让模型具备特定的能力,就要用到监督微调了。
监督微调(Supervised Fine-Tuning,SFT
),顾名思义就是需要人去监督微调的过程。比如:我们想训练一个中英翻译模型,把英文翻译为中文就是一个非常明确的需求场景,所以在数据集里只需要有输入、输出就可以了:
1.2.1 指令微调
那假如我们想让模型具备多种语言理解的能力呢,这时候只靠两个字段就不够了,因为在 Input
是同样一个词语的时候,根据我们想让模型完成的不同任务,output
可能是不一样的,这时候我们就要多引入一个指令的概念,比如这个数据集:
我们告诉模型明确的指令:将英文翻译为法语,再将 Input
(英文)、Output
(法语)告诉模型, 模型就能准确理解要做什么了,这就是指令微调。指令微调常见的业务场景:
智能教育:实现作业辅导、规划个性化学习路径、辅助语言学习。
智能办公:可处理文档、邮件,进行日程管理。
智能翻译:应用于专业领域翻译、特定场景翻译及多语言交互。
数据分析:让模型根据分析需求指令,对数据进行准确解读和洞察。
指令微调典型开源数据集(包含指令、输入、输出字段):
Alpaca
数据集:由斯坦福大学创建,通过微调模型生成,包含约 5.2 万个指令跟随数据样本。涵盖多种任务,如常识问答、文本生成等,助力模型在指令理解和生成方面优化。
1.2.2 对话微调
对话微调(Dialogue Tuning
) 是通过多轮对话数据训练模型生成连贯、符合语境的回复,强调对话历史的上下文理解和回复的自然流畅性。其核心在于教会模型处理对话中的逻辑关系、情感表达和角色身份,对话微调的数据集通常包含对话的上下文以及对应的回复。
对话微调数据集的核心特点:包含多轮对话上下文、标注角色身份,注重回复连贯性与逻辑性。通过这样的数据,模型可以学习到在不同对话场景下如何生成合适的回复,从而提高对话的连贯性和相关性。对话微调常见的业务场景:
智能客服系统:提升客服机器人在处理用户咨询时的对话能力,能够更准确地理解用户意图并提供解决方案。
聊天机器人:让聊天机器人更自然地与用户进行多轮对话,提高用户体验。
语音助手:优化语音助手在语音交互中的对话表现,使其更符合用户的期望。
对话微调典型开源数据集:
一个用于训练对话模型的多语言问答数据集,其内容结构和风格符合 ShareGPT 对话格式,数据集中的每个样本为一个对话轮次,包含人类提问和模型回答,数据覆盖多语言(英语、西班牙语、中文、俄语等)和多样化领域。
1.2.3 领域适配
领域适配(Domain Adaptation
)是指将模型在特定领域的数据上进行微调,使其更好地适应特定领域的任务和需求。
领域适配数据集的核心特点:领域术语标注(如医学本体库、法律术语库)、复杂规则建模(如药物相互作用、合同条款逻辑)、场景化数据增强(如模拟问诊对话、合同审查流程);领域适配典型的业务场景:
医疗领域适配:用于病历分析、疾病诊断辅助、医疗文献检索等。
法律领域适配:辅助法律文件分析、案例检索、合同审查等。
金融领域适配:用于风险评估、市场分析报告生成、金融产品推荐等。
领域适配典型开源数据集:
基于
PubMed
文献的医学问答数据集,包含医学研究相关问题,适合医疗信息抽取与领域适配任务。
1.2.4 文本分类
文本分类(Text Classification
),是自然语言处理中的一个经典任务,目的就是通过标注数据训练模型对文本进行类别预测或标签分配。这类任务需要模型理解文本语义与类别特征的关系,适用于需要结构化输出的场景。
文本分类微调的典型业务场景:
情感分析:商品评论情感极性识别(正面/负面/中性)
内容审核:检测违规内容(涉政/暴力/广告)
新闻分类:自动归类至财经/科技/体育等栏目
意图识别:用户query分类(咨询/投诉/比价)
文本分类典型开源数据集:
imdb
大型电影评论数据集,包含用户评论到电影评分的映射关系,适用于对评论进行积极、负面分类的微调任务。
1.2.5 模型推理微调
对于推理模型的微调其实是监督微调的一种特殊形式,通过在数据集中显式标注思维链(Chain of Thought, COT
),训练模型不仅给出最终答案,还能生成逻辑推导过程。其核心在于让模型学会「分步思考」,适用于需要复杂逻辑推理的场景(如数学证明、代码调试)。在用于推理模型微调的数据集中,通常需要额外包含模型思考过程的部分:
注意:其实并不是所有任务都适合用推理模型,因为推理模型的幻觉比较大,有些情况选择推理模型反而会起到相反的效果,在处理简单明确的任务时,推理模型可能会把问题复杂化,导致思考过度、响应较慢,甚至增加幻觉的风险。比如如果你让推理模型去完成检索、解释类的任务时,当它找不到可以参考的信息就会按照自己的思考过程进行输出,结果并不一定准确。下面则是一些适合用于推理模型微调的场景:
代码生成与调试:推理模型能够理解复杂的编程问题,生成高效的代码解决方案,并辅助开发人员进行代码调试。
数学问题求解:在数学建模、复杂计算和逻辑推理任务中,推理模型表现出色,能够提供详细的解题步骤和准确的答案。
复杂数据分析:推理模型擅长处理需要多步骤推理和策略规划的复杂数据分析任务,帮助科学家和研究人员进行更深入的数据挖掘。
法律与金融分析:在处理法律合同、金融协议等复杂文档时,推理模型能够提取关键条款,理解模糊信息,辅助决策。
数据集中的思维链,在某些特定场景下可能比较容易获取,比如在数学推理任务的微调上,一般数据集本身带的解题过程就可以作为思维链,比如下面的数学解题数据集:
约 86 万道中国高中数学练习题、以及美国和国际数学奥林匹克竞赛的题目,每个问题的解答都采用了思维链(CoT)的格式。
还有就是靠带推理能力的大模型蒸馏获取,通过 DeepSeek-R1
等推理模型蒸馏而来。
知识蒸馏(Knowledge Distillation
)是将复杂模型(教师模型)的知识迁移到轻量级模型(学生模型)的技术,通过优化学生模型使其输出接近教师模型的“软标签”,从而在保持性能的同时降低推理成本。模型蒸馏的数据集构造应该是最简单的,在你完全信任大模型输出的条件下,你可以直接将大模型产出的问答对作为数据集,最后在进行人工的质量评估和验证即可。模型蒸馏典型开源数据集:
中文基于满血 DeepSeek-R1 蒸馏数据集,数据集中不仅包含 math 数据,还包括大量的通用类型数据,总数量为 110K。
1.4.1 强化学习微调
强化学习微调是在监督微调的基础上,通过人类来主动反馈优化模型生成质量的方法。其核心在于引入奖励模型(Reward Model
)评估生成结果的合理性,并通过强化学习策略(如 PPO
算法)调整模型参数,使生成内容更符合人类偏好。
强化学习微调的典型业务场景:
对话系统优化:在监督微调完回复相关性后,继续对齐人类价值观(安全、无害、有用性)。
内容生成:在监督微调完写作能力后,继续优化输出风格(如幽默、正式)或避免敏感信息。
代码生成:在监督微调完代码生成能力后,继续优化代码的可读性和正确性。
强化学习典型开源数据集:
人类偏好排序数据集,用于强化学习微调、训练奖励模型。
1.4.2 多模态微调
多模态微调(Multimodal Fine-Tuning
)指通过文本、图像、语音等多模态数据训练模型,使其具备跨模态理解与生成能力。它和文本类模型的微调可以说是并列的两个范畴,其中也包括监督/非监督微调、强化学习微调等范畴。
注意这里的图片、视频、音频等多模态数据可以是 CND 地址、base64 编码,或者直接放在 HuggingFace 上,这里写相对路径,总之在训练时能够读取的到就可以。多模态微调的典型业务场景:
图文问答:输入图片和问题,生成答案。
视频内容理解:分析视频帧和字幕,生成摘要。
跨模态检索:根据文本描述搜索相关图像/视频。
多模态微调典型开源数据集:
包含 50 个大规模视觉语言训练数据集(仅训练集),用于多任务视觉语言模型的微调。数据集结构包含
images
(图片列表)和texts
(对话文本),其中对话以用户提问、模型回答的形式呈现,覆盖问答、选择等任务(如TQA数据集示例)。
对于模型微调的数据集,是没有明确的格式要求的,我们一般在代码中抹除各种微调数据集格式的差异,我们还拿之前微调实战教程中的代码来举例,回顾一下之前我们是怎么处理数据集的。我们先来看第一段代码:
这段代码其实就是在定义一个用于格式化微调数据集的模版,其中的三个 "{}" 其实就是对应的我们要传入的三个变量,分别对应原始问题、思考过程、最终答案三个部分。然后我们再来看下面这段代码,也很好理解,就是提取出我们原始数据集里面的三个变量:
然后循环原始数据集,将这三个变量传入上面的模版,最终导入到一个 text
变量里。回顾一下我们之前的一个数据集格式:
调用上面的模版,每条数据集其实就转换成了下面这种格式:
最终所有数据集合并完,其实最终就是一个字符串数组:
我们最后在回顾下微调模型的参数,其中有两个重要的参数:
所以其实最后喂给模型的还是一段格式化好的字符串,并非结构化的数据。
Alpaca
最初是斯坦福大学于 2023 年发布的 52k 条指令微调数据集,由 OpenAI
的 text-davinci-003
模型生成,旨在通过指令跟随(Instruction Following
)任务优化大语言模型(如 LLaMA
)的性能。后续随着社区的发展,Alpaca 的 JSON 结构逐渐被抽象为一种 通用数据格式,并且扩展了一些字段如 system
(系统提示)和 history
(历史对话),支持多轮交互任务。适用于多种微调场景,很多主流框架(如 LLaMA-Factory、DeepSpeed)都可以直接加载 Alpaca
格式的数据集。这里我们参考 LLaMA-Factory
给出的两种在不同微调场景中 Alpaca
格式的数据案例:Alpaca 格式的指令微调数据集:
Alpaca 格式的领域适配微调数据集:
Alpaca 格式的偏好数据集:
ShareGPT 最早是一种数据格式标准,由社区设计用于规范多轮对话和工具调用场景的模型训练数据存储方式。其核心目标是通过结构化字段(如 conversations
列表、tools
工具描述)支持复杂交互(如用户提问 → 工具调用 → 结果整合)。随着格式的普及,社区基于 ShareGPT
格式构建了多个具体的数据集,这类数据集被称为 "ShareGPT 格式数据集"。ShareGPT 格式的指令微调数据集:
ShareGPT 格式的偏好数据集:
ShareGPT 格式的多模态数据集:
特殊的 ShareGPT 格式数据集:OpenAI 格式
下面是两种数据集格式的详细对比,大家可以根据自己的实际需求场景选择合适的格式:
对比维度
Alpaca 格式
ShareGPT 格式
核心设计目标
单轮指令驱动任务(如问答、翻译、摘要)
多轮对话与工具调用(如聊天机器人、API 交互)
数据结构
以 instruction
、input
、output
为主体的 JSON 对象
以 conversations
列表为核心的多角色对话链(human/gpt/function_call/observation)
对话历史处理
通过 history
字段记录历史对话(格式:[["指令", "回答"], ...]
)
通过 conversations
列表顺序自然体现多轮对话(角色交替出现)
角色与交互逻辑
仅区分用户指令和模型输出,无显式角色标签
支持多种角色标签(如 human
、gpt
、function_call
),强制奇偶位置规则
工具调用支持
不原生支持工具调用,需通过 input
或指令隐式描述
通过 function_call
和 observation
显式实现工具调用,支持外部 API 集成
典型应用场景
- 指令响应(如 Alpaca-7B) - 领域知识问答 - 文本结构化生成
- 多轮对话(如 Vicuna) - 客服系统 - 需实时数据查询的交互(如天气、计算)
优势
- 结构简洁,任务导向清晰 - 适合快速构建单轮任务数据集
- 支持复杂对话流与外部工具扩展 - 更贴近真实人机交互场景
局限
- 多轮对话需手动拼接 history
- 缺乏动态工具交互能力
- 数据格式更复杂 - 需严格遵循角色位置规则
训练集教会模型「基础知识」,验证集优化「学习方法」,测试集检验「实战能力」,三者如同「预习-复习-考试」的学习闭环,缺一不可:
训练集 = 日常练习题(通过大量练习掌握知识点)
验证集 = 模拟考试卷(检测阶段学习成果,调整学习方法)
测试集 = 最终期末考试(检验真实学习能力)
完整集 = 所有可用的习题库(包含前三者的原始数据全集)
作用:模型学习规律的核心资料
示例:教AI识别猫时,给它看10,000张标注好的猫图(包含不同品种、姿势)
关键点:
需覆盖各种可能性(白天/夜晚、近景/远景)
相当于学生的课本+习题册
作用:防止死记硬背,测试举一反三能力
典型场景:训练中途用2,000张新猫图验证,发现模型错把「无毛猫」认成狗,于是调整训练策略
核心价值:
选择最佳模型版本(如不同神经网络结构)
调整超参数(相当于改变学习计划表)
作用:评估模型真实水平
必须遵守:
绝对隔离原则:测试集的 5,000张猫图 在训练中从未出现过
相当于高考的「绝密押题卷」
常见误区: 若用测试集反复调参,相当于提前偷看考题,成绩会虚高
包含关系:完整集 = 训练集 + 验证集 + 测试集
划分比例(示例):
常规情况:70%训练 + 15%验证 + 15%测试
小数据场景:80%训练 + 10%验证 + 10%测试
下面是一些关于这三种数据集的常见问题:
为什么不能混用? :如果测试集数据泄露到训练中,就像考前背答案,实际应用时遇到新题就会失败。
数据不够怎么办?:交叉验证法:将完整集分成5份,轮流用4份训练、1份验证(类似「轮换座位考试」),合成数据:用图像翻转、文字替换等方式扩充数据量。
特殊场景处理:时间序列数据:需按时间顺序划分(不能用随机拆分)。例如预测股价,必须用2023年前的数据训练,2024年数据测试;
请通过 提交产品建议、问题反馈,注意请严格按照 Issue 模版进行提交,否则将可能不会得到回复。