Hub documentation
SQL操作を実行する
シングルサインオン(SSO) 監査ログ ストレージリージョン プライベートデータセット用の Data Studio リソースグループ(アクセス制御) 高度な計算オプション 高度なセキュリティ トークン管理 サービスアカウント パブリッシャー分析 ゲーティンググループコレクション ネットワークセキュリティ ダウンロード分析 レート制限 ブログ記事
PRO Plan リポジトリ リポジトリの入門 リポジトリ設定 ストレージの制限 ストレージバックエンド (Xet) ローカルキャッシュ Pull Requests と Discussions 通知 コレクション Webhooks GitHub Actions ノートブック 次のステップ ライセンス
モデル モデルハブ モデルカード 評価結果 リーダーボードデータ ゲート付きモデル モデルのアップロード モデルのダウンロード 統合ライブラリ モデルウィジェット モデル推論 モデルのダウンロード統計 モデルリリースチェックリスト ハードウェア ローカルアプリ よくある質問 高度なトピック
データセット Datasetsの概要 Dataset Cards Gated Datasets Datasets のアップロード データセットのアップロード(LLM用) データのダウンロード ストリーミングデータセット 統合ライブラリ
Spaces Argilla Daft Dask Datasets データデザイナー Distilabel DuckDB Embedding Atlas fenic FiftyOne Lance Pandas Polars Spark WebDataset
Data Studio エージェントのトレース Datasets ダウンロード統計 Spaces 概要 Spaces GPU アップグレード Spaces ZeroGPU Spaces Dev Mode Spaces ディスク使用量とストレージ Spaces カスタムドメイン SpacesをMCPサーバーとして Spacesをエージェントツールとして Spaces を API エンドポイントとして利用する Gradio Spaces Streamlit Spaces 静的 HTML Spaces Docker Spaces Space を埋め込む Docker で Spaces を実行する Spaces 設定リファレンス HFでサインイン 注目のスペース Spaces 変更履歴 高度なトピック
ストレージバケット new コンテナイメージ new ジョブ ジョブの概要 クイックスタート 料金と請求 ジョブの管理 設定 Dockerイメージの使用 モデルのサービング モデルの学習 例とチュートリアル 大規模なデータセットの処理 ジョブのスケジュール設定 Webhook 自動化 リファレンス
エージェント エージェントの概要 AIエージェント向けHugging Face CLI Hugging Face MCP Server Hugging Face Agent Skills HF SDK を用いたエージェントの構築 llama.cppによるローカルエージェント エージェントライブラリ セッショントレース形式
その他 SQL操作を実行する
DuckDBを使用してSQL操作を実行すると、データセットを効率的にクエリするための幅広い可能性が広がります。DuckDB関数の強力な機能を示すいくつかの例を見ていきましょう。
デモでは、興味深いデータセットを探索します。MMLUデータセットは、さまざまな知識分野にわたる選択式の問題を含むマルチタスクテストです。
データセットをプレビューするために、3行のサンプルを選択します:
FROM 'hf://datasets/cais/mmlu/all/test-*.parquet' USING SAMPLE 3;
┌──────────────────────┬──────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────┐
│ question │ subject │ choices │ answer │
│ varchar │ varchar │ varchar[] │ int64 │
├──────────────────────┼──────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
│ The model of light… │ conceptual_physics │ [wave model, particle model, Both of these, Neither of these] │ 1 │
│ A person who is lo… │ professional_psych… │ [his/her life scripts., his/her own feelings, attitudes, and beliefs., the emotional reactions and behaviors of the people he/she is interacting with.… │ 1 │
│ The thermic effect… │ nutrition │ [is substantially higher for carbohydrate than for protein, is accompanied by a slight decrease in body core temperature., is partly related to sympat… │ 2 │
└──────────────────────┴──────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┘
このコマンドは、データセットから3行のランダムなサンプルを取得し、確認できるようにします。
まず、データセットのスキーマを確認しましょう。以下の表は、データセットの構造を示しています。
DESCRIBE FROM 'hf://datasets/cais/mmlu/all/test-*.parquet' USING SAMPLE 3;
┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ question │ VARCHAR │ YES │ │ │ │
│ subject │ VARCHAR │ YES │ │ │ │
│ choices │ VARCHAR[] │ YES │ │ │ │
│ answer │ BIGINT │ YES │ │ │ │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┘
次に、データセットに重複するレコードがあるかどうかを分析します。
SELECT *,
COUNT(*) AS counts
FROM 'hf://datasets/cais/mmlu/all/test-*.parquet'
GROUP BY ALL
HAVING counts > 2;
┌──────────┬─────────┬───────────┬────────┬────────┐
│ question │ subject │ choices │ answer │ counts │
│ varchar │ varchar │ varchar[] │ int64 │ int64 │
├──────────┴─────────┴───────────┴────────┴────────┤
│ 0 rows │
└──────────────────────────────────────────────────┘
幸いなことに、私たちのデータセットには重複したレコードは含まれていません。
棒グラフで、科目ごとの質問の割合を見てみましょう:
SELECT
subject,
COUNT(*) AS counts,
BAR(COUNT(*), 0, (SELECT COUNT(*) FROM 'hf://datasets/cais/mmlu/all/test-*.parquet')) AS percentage
FROM
'hf://datasets/cais/mmlu/all/test-*.parquet'
GROUP BY
subject
ORDER BY
counts DESC;
┌──────────────────────────────┬────────┬────────────────────────────────────────────────────────────────────────────────┐
│ subject │ counts │ percentage │
│ varchar │ int64 │ varchar │
├──────────────────────────────┼────────┼────────────────────────────────────────────────────────────────────────────────┤
│ professional_law │ 1534 │ ████████▋ │
│ moral_scenarios │ 895 │ █████ │
│ miscellaneous │ 783 │ ████▍ │
│ professional_psychology │ 612 │ ███▍ │
│ high_school_psychology │ 545 │ ███ │
│ high_school_macroeconomics │ 390 │ ██▏ │
│ elementary_mathematics │ 378 │ ██▏ │
│ moral_disputes │ 346 │ █▉ │
├──────────────────────────────┴────────┴────────────────────────────────────────────────────────────────────────────────┤
│ 57 rows (8 shown) 3 columns │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
では、栄養に関する質問を含むデータセットのサブセットを準備し、質問から正解へのマッピングを作成しましょう。 choicesという列があり、answer列をインデックスとして使用することで正解を取得できることに注意してください。
SELECT *
FROM 'hf://datasets/cais/mmlu/all/test-*.parquet'
WHERE subject = 'nutrition' LIMIT 3;
┌──────────────────────┬───────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────┐
│ question │ subject │ choices │ answer │
│ varchar │ varchar │ varchar[] │ int64 │
├──────────────────────┼───────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────┤
│ Which foods tend t… │ nutrition │ [Meat, Confectionary, Fruits and vegetables, Potatoes] │ 2 │
│ In which one of th… │ nutrition │ [If the incidence rate of the disease falls., If survival time with the disease increases., If recovery of the disease is faster., If the population in which the… │ 1 │
│ Which of the follo… │ nutrition │ [The flavonoid class comprises flavonoids and isoflavonoids., The digestibility and bioavailability of isoflavones in soya food products are not changed by proce… │ 0 │
└──────────────────────┴───────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┘
SELECT question,
choices[answer] AS correct_answer
FROM 'hf://datasets/cais/mmlu/all/test-*.parquet'
WHERE subject = 'nutrition' LIMIT 3;
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────┐
│ question │ correct_answer │
│ varchar │ varchar │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────┤
│ Which foods tend to be consumed in lower quantities in Wales and Scotland (as of 2020)?\n │ Confectionary │
│ In which one of the following circumstances will the prevalence of a disease in the population increase, all else being constant?\n │ If the incidence rate of the disease falls. │
│ Which of the following statements is correct?\n │ │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────┘
データのクリーンさを確保するために、質問の末尾にある改行文字を削除し、空の回答を除外しましょう。
SELECT regexp_replace(question, '\n', '') AS question,
choices[answer] AS correct_answer
FROM 'hf://datasets/cais/mmlu/all/test-*.parquet'
WHERE subject = 'nutrition' AND LENGTH(correct_answer) > 0 LIMIT 3;
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────┐
│ question │ correct_answer │
│ varchar │ varchar │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────┤
│ Which foods tend to be consumed in lower quantities in Wales and Scotland (as of 2020)? │ Confectionary │
│ In which one of the following circumstances will the prevalence of a disease in the population increase, all else being constant? │ If the incidence rate of the disease falls. │
│ Which vitamin is a major lipid-soluble antioxidant in cell membranes? │ Vitamin D │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────┘
最後に、このセクションで使用されたDuckDBの関数のいくつかを強調しておきます。
DESCRIBEは、テーブルのスキーマを返します。USING SAMPLEでは、サンプルを使用してデータセットのサブセットをランダムに選択します。BARは、幅が(x - min)に比例し、x = maxのときにwidth文字分に等しいバンドを描画します。widthのデフォルト値は80です。string[begin:end]は、スライスの慣用に従って文字列を抽出します。begin または end の引数が省略されている場合、それぞれリストの先頭または末尾と解釈されます。負の値も受け付けられます。regexp_replaceは、文字列に正規表現パターンが含まれている場合、一致する部分を置換文字列に置き換えます。LENGTHは、文字列の文字数を取得します。
Update on GitHubDuckDBのSQL関数概要には、多くの便利な関数が用意されています。最大の利点は、これらをHugging Faceのデータセットに直接適用できることです。