【diffusers 进阶(十五)】dataset 工具,Parquet和Arrow 数据文件格式,load dataset 方法

系列文章目录

  • 【diffusers 极速入门(一)】pipeline 实际调用的是什么? call 方法!
  • 【diffusers 极速入门(二)】如何得到扩散去噪的中间结果?Pipeline callbacks 管道回调函数
  • 【diffusers极速入门(三)】生成的图像尺寸与 UNet 和 VAE 之间的关系
  • 【diffusers极速入门(四)】EMA 操作是什么?
  • 【diffusers极速入门(五)】扩散模型中的 Scheduler(noise_scheduler)的作用是什么?
  • 【diffusers极速入门(六)】缓存梯度和自动放缩学习率以及代码详解
  • 【diffusers极速入门(七)】Classifier-Free Guidance (CFG)直观理解以及对应代码
  • 【diffusers极速入门(八)】GPU 显存节省(减少内存使用)技巧总结
  • 【diffusers极速入门(九)】GPU 显存节省(减少内存使用)代码总结
  • 【diffusers极速入门(十)】Flux-pipe 推理,完美利用任何显存大小,GPU显存节省终极方案(附代码)
  • 【diffusers 进阶(十一)】Lora 具体是怎么加入模型的(推理代码篇上)OminiControl
  • 【diffusers 进阶(十二)】Lora 具体是怎么加入模型的(推理代码篇下)OminiControl
  • 【diffusers 进阶(十三)】AdaLayerNormZero 与 AdaLayerNormZeroSingle 代码详细分析
  • 【diffusers 进阶(十四)】权重读取,查看 Lora 具体加在哪里和 Rank ‘秩’ 是多少?以 OminiControl 为例

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • load_dataset
    • Parquet
    • Arrow
    • 二者详细对比
      • 1.核心特性对比
      • 2.应用场景差异
      • 3.性能对比
      • 4. Hugging Face生态中的使用
      • 5. 选择建议


load_dataset

Parquet

Parquet文件采用列式存储格式,与CSV等行式文件不同。由于效率更高且查询响应更快,大型数据集通常存储为Parquet格式。

加载Parquet文件:

from datasets import load_dataset
dataset = load_dataset("parquet", data_files={'train': 'train.parquet', 'test': 'test.parquet'})

通过HTTP加载远程Parquet文件:

base_url = "https://huggingface.co/datasets/wikimedia/wikipedia/resolve/main/20231101.ab/"
data_files = {"train": base_url + "train-00000-of-00001.parquet"}
wiki = load_dataset("parquet", data_files=data_files, split="train")

Arrow

Arrow文件采用内存列式存储格式,与CSV等行式格式和未压缩的Parquet格式不同。

加载Arrow文件:

from datasets import load_dataset
dataset = load_dataset("arrow", data_files={'train': 'train.arrow', 'test': 'test.arrow'})

通过HTTP加载远程Arrow文件:

base_url = "https://huggingface.co/datasets/croissantllm/croissant_dataset/resolve/main/english_660B_11/"
data_files = {"train": base_url + "train/data-00000-of-00080.arrow"}
wiki = load_dataset("arrow", data_files=data_files, split="train")

总结:

  1. 文件格式特点:
  • Parquet:磁盘列式存储,适合大规模数据存储和高效查询
  • Arrow:内存列式存储,适合快速内存处理(需注意内存容量限制)
  1. 加载方式:
  • 本地文件:指定data_files参数(支持多文件拆分)
  • 远程文件:直接传入HTTP/HTTPS URL
  • 通用接口:统一使用datasets.load_dataset(),通过格式参数区分
  1. 应用场景:
  • Parquet:数据仓库、离线分析、大规模数据存储
  • Arrow:内存计算、实时处理、跨进程数据传递
  1. 技术优势:
  • 列式存储:提升分析查询效率,降低I/O开销
  • 压缩优化:Parquet支持多种压缩算法
  • 类型保留:保持原始数据类型(如日期、嵌套结构)
  • 元数据管理:自动读取文件元信息

二者详细对比

以下是Parquet和Arrow两种数据格式的详细对比分析:

1.核心特性对比

