Hub documentation

バケット統合

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

バケット統合

Storage Buckets は、huggingface_hub のファイルシステムインターフェースをバックエンドとして、hf://buckets/ パスを使用して、多くの Python データライブラリから読み書きできます。

基本的なアクセスメカニズム(マウント、ボリュームマウント、fsspec)については、アクセスパターンを参照してください。

pandas

import pandas as pd

df = pd.read_parquet("hf://buckets/username/my-bucket/data.parquet")
df.to_parquet("hf://buckets/username/my-bucket/output.parquet")

Dask

Dask は遅延評価で読み書きを行い、ファイルごとに1パーティションずつ処理するため、メモリより大きなデータセットをバケットから直接処理できます:

import dask.dataframe as dd

df = dd.read_parquet("hf://buckets/username/my-bucket/data/")
df.to_parquet("hf://buckets/username/my-bucket/output/")

詳細はHub 上の Daskを参照してください。

Daft

Daftはhf://buckets/パスをネイティブでサポートしており、Xetによる高速化された読み取りがデフォルトで有効になっています:

import daft
from daft.io import IOConfig, HuggingFaceConfig
from huggingface_hub import get_token

io_config = IOConfig(hf=HuggingFaceConfig(token=get_token()))
df = daft.read_parquet("hf://buckets/username/my-bucket/data.parquet", io_config=io_config)

PyArrow

import pyarrow.parquet as pq

table = pq.read_table("hf://buckets/username/my-bucket/data.parquet")

PySpark

pyspark_huggingfaceがインストールされている場合:

df = (
    spark.read.format("huggingface")
    .option("data_files", '["data.parquet"]')
    .load("buckets/username/my-bucket")
)

詳細はHub上のPySparkを参照してください。

🤗 Datasets

from datasets import load_dataset

ds = load_dataset("buckets/username/my-bucket", data_files=["data.parquet"])

Inspect AI

Inspect AIは、評価ログをバケットに直接書き出すことができます。ログディレクトリをhf://buckets/パスに設定してください(huggingface_hub>=1.6.0が必要です)。まずバケットを作成し、認証を行ってください(Inspectはバケットを作成しません):

hf auth login
hf buckets create username/my-bucket --private

export INSPECT_LOG_DIR=hf://buckets/username/my-bucket/eval-logs
inspect eval popularity.py --model openai/gpt-4
inspect view

詳細については、Inspectのevalログガイドを参照してください。

SkyPilot

SkyPilotは、20以上のクラウド、Kubernetes、オンプレミス環境でAIワークロードを実行でき、Hugging Faceのストレージをバックエンドとして利用できます。これにより、1つのバケットをすべてのクラウドから読み取ることができ、クラウドごとのコピーは不要です。file_mountsエントリにstore: hfを設定すると、バケットを読み書き可能に、またはリポジトリを読み取り専用としてマウントできます:

# qwen-sft.yaml — launch anywhere: sky launch qwen-sft.yaml --infra aws|gcp|...
resources:
  accelerators: H100:1

file_mounts:
  /base-model:
    source: hf://Qwen/Qwen2.5-3B           # model repo, read-only
    store: hf
    mode: MOUNT
  /data:
    source: hf://datasets/username/my-data@v1.0   # dataset repo, pinned to a tag, read-only
    store: hf
    mode: MOUNT
  /checkpoints:
    source: hf://buckets/username/qwen-sft   # bucket, read-write — checkpoints sync back
    store: hf
    mode: MOUNT

run: |
  python train.py --model /base-model --output_dir /checkpoints

一度だけ認証 - hf auth login(または export HF_TOKEN=<your-token>)を実行するだけで、SkyPilotに必要な処理は完了です。ローカルの Hugging Face トークンをすべてのクラウドに転送するため、バケットとリポジトリのマウントは自動的に認証されます:

pip install "skypilot[huggingface]"
hf auth login                              # or: export HF_TOKEN=<your-token>
sky launch qwen-sft.yaml

ご自身のrunコードでゲート付きリポジトリを取得する場合は、起動コマンドに--secret HF_TOKENを追加して、トークンを環境変数として公開してください。

MOUNT と MOUNT_CACHED は hf に対して同じように動作し、glibc ≥ 2.34 と /dev/fuse を備えたベースイメージが必要な hf-mount FUSE バックエンドを使用します。Bare-VM クラウドでは両方が提供されています。SkyPilot のデフォルトの Kubernetes イメージには古い glibc が同梱されているため、新しい image_id (例: docker:mirror.gcr.io/ubuntu:22.04) を設定してください。現在の環境要件については、SkyPilot ストレージのドキュメント を参照してください。

ベンチマークと詳細な手順については、SkyPilot + Hugging Face ストレージに関するブログ記事を参照してください。

ファイルシステム操作

直接のファイル操作を行う場合、huggingface_hubは事前インスタンス化されたファイルシステムオブジェクト、hffsを公開しています:

from huggingface_hub import hffs

with hffs.open("buckets/username/my-bucket/hello.txt", "w") as f:
    f.write("Hello world!")

hffs.cp("buckets/username/my-bucket/hello.txt", "buckets/username/my-bucket/hello2.txt")
hffs.rm("buckets/username/my-bucket/hello2.txt")
files = hffs.ls("buckets/username/my-bucket")
text_files = hffs.glob("buckets/username/my-bucket/*.txt")

DuckDB

DuckDB 2.0以降は、httpfs拡張機能(書き込みにはhf拡張機能)を通じて、hf://buckets/パスをネイティブで読み取ります。CLIおよびすべてのクライアントから利用できます。

SELECT * FROM 'hf://buckets/username/my-bucket/data/**/*.parquet' LIMIT 10;
COPY tbl TO 'hf://buckets/username/my-bucket/out.parquet';

プライベートバケットおよび旧バージョンのDuckDBについては、DuckDBでのクエリを参照してください。

その他の言語

OpenDAL は、Rust、Java、Go、JavaScript など、同様のファイルシステムインターフェースを提供します。

近日公開

ネイティブのhf:// URLサポートは、PolarsやWebDatasetを含むより多くのライブラリに向けて準備が進められています。その間、これらはいずれもS3互換APIを通じて現在すでに動作しています。

Update on GitHub