Hugging Face lanza Storage Buckets para artefactos ML | Keryc
Imagina un lugar en el Hub donde dejas todo lo que está "en movimiento": checkpoints, shards procesados, logs y trazas. Storage Buckets llega para cubrir justo eso: un almacenamiento mutable, tipo S3, pensado para los artefactos efímeros y de alto rendimiento que genera ML en producción.
Qué son los Storage Buckets y por qué importan
Un Bucket es un contenedor no versionado dentro del Hub. Vive bajo tu usuario u organización, respeta los permisos de Hugging Face, puede ser privado o público, tiene una página web y una dirección programática como hf://buckets/usuario/mi-bucket.
¿Por qué no usar Git para esto? ¿Has visto cuánto ruido genera un entrenamiento que escribe checkpoints cada few minutos? Git no fue diseñado para objetos mutables y de gran tamaño que cambian constantemente. Buckets están diseñados para escribir rápido, sobrescribir cuando sea necesario, sincronizar directorios y eliminar archivos obsoletos sin complicaciones.
La ventaja técnica: Xet y deduplicación por chunks
Buckets se construyen sobre Xet, el backend de almacenamiento basado en chunks. En lugar de tratar cada archivo como un blob monolítico, Xet divide el contenido en piezas y deduplica entre ellas.
¿Qué significa eso para tus pipelines?
Subes un dataset procesado que es muy parecido al raw y muchos chunks ya existen. No reenvías bytes que ya están.
Guardas checkpoints sucesivos donde muchas capas no cambian. Los chunks compartidos no se vuelven a almacenar.
Resultado: menos ancho de banda, transferencias más veloces y almacenamiento más eficiente. Para clientes Enterprise esto se traduce en facturación sobre almacenamiento deduplicado, así que compartir chunks reduce costos.
Rendimiento global y pre-warming por región
Los Buckets viven en el Hub y por defecto son accesibles globalmente. Pero la latencia importa cuando haces entrenamiento distribuido o pipelines a escala.
La función de pre-warming permite traer datos calientes más cerca del proveedor y la región donde corre tu compute. En vez de mover datos entre regiones en cada lectura, declaras dónde los necesitas y Buckets los colocan ahí antes de que arranque el trabajo. Muy útil para clusters de entrenamiento y setups multi-región.
Hugging Face comienza con integraciones con AWS y GCP. Más proveedores llegarán después.
Cómo empezar rápido con la CLI
Puedes crear un Bucket en menos de 2 minutos con la CLI de hf. Ejemplo mínimo:
También hay comandos para copiar archivos puntuales con hf buckets cp y limpiar objetos con hf buckets remove.
Integración programática: Python, JavaScript y fsspec
Si prefieres código, la librería huggingface_hub soporta Buckets desde v1.5.0. Integrarlo en scripts de entrenamiento es directo:
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/usuario/mi-training-bucket/checkpoints',
)
for item in list_bucket_tree('usuario/mi-training-bucket', prefix='checkpoints', recursive=True):
print(item.path, item.size)
Para aplicaciones Node.js hay soporte en @huggingface/hub desde v2.10.5.
Además, Buckets funcionan con HfFileSystem, compatible con fsspec. Eso significa que cualquier librería que use fsspec puede leer y escribir directamente en un Bucket. Ejemplos prácticos:
from huggingface_hub import hffs
# listar
hffs.ls('buckets/usuario/mi-training-bucket/checkpoints', detail=False)
# glob
hffs.glob('buckets/usuario/mi-training-bucket/**/*.parquet')
# leer
with hffs.open('buckets/usuario/mi-training-bucket/config.yaml', 'r') as f:
print(f.read())
Y para Pandas o Polars:
import pandas as pd
# leer CSV directamente desde un Bucket
df = pd.read_csv('hf://buckets/usuario/mi-training-bucket/results.csv')
# escribir resultados
df.to_csv('hf://buckets/usuario/mi-training-bucket/summary.csv')
Eso hace muy sencillo conectar Buckets con pipelines existentes sin reescribir cómo lees o escribes archivos.
Buen patrón de uso: capa mutable vs capa versionada
Buckets son el lugar para lo que está en movimiento. Cuando algo se vuelve un deliverable estable, lo normal es promoverlo a un repo versionado de modelos o datasets en el Hub.
En la hoja de ruta está planeado soportar transferencias directas entre Buckets y repos en ambas direcciones: promover checkpoints finales a un repo de modelo, o subir shards procesados a un repo de dataset. De ese modo la capa de trabajo y la de publicación conviven en un flujo continuo nativo del Hub.
Experiencias y adopción temprana
Antes del lanzamiento público hubo una beta privada con partners como Jasper, Arcee, IBM y PixAI. Gracias a ese feedback la herramienta mejoró en fiabilidad y usabilidad.
Buckets ya están incluidos en los planes de almacenamiento del Hub. Las cuentas gratuitas tienen espacio para empezar, y los planes PRO y Enterprise ofrecen límites mayores. Para Enterprise, la facturación toma en cuenta la deduplicación.
Si vienes de S3, la experiencia es familiar, pero con mejores garantías para artefactos de IA gracias a Xet y la integración con el Hub.
Usar Buckets te permite mantener más del ciclo de vida ML en un solo lugar: desde la experimentación hasta la publicación final.