大模型微调数据集怎么搞?基于easydataset实现文档转换问答对json数据集!

微调的难点之一在与数据集。本文介绍一种将文档转换为问答数据集的方法,超级快!

上图左侧是我的原文档,右侧是我基于文档生成的数据集。

原理是通过将文档片段发送给ollama本地模型,然后本地模型生成有关问题,并基于文档片段回答问题。需要用到的工具有ollama,easy-dataset: https://github.com/ConardLi/easy-dataset

ollama安装就不赘述了,easy-dataset是一个前端项目,只需要有nodejs就能运行起来了。

进入easydataset的运行界面,新建项目,会被要求添加模型。如果ollama在运行,easydataset能检测到已安装的模型。

首先需要将文档拆分成md格式,MinerU 可以很好做到这一点。

然后将md文件上传到easydataset,easydataset会将其拆分成若干个片段,并针对每个片段生成若干个问题,最后再对每个问题进行回答,问答对就完成了。

按照需要的格式导出,就能直接作为数据集文件了。

数据集格式介绍可参考Unsloth 基于自己的数据集微调建立专属模型_unsloth微调-优快云博客

### 将大模型微调用的数据集转换JSON格式 为了实现这一目标,可以编写一个Python函数`convert_dataset_to_json`,该函数读取特定结构的输入文件并将其转化为适合大模型微调使用的JSON格式。此过程涉及解析原始数据、调整其结构以匹配所需的模式以及最终保存到指定的目标位置。 对于Doccano平台导出的实体识别标注数据而言,存在专门设计的功能`convert_coccano2LLM`用于处理这类情况[^1]: ```python import json def convert_coccano2LLM(input_file, output_file, schema): with open(input_file, 'r', encoding='utf-8') as f_in: data = json.load(f_in) processed_data = [] for item in data: text = item['text'] entities = [{"entity": ent["label"], "start_pos": ent["start_offset"], "end_pos": ent["end_offset"]} for ent in item["labels"]] formatted_item = { "content": text, "entities": entities } processed_data.append(formatted_item) # 特别注意:这里是 label 要转成字符串 str_processed_data = json.dumps(processed_data, ensure_ascii=False) with open(output_file, 'w', encoding='utf-8') as f_out: f_out.write(str_processed_data) ``` 上述代码片段展示了如何将来自Doccano平台的实体识别标注数据转换为适配于大型语言模型微调所需的标准JSON格式。通过遍历每一条记录中的文本及其对应的标签信息,并按照新的结构重新组织这些信息,最后使用`json.dumps()`方法确保所有的标签都被正确地序列化为字符串形式,从而防止后续加载过程中可能出现的问题。 值得注意的是,在实际应用中可能还需要考虑不同框架或库之间的差异性,比如某些情况下三段式的数据格式并不完全适用所有类型的预训练模型[^3]。因此,在实施具体方案前应当仔细查阅所选用的大规模预训练模型文档,确认最佳实践指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值