メインコンテンツまでスキップ
に最終更新

Hugging Face データの分析

Hugging Face は、機械学習モデル、データセット、その他のリソースを保存、共有し、共同で開発できるプラットフォームです。Hugging Face Dataset のリポジトリには、CSV、Parquet、JSONL など、さまざまな形式のデータファイルを格納できます。

Doris では、HTTP テーブル値関数を使用し、Hugging Face のデータセットに SQL で直接アクセスして分析できます。

注記

この機能はバージョン 4.0.2 以降でサポートされています。

機能​

機能説明
アクセスプロトコルHTTP プロトコルを使用して Hugging Face Dataset にアクセスします
型推論型の自動推論をサポートします
対応ファイル形式CSV、JSON、Parquet、ORC
データ操作CREATE TABLE AS SELECT と INSERT INTO ... SELECT をサポートします

パラメータは File テーブル値関数と同じです。

URI の構文​

Hugging Face のデータセットにアクセスするための URI 形式は次のとおりです。

hf://datasets/<owner>/<repo>[@<branch>]/<path>
構成要素説明必須
ownerデータセットの所有者はい
repoデータセットのリポジトリ名はい
branchブランチ名。デフォルトは mainいいえ
pathファイルパス。ワイルドカードを使用できますはい

ワイルドカードの説明:

ワイルドカード説明例
*単一のディレクトリ階層内の任意の文字列に一致します*/*.parquet は直下の各サブディレクトリにあるすべての Parquet ファイルに一致します
**複数のディレクトリ階層に再帰的に一致します**/*.parquet はすべての階層にある Parquet ファイルに一致します
[...]文字集合内の任意の一文字に一致しますtest-0000[0-9].parquet は test-00000 から test-00009 までに一致します

ユースケース​

ケース 1:データをすばやくクエリする​

ファイルをダウンロードせずに、Hugging Face の公開データセットを SQL で直接クエリします。

例: fka/awesome-chatgpt-prompts リポジトリの CSV データをクエリします。

SELECT COUNT(*) FROM
HTTP(
"uri" = "hf://datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv",
"format" = "csv"
);

対応するデータファイル: https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/blob/main/prompts.csv

例: ワイルドカードで複数のファイルに一致させ、stanfordnlp/imdb リポジトリの Parquet ファイルをクエリします。

SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/*/*.parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

ケース 2:ローカルテーブルにデータを取り込む​

Hugging Face のデータセットを Doris のテーブルに取り込み、後で分析できるようにします。

方法 1: CREATE TABLE AS SELECT を使用して新しいテーブルを作成し、データを取り込みます。

CREATE TABLE hf_table AS
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@script/dataset_infos.json",
"format" = "json"
);

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/script/dataset_infos.json

方法 2: INSERT INTO ... SELECT を使用して既存のテーブルにデータを挿入します。

INSERT INTO hf_table
SELECT * FROM
HTTP(
"uri" = "hf://datasets/stanfordnlp/imdb@main/**/test-00000-of-0000[1].parquet",
"format" = "parquet"
) ORDER BY text LIMIT 1;

対応するデータファイル: https://huggingface.co/datasets/stanfordnlp/imdb/blob/main/plain_text/test-00000-of-00001.parquet

ケース 3:非公開データセットにアクセスする​

認証が必要なデータセットにアクセスするには、リクエストにトークン認証を追加する必要があります。

手順:

  1. Hugging Face アカウントにログインし、アクセストークン(hf_ で始まるもの)を取得します。
  2. SQL で http.header.Authorization プロパティを使用してトークンを渡します。

例:

SELECT * FROM
HTTP(
"uri" = "hf://datasets/gaia-benchmark/GAIA/blob/main/2023/validation/metadata.level1.parquet",
"format" = "parquet",
"http.header.Authorization" = "Bearer hf_MWYzOJJoZEymb..."
) LIMIT 1\G