特性ParquetArrow
存储介质磁盘存储(适合持久化存储)内存存储(适合内存计算与跨进程传输)
存储结构列式存储,支持分块与压缩列式存储,内存友好型二进制格式
压缩方式支持Snappy、Gzip、Brotli等压缩算法不压缩(需结合Parquet或其他压缩层)
数据类型支持复杂类型(嵌套结构、日期等)支持更广泛的数据类型(如字典、列表等)
元数据管理自动记录统计信息(如最小值、最大值)包含完整的Schema定义和内存布局信息

2.应用场景差异

Parquet:

  1. 离线分析:适合数据仓库、日志分析等需要频繁查询特定列的场景。
  2. 大规模数据存储:通过列式压缩减少存储空间,支持高效的查询过滤。
  3. 跨平台兼容性:与Spark、Pandas等工具深度集成,便于多框架处理。

Arrow:

  1. 内存计算:在内存密集型任务(如机器学习预处理)中提供快速访问。
  2. 实时处理:支持零拷贝数据传输,适合微服务间高效通信。
  3. 跨语言支持:通过Arrow Flight协议实现不同语言间的数据共享。

3.性能对比

场景ParquetArrow
磁盘读取高(列式存储减少I/O量)不适用(需配合Parquet)
内存访问低(需加载到内存后处理)极高(直接内存访问)
压缩效率高(可选压缩算法)无(需结合其他格式)
序列化速度较慢(需解析文件结构)极快(内存直接序列化)

4. Hugging Face生态中的使用

  1. 分布式加载
    # Parquet分布式分片
    dataset = load_dataset("parquet", data_files="s3://bucket/*.parquet", split="train")# Arrow内存共享
    dataset = load_dataset("arrow", data_files="local/*.arrow", split="train")
    
  2. 类型保留
    • Parquet:自动推断日期、嵌套结构等复杂类型。
    • Arrow:精确保留原始数据类型(如Python的datetime对象)。
  3. 性能优化
    • 使用dataset.set_format("arrow")将数据转为Arrow格式以加速内存操作。

5. 选择建议

  • 选Parquet:当需要持久化存储、跨工具协作或处理PB级数据时。
  • 选Arrow:当需要内存快速处理、实时分析或跨语言数据传递时。
  • 组合使用:将数据存储为Parquet,加载到内存后转为Arrow格式进行计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十三章:持久化存储_《凤凰架构:构建可靠的大型分布式系统》

第十三章 持久化存储 一、Kubernetes存储设计核心概念 (1)存储抽象模型 PersistentVolume (PV):集群级别的存储资源抽象(如NFS卷/云存储盘)PersistentVolumeClaim (PVC):用户对存储资源的声明请求&#…

以太网安全

前言: 端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层数据的隔离端口安全是一种在交换机接入层实施的安全机制,旨在通过控制端口的MAC地址学习行为,确保仅授权设备能…

跨域问题前端解决

由于浏览器的同源策略,前后端分离的项目,调试的时候总是会遇到跨域的问题,这里通过修改前端代码解决跨域问题。 首先先查看前端代码的根目录下,有没有vue.config.js文件, 若有,使用方法1,若没有此文件&…

Elasticsearch 报错index_closed_exception

index_closed_exception 是 Elasticsearch 中的一个异常类型,它通常发生在尝试对一个已经被关闭(closed)的索引执行搜索、写入或其他操作时。在 Elasticsearch 中,索引是用来存储和检索数据的逻辑命名空间,可以将其类比…

LearnOpenGL-笔记-其九

今天让我们完结高级OpenGL的部分: Instancing 很多时候,在场景中包含有大量实例的时候,光是调用GPU的绘制函数这个过程都会带来非常大的开销,因此我们需要想办法在每一次调用GPU的绘制函数时尽可能多地绘制,这个过程就…

PDF预览-搜索并高亮文本

在PDF.js中实现搜索高亮功能可以通过自定义一些代码来实现。PDF.js 是一个通用的、基于Web的PDF阅读器,它允许你在网页上嵌入PDF文件,并提供基本的阅读功能。要实现搜索并高亮显示文本,你可以通过以下几个步骤来完成: 1. 引入PDF…

