Per la maggior parte delle squadre, modelli e set di dati risiedono in un bucket in una regione specifica di una singola nuvola. Gli elaboratori GPU, invece, che si tratti di sviluppo, addestramento o servizio, spesso risiedono su cloud diversi da quelli dei dati. Appena questi due fattori divergono, gli utenti pagano una tassa di trasferimento tra cloud solo per leggere i propri dati sui propri GPU.

Conjointamente a Hugging Face, è stata unita la parte modelli ai dispositivi di calcolo: i modelli e i dati restano sul Hub, mentre SkyPilot esegue il calcolo (sviluppo, addestramento o servizio) su qualsiasi cluster abbia disponibilità GPU. Con una singola URL hf:// e il tuo token HF_TOKEN, puoi montare un bucket Hugging Face o qualsiasi repositorio del Hub in un compito SkyPilot, e lanciare l'esecuzione dove esiste capacità. Hugging Face non applica alcun costo di uscita, quindi il costo per leggere i dati sulle GPU è zero, su qualsiasi cloud.

Leggere, scrivere e pubblicare in tutto il ciclo di vita del modello

Le task di SkyPilot sono già in grado di leggere e scrivere su varie piattaforme di archiviazione in cloud (S3, GCS, Azure, R2 e molte altre) utilizzando percorsi locali. Ora l'archiviazione Hugging Face fa parte di questa lista, accessibile tramite lo schema hf://.

Questo schema unico comprende l'intero ciclo di vita del modello: leggere il modello e il dataset dai propri repos, scrivere checkpoint durante l'addestramento in un bucket, pubblicare il modello concluso in un repo o prelevarlo sul server di inferenza al momento dell'esecuzione. La maggior parte delle squadre già mantiene modelli e dataset su Hub, quindi nessun passo di migrazione o nuovo account di archiviazione è richiesto.

Mount e caching intelligente

Il processo MOUNT utilizza il backend di hf-mount di Hugging Face, che mostra un bucket o un repositorio come percorso locale accanto agli altri mounts di FUSE di SkyPilot (gcsfuse, blobfuse2, rclone, goofys). Il caricamento avviene a livello di sistema file: quando il codice esegue una read(), il driver richiama solo quei determinati byte del backend Xet, e solo i dati effettivamente letti passano tramite la rete. hf-mount memorizza in cache su disco i dati letti in modo che le letture ripetute siano locali. Ciò significa che con il tipo hf-store, MOUNT_CACHED e MOUNT hanno lo stesso effetto, e la cache è conservata in entrambi i casi.

Questo approccio di lettura pigrizia fa in modo che un processo possa iniziare a elaborare un file grande prima che l'intero sia scaricato, mantendo la GPU occupata quasi immediatamente e permettendole di lavorare sui dati mentre vengono scaricati, invece di rimanere inattiva durante il download. L'effetto maggiore si ha durante la prima epoca, quando non si ha ancora niente in cache. COPY offre invece un approccio diverso, scaricando dati tramite huggingface_hub all'inizio, senza richiedere configurazioni aggiuntive.

Autenticazione semplice con un token esistente

Per l'autenticazione, si utilizza semplicemente il token HFTOKEN già in uso. Definilo nell'ambiente e passalo come segreto (--secret HFTOKEN) durante l'esecuzione. SkyPilot utilizza tale token per montare il bucket in qualsiasi cloud in cui il compito sia in esecuzione. Un singolo token è utilizzabile su AWS, GCP, Azure, Nebius, Lambda o un proprio cluster Kubernetes, rendendo superfluo mantenere chiavi diverse per ogni piattaforma cloud.

Capacità GPU distribuite su cloud diversi

La capacità GPU non proviene quasi mai da un'unica fonte. Per ottenere abbastanza H100 e H200, le squadre spesso riservano risorse su diversi fornitori, come blocchi di scalabilità cloud e cluster indipendenti, avviando il calcolo là dove c'è disponibilità. SkyPilot è realizzato per lavorare in questo scenario: uno specifica dell'attività unica può essere pianificata su più di 20 cloud, Kubernetes o infrastruttura on-premise, collocandosi dove i cluster riservati siano liberi.

Archiviazione come nodo unico tra cloud

L'archiviazione object è un aspetto problematico. L'archiviazione è regionale e dipende da cloud specifici, quindi alimentare un GPU od un server di servizio in una diversa struttura di cloud richiede di mantenere una copia dei dati in ogni bucket oppure di pagarne il trasferimento. La maggior parte dei cloud addebita per l'uscita (circa $0,09 per GB da AWS) appena i dati lasciano la loro rete, e spesso anche durante il trasferimento tra regioni nello stesso cloud. Trasferire un modello di base su ogni nodo di inferenza, o iterare un dataset su diversi cluster in cloud diversi, aggiunge un notevole costo aggiuntivo alla GPU già riservata. Di conseguenza, le squadre finiscono spesso per limitare le esecuzioni laddove risiedano i dati e lasciare disutilizzata la capacità residua.

Costi ridotti grazie a zero uscita da Hugging Face

Hugging Face elimina molti di questi costi, specialmente su lato di lettura. L'Hub di Hugging Face non addebita uscita né canone CDN, e il costo per archiviazione è intorno a $12-18/TB/mese (rispetto a $23/TB/mese di AWS S3 più uscita). Lo stesso bucket può essere raggiunto da ogni cluster, senza che i costi di lettura dipendano dalla posizione dei GPU. Scrivere i dati invece addebita l'usuale costo di uscita del cloud in uso, come accade con qualsiasi archiviazione esterna, ma in AI la lettura prevale: dataset che vengono letto per molteplici epoche e il peso del modello caricato su ogni GPU di addestramento o servizio. Si smette quindi di restringere ciascuna sessione laddove risiede la copia dati.

Esempio di benchmark con Qwen

Per raccogliere dati di benchmark, si è effettuato un piccolo fine-tuning del modello Qwen/Qwen3.5-4B su un dataset multilingua H4/Multilingual-Thinking, utilizzando il SFTTrainer di TRL. Il modello è stato caricato in sola lettura dal repos Hub, e ogni checkpoint è stata salvato in un bucket Hugging Face. La stessa specifica YAML di SkyPilot è stata eseguita su AWS, GCP e Lambda. L'infrastruttura (--infra) è stata l'unico parametro variabile. SkyPilot ha collocato ciascun compito là dove aveva disponibilità GPU, e le tre esecuzioni hanno letto e scritto lo stesso bucket.

Deduplicazione e gestione intelligente del contenuto

Gli Hugging Face Buckets sono costruiti su Xet, che utilizza la cosiddetta chunking basato sul contenuto per dividere i file in tasselli di circa 64 KB, memorizzando una sola volta ciascun tassello unico. I confini dei tasselli seguono il contenuto