Hub documentation
バケット統合
バケット統合
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を通じて現在すでに動作しています。