二叉树——队列bfs专题

1.N叉树的层序遍历 我们之前遇到过二叉树的层序遍历,只需要用队列先进先出的特性就可以达到层序遍历的目的。 而这里不是二叉树,也就是说让节点的孩子入队列时不仅仅是左右孩子了,而是它的所有孩子。而我们看这棵多叉树的构造,它…

Python高级爬虫之JS逆向+安卓逆向1.1节-搭建Python开发环境

目录 引言: 1.1.1 为什么要安装Python? 1.1.2 下载Python解释器 1.1.3 安装Python解释器 1.1.4 测试是否安装成功 1.1.5 跟大神学高级爬虫安卓逆向 引言: 大神薯条老师的高级爬虫安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级&…

Windows 安装和使用 ElasticSearch

SpringBoot3 整合 Elasticsearch 1. ElasticSearch 1.1 ES (1)ES 是一个开源的分布式搜索和分析引擎,专为处理大模型数据而设计,它能够实现近乎实时的数据检索、分析和可视化,广泛用于全文搜索、日志分析和监控&…

matplotlib初探

库引入 import matplotlib.pyplot as pltpyplot.figure 创建新图形或激活现有图形

NVM 多版本Node.js 管理全指南(Windows系统)

🧑 博主简介:CSDN博客专家、全栈领域优质创作者、高级开发工程师、高级信息系统项目管理师、系统架构师,数学与应用数学专业,10年以上多种混合语言开发经验,从事DICOM医学影像开发领域多年,熟悉DICOM协议及…

实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)

实验室预约小程序 目录 基于微信小程序的实验室预约管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 (1)管理员登录 (2)实验室管理 (3)公告信息管理…

SpringBoot底层-数据源自动配置类

SpringBoot默认使用Hikari连接池,当我们想要切换成Druid连接池,底层原理是怎样呢 SpringBoot默认连接池——Hikari 在spring-boot-autoconfiguration包内有一个DataSourceConfiguraion配置类 abstract class DataSourceConfiguration {Configuration(p…

面试算法高频03-递归

认识递归 递归的概念与特性:递归本质类似循环,是通过函数体进行的循环操作。借助电影《盗梦空间》类比,递归如同主角在不同梦境层穿梭,向下进入不同递归层,向上能回到原来一层,每一层环境和周围元素相似&a…

linux Gitkraken 破解

ubuntu 安装 Gitkraken 9.x Pro 版本_gitcracken.git-CSDN博客

设计模式简述(十一)装饰器模式

装饰器模式 描述基本使用使用 描述 装饰器模式是一种功能型模式 用于动态增强对象的功能 这么一说感觉上和代理模式有些类似 抽象装饰器 要实现原有业务接口,并注入原有业务对象 至于对原有业务对象的调用,可以采用private业务对象 实现业务接口方法的…

【NetCore】ControllerBase:ASP.NET Core 中的基石类

ControllerBase:ASP.NET Core 中的基石类 一、什么是 ControllerBase?二、ControllerBase 的主要功能三、ControllerBase 的常用属性四、ControllerBase 的常用方法2. 模型绑定与验证3. 依赖注入五、ControllerBase 与 Controller 的区别六、实际开发中的最佳实践七、总结在 …

DE2-115分秒计数器

一、模块设计 如若不清楚怎么模块化,请看https://blog.csdn.net/szyugly/article/details/146379170?spm1001.2014.3001.5501 1.1顶层模块 module top_counter(input wire CLOCK_50, // 50MHz时钟input wire KEY0, // 暂停/继续按键out…

ubuntu git cola gui

直接的方法, samba, win 里用 tortoiseSVN 需要先在命令行,运行 git 命令,看到操作提示, 按照提示做 然后右键看 git diff 其它的方法 linux下可视化git工具git-cola安装与使用(HTTP方式)_git…

每日一题(小白)回溯篇4

深度优先搜索题:找到最长的路径,计算这样的路径有多少条(使用回溯) 分析题意可以得知,每次向前后左右走一步,直至走完16步就算一条走通路径。要求条件是不能超出4*4的范围,不能重复之前的路径。…