当前位置: 首页 > java >正文

python常用库-pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))

文章目录

  • python常用库pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))
    • 背景
    • 什么是JSONL(JSON Lines)
    • 通过pandas读取和保存JSONL文件
      • pandas读取和保存JSONL文件
    • Hugging Face的datasets库
    • Hugging Face的datasets库 和 pandas 我应该用哪个
    • 参考

python常用库pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))

背景

在当今的数据交换领域,各种格式层出不穷,其中 Comma Separated Values(CSV)格式作为一种常见的数据交换格式,被广泛用于表示具有相同字段列表的记录集。而 JavaScript Object Notation(JSON)则已成为事实上的数据交换格式标准,取代了曾在 21 世纪初备受瞩目的 XML。JSON 不仅具有自我描述性,而且易于人类阅读。

在处理和分析大型数据集时,JSON Lines 格式成为了一种受欢迎的选择。

与传统的 JSON 格式相比,JSON Lines 不需要一次性加载整个文件,而是可以逐行读取和处理数据。这种特性使得 JSON Lines 非常适用于处理大型数据集,无需担心内存限制或性能问题。

每一行表示一个单独的条目这一特点使得 JSON Lines 格式化的文件具有可流式处理的特性。您可以根据需要读取任意多行来获取相同数量的记录。在网络爬虫等需要处理大量数据的场景中,JSON Lines 格式无疑是一种非常实用的选择。

JSONL(JSON Lines)在大模型时代,通常用于保存模型训练的数据集。

什么是JSONL(JSON Lines)

官网:https://jsonlines.org/

JSON Lines 特点

  • 采用 UTF-8 编码;
  • 每行必须是一个有效的 JSON 对象;
  • 在每个 JSON 对象,采用 \n 或 \r\n 作为行分隔符;

建议约定:

  • JSON Lines文件通常使用文件扩展名 .jsonl 保存
  • 建议使用像 gzip 或 bzip2 这样的流压缩器以节省空间,生成 .jsonl.gz 或 .jsonl.bz2 文件
  • MIME 类型可以是 application/jsonl,但这 还没有被标准化
  • 文本编辑程序将文本文件的第一行称为“第1行”。JSON Lines文件中的第一个值也应称为“第1个值”

通过pandas读取和保存JSONL文件

微调任何人工智能模型的第一步是准备训练数据集。

很多时候,我们需要把一些我们常见的格式,如csv等,转换为更适合训练 AI 模型的 JSONL(JSON Lines)格式。

目前大模型很多的数据格式都是jsonl和json的,通常我们使用json的文件相对较多,对于jsonl的处理,我们其中每一行都是一个独立的JSON对象。这种格式非常适合于那些需要逐行读取和写入数据的场景,比如日志文件处理。Pandas是一个强大的Python数据分析库,它提供了读取和保存JSONL文件的功能,使得处理这种格式的数据变得简单快捷。

pandas读取和保存JSONL文件

在使用Python的数据处理库pandas时,可以轻松地读取和写入JSONL格式的文件。

当处理大型JSONL文件时,我们可能不希望一次性将所有数据加载到内存中。Pandas的read_json方法支持分块读取:

chunk_size = 1000  # 每次读取1000行
chunks = pd.read_json('large_data.jsonl', lines=True, chunksize=chunk_size)for chunk in chunks:print(chunk)# 可以在这里对每个块进行处理

Hugging Face的datasets库

官方地址:https://huggingface.co/docs/datasets/index

Hugging Face中的datasets库为数据处理提供了强大且灵活的工具,能够帮助开发者和研究人员更高效地处理各种类型的数据集。通过其丰富的特性和广泛的社区支持,datasets库已成为机器学习项目中不可或缺的重要工具之一。

Hugging Face是用来处理数据集的一个python库。当微调一个模型时候,需要在以下三个方面使用该库,如下。

  • 从Huggingface Hub上下载和缓冲数据集(也可以本地哟!)
  • 使用Dataset.map()预处理数据
  • 加载和计算指标

现在上GB的数据集是非常常见的,例如训练BERT和GPT2的数据集。加载如此之大的数据集对内存大要求很高。预训练GPT2的数据集包含8百万个文档和40GB的文本。如果你有尝试加载过这些数据,就会知道这有多么的麻烦!

