为数据集而生的 SQL 控制台

news2024/12/24 2:25:15

随着数据集的使用量急剧增加,Hugging Face 社区已经变成了众多数据集默认存放的仓库。每月,海量数据集被上传到社区,这些数据集亟需有效的查询、过滤和发现。

0ce82675e07f5661e8114adb867444bc.png
Dataset Monthly Creations

每个月在 Hugging Face Hub 创建的数据集

我们现在非常激动地宣布,您可以直接在 Hugging Face 社区中对您的数据集进行 SQL 查询!

数据集的 SQL 控制台介绍

在每个公共数据集中,您应该会看到一个新的 SQL 控制台标签。只需单击即可打开 SQL 控制台以查询该数据集。

查询 Magpie-Ultra 数据集来获取优秀的高质量推理指令。

所有的操作都在浏览器中完成,控制台还配备了一些实用的功能:

  • 完全的本地化支持: SQL 控制台由DuckDBWASM 驱动,因此您可以无需任何依赖即可查询您的数据集。https://duckdb.org/

  • 完整的 DuckDB 语法支持: DuckDB 支持全面的 SQL 语句,并包含许多内置函数,如正则表达式、列表、JSON、嵌入等。您会发现 DuckDB 的语法与 PostgreSQL 非常相似。

  • 结果导出: 您可以将查询的结果导出为 parquet 格式。

  • 分享: 您可以使用链接分享公共数据集的查询结果。

工作原理

Parquet 格式转换

大多数在 Hugging Face 上的数据集都存储为 Parquet 格式,这是一种优化了性能和存储效率的列式数据格式。Hugging Face 的  数据集视图 和 SQL 控制台会直接从数据集的 Parquet 文件中加载数据。如果数据集是以其他格式存储的,则前 5GB 自动转换为 Parquet 格式。您可以在Dataset Viewer Parquet API 文档中找到更多关于 Parquet 转换过程的信息。

Dataset Viewer Parquet API 文档https://hf.co/docs/dataset-viewer/en/parquet

使用这些 Parquet 文件,SQL 控制台会为您创建视图,基于数据集的划分和配置供您进行查询。

DuckDB WASM 🦆引擎

DuckDB WASM是驱动 SQL 控制台的引擎。它是一个在浏览器中运行于 Web Assembly 的进程内数据库引擎,无需服务器或后端。

DuckDB WASMhttps://duckdb.org/docs/api/wasm/overview.html

仅在浏览器中运行,它为用户提供最大程度的灵活性,可以自由查询数据而不需要任何依赖项。这也使得通过简单的链接分享可复现的结果变得非常简单。

你可能在想,“这是否适用于大数据集?”答案是“当然可以!

以下是对OpenCo7/UpVoteWeb数据集的查询,该数据集经过 Parquet 格式转换后有 12.6M 行。

OpenCo7/UpVoteWebhttps://hf.co/datasets/OpenCo7/UpVoteWeb

c70f893ba458cea9d198204c3fbdb680.png
Reddit Movie Suggestions

您可以看到,我们在不到 3 秒内的时间内收到了简单过滤查询的结果。

虽然基于数据集的大小和查询的复杂度查询可能会发生很长时间,您会感到吃惊您用 SQL 控制台做到的事情。

就像任何技术一样,也有其局限性:

  • SQL 控制台可以处理许多查询。然而内存限制约为 3GB,因此有可能超出内存并无法处理查询 (提示: 尝试使用过滤器来减少您正在查询的数据量,并结合使用 LIMIT )。

  • 尽管 DuckDB WASM 非常强大,但它并不完全与 DuckDB 功能一致。例如,DuckDB WASM 尚未支持hf:// 协议以查询数据集。https://github.com/duckdb/duckdb-wasm/discussions/1858

示例: 将数据集从 Alpaca 转换为对话格式

现在我们已经介绍了 SQL 控制台,让我们通过一个实际例子来实践一下。当微调大型语言模型时,我们经常需要处理不同的数据格式。其中特别流行的一种格式是对话式格式,在这种格式中,每一行代表用户与模型之间的多轮对话。SQL 控制台可以帮助我们高效地将数据转换为这种格式。让我们看看如何使用 SQL 将 Alpaca 数据集转换为对话式格式。

通常开发人员会通过 Python 预处理步骤来完成这项任务,但我们可以展示一下在不到 30 秒的时间内利用 SQL 控制台实现相同的功能。

0a837936cd63970b7b68495c5cbb53a0.png

在上方的数据集中,点击 SQL 控制台 标签以打开 SQL 控制台。您应该会看到下方的查询已自动填充。

SQL

-- Convert Alpaca format to Conversation format
WITH
source_view AS (
  SELECT * FROM train -- Change 'train' to your desired view name here
)
SELECT
  [
    struct_pack(
      "from" := 'user',
      "value" := CASE
                   WHEN input IS NOT NULL AND input != ''
                   THEN instruction || '\n\n' || input
                   ELSE instruction
                 END
    ),
    struct_pack(
      "from" := 'assistant',
      "value" := output
    )
  ] AS conversation
