Hub documentation
Intégrations de buckets
Intégrations de buckets
Les Storage Buckets peuvent être lus et écrits par de nombreuses bibliothèques de données Python à l'aide de chemins hf://buckets/, pris en charge par l'interface système de fichiers huggingface_hub.
Pour les mécanismes d’accès sous-jacents — montages, montages de volumes et fsspec — voir Modèles d’accès.
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 lit et écrit de manière paresseuse, une partition par fichier, ce qui vous permet de traiter des jeux de données plus volumineux que la mémoire directement depuis un bucket :
import dask.dataframe as dd
df = dd.read_parquet("hf://buckets/username/my-bucket/data/")
df.to_parquet("hf://buckets/username/my-bucket/output/")Voir Dask sur le Hub pour en savoir plus.
Daft
Daft prend en charge les chemins hf://buckets/ de manière native, avec des lectures accélérées par Xet activées par défaut :
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
Avec pyspark_huggingface installé :
df = (
spark.read.format("huggingface")
.option("data_files", '["data.parquet"]')
.load("buckets/username/my-bucket")
)Voir PySpark sur le Hub pour en savoir plus.
🤗 Datasets
from datasets import load_dataset
ds = load_dataset("buckets/username/my-bucket", data_files=["data.parquet"])Inspect AI
Inspect AI peut écrire des journaux d’évaluation directement dans un bucket — il suffit de définir son répertoire de journaux sur un chemin hf://buckets/ (nécessite huggingface_hub>=1.6.0). Créez d’abord le bucket et authentifiez-vous (Inspect ne le créera pas à votre place) :
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 viewConsultez le guide des journaux d’évaluation d’Inspect pour plus de détails.
SkyPilot
SkyPilot exécute des charges de travail IA sur plus de 20 clouds, Kubernetes et en local, et peut utiliser le stockage Hugging Face comme backend — un seul bucket est donc lisible depuis tous les clouds sans copies par cloud. Définissez store: hf sur une entrée file_mounts pour monter un bucket en lecture-écriture ou un dépôt en lecture seule :
# 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 /checkpointsAuthentifiez-vous une seule fois - hf auth login (ou export HF_TOKEN=<your-token>) est tout ce dont SkyPilot a besoin. Il transmet votre jeton Hugging Face local à chaque cloud, de sorte que les montages de bucket et de dépôt s’authentifient automatiquement :
pip install "skypilot[huggingface]"
hf auth login # or: export HF_TOKEN=<your-token>
sky launch qwen-sft.yamlSi votre propre code run récupère des dépôts sous licence, ajoutez --secret HF_TOKEN à la commande de lancement pour exposer également le jeton en tant que variable d’environnement.
MOUNTetMOUNT_CACHEDse comportent de manière identique pourhfet utilisent le backend FUSE hf-mount, qui nécessite une image de base avec glibc ≥ 2.34 et/dev/fuse. Les clouds de VM nues fournissent les deux. L’image Kubernetes par défaut de SkyPilot embarque une version plus ancienne de glibc, il faut donc définir unimage_idplus récent (par ex.docker:mirror.gcr.io/ubuntu:22.04). Consultez la documentation de stockage SkyPilot pour les exigences environnementales actuelles.
Consultez le article de blog SkyPilot + Hugging Face sur le stockage pour les benchmarks et un guide complet.
Opérations sur le système de fichiers
Pour les opérations de fichiers directes, huggingface_hub expose un objet système de fichiers pré-instantié, 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 et les versions ultérieures lisent les chemins hf://buckets/ nativement via l’extension httpfs (et avec l’extension hf pour l’écriture), depuis l’interface en ligne de commande et tous les clients :
SELECT * FROM 'hf://buckets/username/my-bucket/data/**/*.parquet' LIMIT 10;
COPY tbl TO 'hf://buckets/username/my-bucket/out.parquet';Voir Query with DuckDB pour les buckets privés et les anciennes versions de DuckDB.
Autres langues
OpenDAL fournit une interface système de fichiers similaire pour Rust, Java, Go, JavaScript et d’autres.
Bientôt disponible
La prise en charge native des URL hf:// est en cours de développement pour d'autres bibliothèques, notamment Polars et WebDataset. En attendant, toutes ces bibliothèques fonctionnent déjà aujourd'hui via l'API compatible S3.