Hugging Face ha introducido Storage Buckets, una solución diseñada para manejar el flujo constante de archivos intermedios en machine learning. Estos archivos, que incluyen checkpoints y logs, a menudo cambian y no requieren control de versiones.
Los Storage Buckets ofrecen un almacenamiento mutable similar a S3, accesible a través del Hub, desde Python o mediante la interfaz de línea de comandos hf. Gracias a su respaldo en Xet, son especialmente eficaces para artefactos de ML que comparten contenido entre archivos.
¿Por qué construimos Buckets?
El uso de Git puede ser ineficaz en situaciones que implican:
- Clusters de entrenamiento que generan checkpoints y estados del optimizador.
- Pipelines de datos procesando conjuntos de datos en iteraciones.
- Agentes almacenando trazas y gráficos de conocimiento compartidos.
La necesidad de almacenamiento en estos casos se centra en la rapidez, sobreescritura, sincronización de directorios y eliminación de archivos obsoletos.
Un Bucket es un contenedor de almacenamiento no versionado que puede ser privado o público. Se puede acceder a él programáticamente y tiene un espacio en el navegador.
¿Por qué es importante Xet?
Los Buckets se basan en Xet, un backend de almacenamiento que descompone el contenido en fragmentos. Esto permite evitar la duplicación, lo que resulta en menos uso de ancho de banda y transferencias más rápidas.
Xet es ideal para cargas de trabajo de ML, donde se generan familias de artefactos relacionados. Para clientes empresariales, la facturación se basa en almacenamiento deduplicado, lo que reduce costos.

Pre-calentamiento: acercando datos a la computación
Los Buckets están ubicados en el Hub, lo que implica almacenamiento global. Sin embargo, algunos trabajos requieren acceder a datos de manera más rápida, lo que afecta el rendimiento.
El pre-calentamiento permite acercar los datos a la región del proveedor de nube donde se ejecutan los trabajos. Esto es crucial para clusters de entrenamiento que necesitan acceso rápido a grandes conjuntos de datos.
Hemos iniciado asociaciones con AWS y GCP, con más proveedores de nube en camino.

Cómo empezar
Crear un bucket es sencillo y toma menos de 2 minutos usando la CLI hf. Primero, instala y autentica:
curl -LsSf https://hf.co/cli/install.sh | bash hf auth login
Luego, crea un bucket para tu proyecto:
hf buckets create my-training-bucket --private
Para sincronizar un directorio local con el Bucket:
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket/checkpoints
Además, puedes usar --dry-run para ver el plan sin ejecutar:
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket/checkpoints --dry-run
Después de la sincronización, verifica el Bucket desde la CLI:
hf buckets list username/my-training-bucket -h
Así es como funciona: crea un bucket, sincroniza tus datos y revisa cuando sea necesario.
Uso de Buckets desde Python
Todo lo anterior se puede realizar desde Python usando huggingface_hub. La API sigue el mismo patrón de crear, sincronizar e inspeccionar.
from huggingface_hub import create_bucket, list_bucket_tree, sync_bucket create_bucket("my-training-bucket", private=True, exist_ok=True) sync_bucket("./checkpoints", "hf://buckets/username/my-training-bucket/checkpoints") for item in list_bucket_tree("username/my-training-bucket", prefix="checkpoints", recursive=True): print(item.path, item.size)
Esto facilita la integración de Buckets en scripts de entrenamiento y pipelines de datos. También hay soporte en JavaScript mediante @huggingface/hub.
Integración con el sistema de archivos
Los Buckets funcionan a través de HfFileSystem, permitiendo listar, leer y escribir contenidos con operaciones estándar del sistema de archivos.
from huggingface_hub import hffs hffs.ls("buckets/username/my-training-bucket/checkpoints", detail=False) hffs.glob("buckets/username/my-training-bucket/**/*.parquet") with hffs.open("buckets/username/my-training-bucket/config.yaml", "r") as f: print(f.read())
Esto permite integrar Buckets en flujos de trabajo existentes sin cambios significativos.
De Buckets a repositorios versionados
Los Buckets son ideales para almacenar artefactos en movimiento. Una vez que se estabilizan, se transfieren a un repositorio versionado.
Planeamos soportar transferencias directas entre Buckets y repositorios, lo que permitirá una integración fluida entre las capas de trabajo y publicación.
Confiado por socios de lanzamiento
Antes de abrir Buckets, realizamos una beta privada con socios de lanzamiento.

Agradecemos a Jasper, Arcee, IBM y PixAI por sus pruebas y comentarios que ayudaron a dar forma a esta función.
Conclusión y recursos
Storage Buckets añaden una capa de almacenamiento necesaria al Hub, optimizando la gestión de artefactos de ML. Al estar basados en Xet, ofrecen eficiencia en el manejo de artefactos relacionados.
Los Buckets están incluidos en los planes de almacenamiento del Hub, ofreciendo cuentas gratuitas con almacenamiento inicial y límites más altos en planes PRO y Empresariales.
Para más información, visita la página de almacenamiento.
Explora y pruébalo tú mismo:

