Hugging Face Hub と DuckDB の統合によるデータセット分析
Hugging Face は DuckDB を統合し、ユーザーが Hugging Face Hub に保存されているパブリックデータセットに対して直接 SQL クエリを実行できるようにしました。この統合により、Hub のデータセットを Parquet カラム形式に自動変換する仕組みを活用し、ローカルにダウンロードすることなく巨大なデータセットに対して高速な分析クエリを実行できるようになります。
Automatic Parquet Conversion for Public Datasets
Hugging Face データセットビューアは、Hub 上のすべてのパブリックデータセットを自動的に Parquet ファイルに変換します。Parquet はカラム形式のストレージフォーマットで、データの保存、読み込み、分析において大幅に効率が向上し、これは現在の Large Language Models (LLMs) の時代で使用される大規模データセットにとって重要です。
ユーザーは、データセットページの「Auto-converted to Parquet」ボタンをクリックすることでこれらのファイルを特定できます。これらの Parquet ファイルの具体的な URL は、datasets-server の /parquet エンドポイントを介してプログラムから取得できます。
Analytical Querying with DuckDB
この統合では、複雑な分析クエリの実行における高いパフォーマンスから、DuckDB がデータベース管理システム(DBMS)として使用されます。このセットアップの重要な技術的機能は、DuckDB がオーバーヘッドなしでリモートの Parquet ファイルに対して直接 SQL クエリを実行できることです。
httpfs 拡張機能を使用することで、DuckDB は Hugging Face の /parquet エンドポイントが提供する URL を使ってリモートファイルの読み書きができます。これは特に大規模なデータセットに有用で、データセットビューアが大きなデータセットを 500MB 未満の小さなチャンクに分割し、DuckDB が複数の Parquet ファイルに対して同時にクエリを実行できるためです。
Implementation Example
データセットを分析するには、ユーザーは次の手順に従うことができます:
- Parquet URL を取得: 特定のデータセットの Parquet ファイル URL のリストを取得するために、
/parquetエンドポイントに HTTP リクエストを送信します。 - DuckDB を初期化: 接続を作成し、
httpfs拡張機能をロードしてリモートファイルへのアクセスを有効にします。 - SQL を実行: リモート URL に対して標準的な SQL クエリを直接実行します。
import duckdb
# Example URL retrieved from the /parquet endpoint
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;
# Querying the remote Parquet file
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)""
Implications for Dataset Transparency
Hub データセットへの SQL アクセスを提供することで、研究者や開発者はモデルのトレーニングに使用されるデータセットの内容をよりよく理解できるようになります。データセットの構成がモデルの品質に直接影響するため、このツールはオープンアクセスとデータセット内容への認識の向上を促進する仕組みを提供し、構造化されたクエリを通じてユーザーが洞察を明らかにできるようにします。