Datasets针对大数据加载的痛点做了很多工作,在加载数据上使用内存映射的方法,使得加载数据不再受内存大小的限制,只要磁盘空间够大,就能够快速加载大数据文件

只需要在load_dataset()函数中指定加载数据的类型(csv或tsv表格数据、text文本数据、json或json lines格式数据已经pandas保存的pickle文件)以及设置参数data_files来指定一个或多个文件即可。

Hugging Face的datasets库 和 pandas 我应该用哪个

Hugging Face的datasets库

  • 专用性:datasets库专为处理和加载各类自然语言处理(NLP)任务的数据集而设计,支持从Hugging Face Hub直接下载和加载多个公共数据集,比如GLUE、SQuAD、IMDB等1。
  • 高效性:该库使用内存映射(memory mapping)和缓存机制,能够高效处理大规模数据集,并支持GPU加速5。
  • 便捷性:通过简单的一行代码即可加载数据集,具备多线程处理能力,适合需要快速迭代的深度学习项目^6。
  • 灵活性:可以方便地进行数据集的处理和变换(例如过滤、切分、映射)1。
  • 与Transformers兼容:适合与Hugging Face的Transformers库结合使用,便于直接应用于模型训练和验证3。

Pandas

  • 多功能性:Pandas是一个通用的数据处理库,不仅限于NLP领域,适合处理各种数据格式(如CSV、Excel、JSON等),非常适合一般的数据分析任务。
  • 灵活的数据操作:Pandas提供了丰富的数据操作功能(如数据清洗、变换、合并、重塑等),在结构化数据的处理上非常强大2。
  • 更广的应用场景:如果你的数据分析不仅限于NLP,比如数据可视化、数据科学等场景,Pandas则是更合适的选择。
  • 学习曲线:对于新的数据科学家来说,Pandas的学习曲线相对较平缓,因为它的应用场景更广泛且有丰富的学习资源。

总结:
如果你的项目更多地涉及到深度学习和模型训练,建议优先使用datasets库;如果涉及到多样化的数据处理和分析任务,则Pandas更为合适。

参考

【大模型-驯化】成功搞懂大模型的jsonl数据格式处理和写入,通过pandas读取和保存JSONL文件
https://blog.csdn.net/lov1993/article/details/142494045
Hugging Face教程 - 5、huggingface的datasets库使用
参考URL: https://zhuanlan.zhihu.com/p/564816807

http://www.xdnf.cn/news/9939.html

相关文章:

  • EasyRTC嵌入式音视频通信SDK助力1v1实时音视频通话全场景应用
  • 图解gpt之Transformer架构与设计原理
  • ONNX模型的动态和静态量化
  • 2024 CKA模拟系统制作 | Step-By-Step | 17、题目搭建-排查故障节点
  • 因泰立科技:镭眸T51激光雷达,打造智能门控新生态
  • 立控信息智能装备柜:科技赋能军队装备管理现代化
  • WindowServer2022下docker方式安装dify步骤
  • 大厂前端研发岗位设计的30道Webpack面试题及解析
  • CAD多边形密堆积2D插件
  • SpringBoot+Vue+微信小程序校园自助打印系统
  • Spring Boot 基础知识全面解析:快速构建企业级应用的核心指南
  • 用Git管理你的服务器配置文件与自动化脚本:版本控制、变更追溯、团队协作与安全回滚的运维之道
  • 服务器Docker容器创建与VScode远程连接SSH使用
  • quasar electron mode如何打包无边框桌面应用程序
  • 从零到一:我的技术博客导航(持续更新)
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的企业组织生态化重构研究
  • 展会聚焦丨漫途科技亮相2025西北水务博览会!
  • AI生态警报:MCP协议风险与应对指南(中)——MCP Server运行时安全​​
  • 循环神经网络(RNN)全面教程:从原理到实践
  • 神经网络-Day40
  • 目标检测学习
  • Day 40
  • 一篇文章玩转CAP原理
  • methods的实现原理
  • 熵最小化Entropy Minimization (一): 基本认识
  • 解析楼宇自控系统:分布式结构的核心特点与优势展现
  • Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用
  • SAP Business ByDesign:无锡哲讯科技赋能中大型企业云端数字化转型
  • PowerDesigner通过SQL反向生成类图
  • RustDesk 搭建自建服务器并设置服务自启动