Hacer correr entrenamiento o serving donde haya GPUs libres sin mover tus datos entre nubes suena a magia, pero ahora es práctico. Hugging Face y SkyPilot integraron el store: hf para montar buckets y repos del Hub con una URL hf:// y tu HF_TOKEN. ¿El resultado? Tus modelos y datasets permanecen en el Hub y SkyPilot corre el cómputo en la nube o cluster que tenga capacidad, leyendo directo del mismo bucket sin cobrar egress por lectura.
Qué trae esta integración
Monta cualquier Bucket de Hugging Face (lectura-escritura) o un repo de modelo/dataset/Space (solo lectura) con una sola hf:// URL y tu HF_TOKEN.
Ejecuta en cualquier GPU, en 20+ clouds, Kubernetes, Slurm o on-prem: SkyPilot selecciona dónde correr la tarea dependiendo de la capacidad disponible.
No hay cargos de egress al leer. Hugging Face Storage no cobra egress ni CDN por lectura, así que tus GPUs pueden leer modelos y datasets sin que te cobren por transferir esos bytes.
Storage con Xet y deduplicación por chunks. Checkpoints incrementales y variantes de modelos solo transfieren los chunks que cambian.
Trabajo conjunto y open source: el soporte vino en colaboración, incluyendo fixes en hf-mount para contenedores sin privilegios.
Cómo funciona técnicamente (resumen práctico)
El hf:// scheme aparece en la sección file_mounts del spec de SkyPilot. Puedes usar mode: MOUNT o mode: COPY.
MOUNT usa hf-mount (FUSE). El repo o bucket aparece como un path local. Las lecturas son perezosas: cuando tu código hace read(), solo se bajan los bytes que realmente se tocan.
MOUNT_CACHED y MOUNT se comportan igual para el store: hf: hay cache en disco, así que lecturas repetidas son locales.
COPY descarga todo por adelantado usando huggingface_hub, útil si necesitas la copia completa antes de empezar.
Autenticación: pones HF_TOKEN en el entorno y pasas --secret HF_TOKEN a la ejecución. El mismo token funciona en AWS, GCP, Azure, Nebius, Lambda o tu Kubernetes, sin llaves por cada nube.
Por qué importa (problema que resuelve)
Antes, alimentar GPUs repartidas por varios proveedores implicaba mantener copias del dato en cada nube o pagar egress cada vez que un GPU en otra red tiraba del objeto. Eso provoca que equipos "pin" sus runs al proveedor que contiene los datos y dejen capacidad ociosa en otros lugares.
Con Hugging Face Storage y SkyPilot lees desde el mismo bucket sin pagar egress por lectura. Es especialmente relevante cuando:
Iteras datasets por muchas epochs.
Haces despliegues de inferencia que tiran del mismo modelo en varias nubes.
Tienes checkpoints frecuentes y grandes que compartir.
Ten en cuenta que escribir al bucket sigue cobrando el egress de tu nube de cómputo (salida hacia el servicio externo), así que la lectura es la gran ganancia aquí.
Xet y deduplicación: un detalle que ahorra mucho
Hugging Face Buckets usan Xet, que separa archivos en chunks de contenido (aprox 64 KB) y guarda cada chunk una sola vez. ¿Qué ventajas prácticas?
Checkpoints incrementales suben solo los chunks modificados.
Variantes de un mismo modelo comparten chunks comunes, reduciendo reutilizaciones.
Al appending en tablas Parquet solo transfieres las filas nuevas. En una prueba, añadir 10k filas a una tabla de 100k movió 10 MB en vez de 106 MB.
Re-subir un blob ya en el bucket fue mucho más rápido: primer upload 24 s, re-upload 8 s en la prueba, porque solo se transfirieron hashes y chunks nuevos.
Benchmark práctico que hicieron (resumen técnico)
Ejecutaron un fine-tune de Qwen/Qwen3.5-4B sobre el dataset HuggingFaceH4/Multilingual-Thinking con TRL SFTTrainer, montando el modelo en modo lectura y escribiendo checkpoints en un Bucket.
Inicio de training listo en ~30 s porque las lecturas son perezosas y from_pretrained solo toca lo necesario (hasta ~500 MB/s en lectura inicial).
Checkpoints de 8.43 GB escritos al bucket a velocidades sostenidas:
AWS (us-east-2), GPU L40S: ~168 MB/s
GCP (us-central1), GPU L4: ~123 MB/s
Lambda (us-west-3), H100: ~112 MB/s
La misma YAML corrió en AWS, GCP y Lambda cambiando solo --infra y SkyPilot ubicó cada job donde había GPUs libres, todo leyendo/escribiendo al mismo bucket.
Evitas egress por lectura, reduciendo costos en workloads distribuidos.
No tienes que migrar datos si ya usas el Hub: la mayoría de equipos mantienen modelos y datasets en el Hub.
Deduplicación automática con Xet ahorra ancho de banda y almacenamiento.
Integración multi-cloud y on-prem con un solo spec.
Consideraciones:
Escrituras desde la nube de cómputo siguen incurriendo en egress de esa nube.
MOUNT requiere una imagen base con glibc >= 2.34 y /dev/fuse disponible.
Para contenedores sin privilegios ya se aplicaron fixes, pero revisa permisos y límites del cluster.
Cómo empezar rápido
Instala SkyPilot con el plugin de Hugging Face:
pip install "skypilot[huggingface]"
Autentica tu CLI de Hugging Face:
hf auth login
# o: export HF_TOKEN=<tu-token>
Añade un hf:// mount a tu spec y lanza la tarea. Pasa el token con --secret HF_TOKEN para que SkyPilot lo use en la nube destino.
Notas de despliegue: MOUNT necesita glibc 2.34+ y /dev/fuse. COPY no tiene ese requisito porque descarga por adelantado.
Reflexión final
Esta integración cambia una de las fricciones más reales al correr IA a escala multi-cloud: el costo y la complejidad de mover datos. Ya no tienes que decidir entre mantener copias redundantes o pagar egress cada vez que arrancas GPUs en otro proveedor. ¿El resultado para tu equipo? Más flexibilidad para usar la capacidad disponible y menos tiempo perdido en transferencias y en facturas inesperadas.