Press "Enter" to skip to content

DuckDB:分析存储在Hugging Face Hub上的50,000+个数据集

Hugging Face Hub致力于为所有人提供开放的数据集访问,并为用户提供探索和理解数据集的工具。您可以找到许多用于训练流行的大型语言模型(LLMs)(如Falcon,Dolly,MPT和StarCoder)的数据集。有用于解决数据集中的公平性和偏见的工具,如Disaggregators,以及用于预览数据集中示例的工具,如数据集查看器。

使用数据集查看器预览OpenAssistant数据集。

我们很高兴与您分享,我们最近为帮助您分析Hub上的数据集添加了另一个功能; 您可以在Hub上的任何存储的数据集上使用DuckDB运行SQL查询!根据2022年StackOverflow开发者调查,SQL是第三受欢迎的编程语言。我们还希望拥有一个专为运行分析查询而设计的快速数据库管理系统(DBMS),这就是为什么我们对与DuckDB集成感到兴奋的原因。我们希望这样可以让更多用户访问和分析Hub上的数据集!

TLDR

数据集服务器自动将Hub上的所有公共数据集转换为Parquet文件,您可以通过点击数据集页面顶部的“自动转换为Parquet”按钮来查看。您还可以通过简单的HTTP调用访问Parquet文件URL列表。

  r = requests.get("https://datasets-server.huggingface.co/parquet?dataset=blog_authorship_corpus")
j = r.json()
urls = [f ['url'] for f in j ['parquet_files'] if f ['split'] == 'train']
urls
['https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet',
'https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00001-of-00002.parquet']  

创建到DuckDB的连接,并安装和加载 httpfs 扩展以允许读写远程文件:

  import duckdb

url ="https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet"

con = duckdb.connect()
con.execute("INSTALL httpfs;")
con.execute("LOAD httpfs;") 

连接后,您可以开始编写SQL查询!

  con.sql(f”“”SELECT horoscope,
count(*),
AVG(LENGTH(text))AS avg_blog_length
FROM'{url}'
GROUP BY horoscope
ORDER BY avg_blog_length
DESC LIMIT(5)”
) 

要了解更多信息,请查看文档。

从数据集到Parquet

Parquet文件是列式的,使得它们更有效地存储,加载和分析。当您处理越来越多的LLM时,这一点尤为重要。为了支持这一点,数据集服务器会自动将Hub上的任何公共数据集转换为Parquet文件并发布。可以使用/parquet端点检索到Parquet文件的URL。

使用DuckDB进行分析

DuckDB在运行复杂分析查询时具有非常出色的性能。它能够直接在远程Parquet文件上执行SQL查询而无需任何开销。通过httpfs扩展,DuckDB能够查询远程文件,例如使用/parquet端点提供的URL存储在Hub上的数据集。DuckDB还支持查询多个Parquet文件,这非常方便,因为数据集服务器将大型数据集分为较小的500MB块。

展望未来

了解数据集的内容对于开发模型非常重要,因为它可能会以各种方式影响模型的质量!通过允许用户在Hub数据集上编写和执行任何SQL查询,这是我们为用户提供对数据集的开放访问并帮助用户更加了解数据集内容的另一种方式。我们很期待您尝试一下,并期待您的分析能带来什么样的见解!

Leave a Reply

Your email address will not be published. Required fields are marked *