FROM source_view
WHERE instruction IS NOT NULL
AND output IS NOT NULL;

我们在查询中使用 struct_pack 函数为每个对话创建一个新的 STRUCT 行

DuckDB 对结构化的数据类型和函数有很好的文档说明,你可以参考数据类型和函数。你会发现许多数据集包含带有 JSON 数据的列。DuckDB 提供了易于解析和查询这些列的功能。

  • 数据类型https://duckdb.org/docs/sql/data_types/struct.html

  • 函数https://duckdb.org/docs/sql/functions/struct.html

2e89aed2be3c3bd92c990b3ad0c14bcd.png
Alpaca to Conversation

一旦我们得到结果,就可以将其下载为一个 Parquet 文件。你可以在下面看到最终输出的样子。

3e49609a329460d7331a3b373aad1891.png

试一下!

作为另一个例子,你可以尝试对SkunkworksAI/reasoning-0.01运行一个 SQL 控制台查询,以查看包含超过 10 个推理步骤的指令。

SkunkworksAI/reasoning-0.01https://hf.co/datasets/SkunkworksAI/reasoning-0.01?sql_console=true&sql=--+Find+instructions+with+more+than+10+reasoning+steps%0Aselect+*+from+train%0Awhere+len%28reasoning_chains%29+%3E+10%0Alimit+100&sql_row=43

SQL 片段

DuckDB 有许多我们仍在探索的应用场景。我们创建了一个SQL 片段空间,以展示您可以在 SQL 控制台中完成的操作。

SQL 片段https://hf.co/spaces/cfahlgren1/sql-snippets

这里有一些非常有趣的用例:

  • 使用正则表达式过滤调用特定函数的数据集https://x.com/qlhoest/status/1835687940376207651

  • 从开放 LLM 排行榜中找到最受欢迎的基础模型https://x.com/polinaeterna/status/1834601082862842270

  • 将 alpaca 数据集转换为对话格式https://x.com/calebfahlgren/status/1834674871688704144

  • 使用嵌入进行相似性搜索https://x.com/andrejanysa/status/1834253758152269903

  • 从数据集中过滤超过 5 万行以获取最高质量的推理指令https://x.com/calebfahlgren/status/1835703284943749301

请记住,只需点击一下即可下载您的 SQL 结果作为 Parquet 文件并用于数据集!

我们非常希望听听您对 SQL 控制台的看法,如果您有任何反馈,请在以下帖子中留言!

欢迎在帖子中留言!https://hf.co/posts/cfahlgren1/845769119345136

资源

  • DuckDB WASMhttps://duckdb.org/docs/api/wasm/overview.html

  • DuckDB 语法https://duckdb.org/docs/sql/introduction.html

  • DuckDB WASM 论文https://www.vldb.org/pvldb/vol15/p3574-kohn.pdf

  • Parquet 格式简介https://hf.co/blog/cfahlgren1/intro-to-parquet-format

  • Hugging Face + DuckDBhttps://hf.co/docs/hub/en/datasets-duckdb

  • SQL 摘要空间https://hf.co/spaces/cfahlgren1/sql-snippets


英文原文:https://hf.co/blog/sql-console

原文作者: Caleb Fahlgren

译者: smartisan

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

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

相关文章

简易了解Pytorch中的@ 和 * 运算符(附Demo)

目录 1. 基本知识2. 3. * 1. 基本知识 在 PyTorch 中, 和 * 运算符用于不同类型的数学运算,具体是矩阵乘法和逐元素乘法 基本知识 运算符功能适用场景示例矩阵乘法(或点乘)用于执行线性代数中的矩阵乘法C A B,其中…

JavaScript知识点梳理及案例实践

1. Date对象 创建Date对象 //方法1:不指定参数 var nowd1new Date(); console.log(nowd1.toLocaleString( )); //方法2:参数为日期字符串 var d2new Date("2004/3/20 11:12"); console.log(d2.toLocaleString( )); var d3new Date("04/…

推荐一款Windows维护和修复工具包:RepairKit

RepairKit是一个综合性的Java开发的Windows修复和维护工具包。该工具包旨在为用户提供一个专用的系统修复工具,并快速访问一些操作系统功能及其他附带的电脑维护软件。 RepairKit 提供了一个简单有效的解决方案,用于维护PC的顺畅运行。它包括自动修复/清…

cocos开发QA

目录 TS相关foreach循环中使用return循环延迟动态获取类属性 Cocos相关属性检查器添加Enum属性实现不规则点击区域使用cc.RevoluteJoint的enable激活组件无效本地存储以及相关问题JSON.stringify(map)返回{}数据加密客户端复制文本使用客户端方法热更新LabelOutline.color is d…

大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

记第一次本地编译seatunnel源码

拉取代码 git clone https://github.com/apache/seatunnel.git 使用版本 我们生产环境用的是2.3.5版本,所以基于2.3.5-release分支代码进行编译。 maven package过程 遇到的第一个问题:‘com.sun.tools.javac.tree.JCTree com.sun.tools.javac.tree…

