推荐五种本地加载sharegpt数据集的方法:一、流式读取jsonl;二、分块解析json数组;三、内存映射(mmap)加载;四、预转换为hdf5格式;五、导入sqlite数据库支持sql查询。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在本地机器上尝试加载ShareGPT数据集,但面临内存不足、解析失败或JSON结构不兼容等问题,则可能是由于原始文件未按本地运行环境适配。以下是适用于离线、无云依赖场景的多种加载方法:
一、直接加载JSONL格式(流式内存友好型)
该方法利用逐行读取机制,避免一次性将整个数据集载入内存,特别适合GB级ShareGPT JSONL文件(如ShareGPT_V3_unfiltered_cleaned_split.jsonl),可稳定运行于16GB内存设备。
1、确认数据文件为标准JSONL格式(每行一个独立JSON对象,非嵌套数组)。
2、使用Python内置open()配合json.loads()逐行解析:
3、对每一行执行try-except捕获解析异常,跳过损坏行并记录行号。
4、将有效样本缓存至生成器或分批写入临时SQLite数据库,供后续迭代使用。
二、分块加载JSON数组格式(适用于单JSON大文件)
当数据集以单个巨型JSON数组形式提供(如ShareGPT_V3_unfiltered_cleaned_split.json),直接json.load()易触发MemoryError。本方法通过定位左/右方括号位置,将数组切分为固定大小的子块进行分段加载。
1、用二进制模式打开文件,扫描首字符确认是否为'[',末字符是否为']'。
2、统计文件内所有','字符出现位置,并结合'{'与'}'嵌套层级,识别合法的对象边界。
3、按预设批次大小(如500条)截取连续对象序列,拼接为合法JSON数组字符串。
4、对每个子数组调用json.loads()解析,确保每个批次独立GC释放内存。
三、内存映射加载(适用于超大只读场景)
该方法绕过Python解释器常规内存分配路径,借助mmap模块将文件部分内容直接映射至虚拟内存空间,实现纳秒级随机访问,且不增加物理内存占用,适合处理>20GB的ShareGPT原始文件。
1、安装必要依赖:pip install numpy(用于辅助偏移计算)。
2、使用open()以rb模式打开文件,传入os.stat().st_size获取总字节数。
IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
3、调用mmap.mmap()创建只读内存映射对象,设置access=mmap.ACCESS_READ。
4、编写轻量级JSON tokenizer,在映射区域内按字节扫描'{"conversations":'起始标记,定位每个样本起始偏移。
5、对定位到的偏移区间调用json.loads()解析对应片段,全程不复制原始字节流。
四、HDF5格式预转换加载(长期高效复用)
针对需高频重复加载同一ShareGPT数据集的场景,预先将其转换为HDF5格式可实现毫秒级随机样本检索、压缩存储与跨平台兼容,且完全脱离云服务依赖。
1、使用h5py库创建HDF5文件:pip install h5py。
2、遍历原始ShareGPT数据,提取每条会话的messages长度、images数量、总token估算值等元信息。
3、将messages列表序列化为字符串数组,images路径存为变长字符串数据集,元信息存入attributes。
4、加载时仅打开HDF5文件句柄,按索引直接读取指定样本组,无需解析JSON语法树。
五、SQLite嵌入式数据库加载(支持复杂查询与增量更新)
将ShareGPT数据导入轻量级SQLite数据库,可启用SQL语法进行条件筛选(如“SELECT * FROM conversations WHERE len(messages) > 5”)、全文检索与事务回滚,适用于需动态构建子集的本地微调流程。
1、初始化数据库并创建表:CREATE TABLE sharegpt (id INTEGER PRIMARY KEY, messages TEXT NOT NULL, images TEXT, metadata TEXT)。
2、使用sqlite3.executemany()批量插入,每批≤1000条以平衡速度与内存。
3、为messages字段添加JSON1扩展支持,启用json_extract()函数解析嵌套结构。
4、查询时直接WHERE json_array_length(json_extract(messages, '$')) > 3,避免全量反序列化。










