DuckDB Hugging Face Hubに保存されている50,000以上のデータセットを分析する

'50,000以上のデータセットを分析するために、DuckDB Hugging Face Hubを使用する'

Hugging Face Hubは、誰にでもデータセットへのオープンアクセスを提供し、ユーザーがそれらを探索し理解するためのツールを提供することに特化しています。Falcon、Dolly、MPT、およびStarCoderなどの人気のある大規模言語モデル(LLM)のトレーニングに使用されるデータセットの多くを見つけることができます。不公平性や偏見を解決するためのDisaggregatorsのようなデータセット用のツールや、データセット内の例をプレビューするためのDataset Viewerなどのツールもあります。

Dataset Viewerを使用してOpenAssistantデータセットのプレビューを表示します。

私たちは、Hub上のデータセットを分析するための別の機能を最近追加しました。Hubに保存されている任意のデータセットでDuckDBを使用してSQLクエリを実行できます!2022年のStackOverflow Developer Surveyによると、SQLは3番目に人気のあるプログラミング言語です。また、分析クエリを実行するために設計された高速なデータベース管理システム(DBMS)が必要でしたので、DuckDBとの統合に興奮しています。これにより、より多くのユーザーがHub上のデータセットにアクセスし、分析することができると思います!

要約

Datasets Serverは、Hub上のすべての公開データセットをParquetファイルに自動変換します。データセットページの上部にある「Auto-converted to 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時代において、より大規模なデータセットとの作業で重要です。これをサポートするために、Datasets ServerはHub上の任意の公開データセットを自動的にParquetファイルに変換して公開します。ParquetファイルへのURLは/parquetエンドポイントで取得できます。

DuckDBで分析する

DuckDBは、複雑な分析クエリを実行するための非常に優れたパフォーマンスを提供します。オーバーヘッドなしでリモートのParquetファイル上でSQLクエリを直接実行することができます。httpfs拡張を使用することで、DuckDBは/parquetエンドポイントから提供されるURLを使用してHubに保存されたデータセットなどのリモートファイルをクエリすることができます。DuckDBはまた、大規模なデータセットを500MBの小さなチャンクに分割するため、複数のParquetファイルをクエリすることもサポートしています。

今後の展望

データセットの中身を知ることは、モデルの開発にとって重要です。なぜなら、それはモデルの品質にさまざまな方法で影響を与える可能性があるからです!ユーザーがHubのデータセットに対して任意のSQLクエリを書き、実行することを許可することで、データセットへのオープンアクセスを可能にし、ユーザーがデータセットの内容により意識的になる手助けをすることができます。この機能を試していただけることを楽しみにしており、分析によってどのような洞察が得られるかを楽しみにしています!

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more