6.1、属性动画

使用显式动画产生布局更新动画 1.旋转动画 只修改对应的属性 rotate({angle: this.angle}) 即可达到效果 动画效果 对应实现代码 @Entry @Component struct AnimationPage {@State angle:number = 0aboutToAppear() {

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨,基于无线遥控的,但是整体太大了,非常不方便携带,所以重新设计了一个新的,以2020铝型材做导轨的滑轨,目前2020做滑轨已经很成熟了,配件也都非常便宜&#x…

Git在码云上的使用指南:从安装到推送远程仓库

目录 前言: 1、git的安装 1.1.Linux-centos环境下安装 1.2.Linux-ubuntu环境下安装 2.创建Git本地仓库 3.配置Git 4.认识⼯作区、暂存区、版本库 5.添加文件 5.1.git命令 5.2.commit命令 6.远程操作 6.1.新建远程仓库 6.2.克隆远程仓库: 6…

GESP4级考试语法知识(冒泡排序)

冒泡排序参考程序&#xff1a; #include <iostream> using namespace std; const int MAXN10001; int main() {int n,i,j;float a[MAXN];cin>>n;for(i1;i<n;i)cin>>a[i]; //输入n个数bool ok;for(in;i>1;i--){oktrue; //判断是…

无人机场景 - 目标检测数据集 - 夜间车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;无人机场景夜间车辆检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如夜间无人机场景城市道路行驶车辆图片、夜间无人机场景城市道边停车车辆图片、夜间无人机场景停车场车辆图片、夜间无人机场景小区车辆图片、夜…

重学SpringBoot3-整合 Elasticsearch 8.x (一)客户端方式

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 这里写目录标题 1. 为什么选择 Elasticsearch&#xff1f;2. Spring Boot 3 和 Elasticsearch 8.x 的集成概述2.1 准备工作2.2 添加依赖 3. Elasticsearch 客户端配置方式…

动态规划应该如何学习?

动态规划如何学习 参考灵神的视频和题解做的笔记&#xff08;灵神YYDS&#xff0c;以后也都会用这套逻辑去思考&#xff09; 枚举选哪个&#xff1a; 动态规划入门&#xff1a;从记忆化搜索到递推_哔哩哔哩_bilibili 746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&a…

从零开始构建 ChatGPT

今天&#xff0c;我们要介绍的是一个名为 LLMs-from-scratch 的 GitHub 项目&#xff0c;它由开发者 rasbt 精心打造&#xff0c;旨在一步步教你如何使用 PyTorch 从零开始实现一个类似 ChatGPT 的大型语言模型&#xff08;LLM&#xff09;。 这是一个教育性质的开源项目&…

音视频听译:助力多维度沟通与发展的大门

在全球经济一体化的大背景下&#xff0c;企业之间的跨国合作愈发频繁。在商务会议、谈判和产品演示等活动中&#xff0c;语言的多样性成为了一大挑战。而音视频听译服务能够将不同语言的音频准确转换为目标语言文字&#xff0c;确保信息的精准传达&#xff0c;避免因语言障碍引…

向量模型Jina Embedding: 从v1到v3论文笔记

文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相…

为啥学习数据结构和算法

基础知识就像是一座大楼的地基&#xff0c;它决定了我们的技术高度。而要想快速做出点事情&#xff0c;前提条件一定是基础能力过硬&#xff0c;“内功”要到位。 想要通关大厂面试&#xff0c;千万别让数据结构和算法拖了后腿 我们学任何知识都是为了“用”的&#xff0c;是为…

AI打造超写实虚拟人物:是科技奇迹还是伦理挑战?

内容概要 在这个科技飞速发展的时代&#xff0c;超写实虚拟人物仿佛从科幻小说中走进了我们的日常生活。它们以生动的形象和细腻的动作&#xff0c;不仅在影视、广告和游戏中吸引了无数目光&#xff0c;更让我们对AI技术的未来充满了期待和疑惑。这些数字化身在逼真的外貌下&a…

React基础大全

文章目录 一、React基本介绍1.虚拟DOM优化1.1 原生JS渲染页面1.2 React渲染页面 2.需要提前掌握的JS知识 二、入门1.React基本使用2.创建DOM的两种方式2.1 使用js创建&#xff08;一般不用&#xff09;2.2 使用jsx创建 3.React JSX3.1 JSX常见语法规则3.2 for循环渲染数据 4.模…

20241102在荣品PRO-RK3566开发板使用荣品预编译的buildroot通过iperf2测试AP6256的WIFI网速

20241102在荣品PRO-RK3566开发板使用荣品预编译的buildroot通过iperf2测试AP6256的WIFI网速 2024/11/2 14:18 客户端&#xff1a;荣耀手机HONOR 70【iPerf2 for Android】 服务器端&#xff1a;荣品PRO-RK3566开发板 预编译固件&#xff1a;update-pro-rk3566-buildroot-hdmi-2…