Connector for PyTorch

Il connettore Cloud Storage per PyTorch è uno strumento open source per l'integrazione diretta tra Cloud Storage e PyTorch. Questo connettore ti aiuta a caricare i dati di addestramento e a gestire i checkpoint dei modelli per i workload di intelligenza artificiale (AI) e machine learning (ML).

Questa pagina descrive come installare e iniziare a utilizzare il connettore Cloud Storage per PyTorch.

Panoramica

Il Connector for PyTorch offre vantaggi sia per il caricamento dei dati nell'addestramento sia per il checkpoint e il caricamento dei modelli:

Per il caricamento dei dati nell'addestramento, Connector for PyTorch offre i seguenti vantaggi:

  • Il connettore per PyTorch contiene ottimizzazioni per rendere l'addestramento fino a tre volte più veloce rispetto a PyTorch predefinito nei set di dati costituiti principalmente da file di dimensioni inferiori a 1 MB.
  • Connector for PyTorch implementa la primitiva del set di dati di PyTorch che può essere utilizzata per caricare in modo efficiente i dati di addestramento dai bucket Cloud Storage.
  • Supporto per i set di dati in stile mappa per pattern di accesso ai dati casuali e set di dati in stile iterabile per pattern di accesso ai dati di streaming.
  • La possibilità di trasformare i byte non elaborati dei dati scaricati nel formato di tua scelta, consentendo a PyTorch DataLoader di lavorare in modo flessibile con array NumPy o tensori PyTorch.

Per il checkpoint e il caricamento dei modelli, Connector for PyTorch offre i seguenti vantaggi:

  • Un'interfaccia di checkpoint per salvare in modo comodo e diretto i checkpoint dei modelli in un bucket Cloud Storage e caricare i checkpoint dei modelli dal bucket.
  • Il connettore per PyTorch supporta il checkpoint di PyTorch Lightning utilizzando l'implementazione DatafluxLightningCheckpoint di CheckpointIO di PyTorch Lightning.
  • Il connettore per PyTorch fornisce implementazioni StorageWriter e StorageReader per l'utilizzo con il checkpoint distribuito di PyTorch. La libreria demo del Connector for PyTorch include codice di esempio per l'utilizzo in un workload FSDP di PyTorch Lightning.
  • Il checkpoint del connettore include il supporto per i salvataggi di checkpoint asincroni sia con Lightning sia con PyTorch di base.

Per ulteriori informazioni, consulta la pagina di destinazione del connettore per PyTorch su GitHub.

Framework

Il connettore per PyTorch è supportato nelle seguenti versioni del framework:

  • Python 3.8 o versioni successive
  • PyTorch Lightning 2.0 o versioni successive
  • PyTorch 2.3.1 o versioni successive

Per iniziare

Per utilizzare il connettore per PyTorch, devi disporre di quanto segue:

  • Un bucket Cloud Storage che contiene i dati con cui vuoi lavorare.
  • Le seguenti autorizzazioni per lavorare con i dati archiviati nel bucket:
    • storage.objects.create
    • storage.objects.list
    • storage.objects.get
    • storage.objects.delete, se intendi utilizzare i download composti

Queste autorizzazioni devono essere concesse all'account che il connettore per PyTorch utilizzerà per l'autenticazione utilizzando un ruolo IAM come Utente oggetti Storage.

Installazione

Per installare il connettore per PyTorch, utilizza il seguente comando:

pip install gcs-torch-dataflux

Configurazione

Per utilizzare le credenziali predefinite dell'applicazione del connettore per PyTorch, devi fornire l'autenticazione tramite uno dei seguenti metodi:

gcloud auth application-default login

Esempi

Un set completo di esempi per lavorare con il connettore per PyTorch è disponibile nella directory demo del repository GitHub del connettore per PyTorch. Ecco alcuni esempi:

Prestazioni

Il Connector for PyTorch ha ottimizzazioni specifiche progettate per i workload di ML che possono fornire prestazioni significativamente migliori rispetto alle chiamate API dirette a Cloud Storage:

  • Per ottimizzare il rendimento dell'elenco, il connettore per PyTorch utilizza un algoritmo di elenco rapido sviluppato per bilanciare il workload dell'elenco tra i processi di elenco degli oggetti parallelizzati.
  • Per ottimizzare il rendimento del download dei file di piccole dimensioni, il connettore per PyTorch utilizza l'operazione di composizione per concatenare insiemi di oggetti più piccoli in oggetti singoli più grandi. Questi oggetti compositi vengono archiviati nello stesso bucket degli oggetti di origine e hanno il prefisso dataflux-composed-objects/ nei nomi.
  • Il caricamento multiparte per la scrittura dei checkpoint consente di migliorare il rendimento fino a 10 volte rispetto al caricamento standard dei checkpoint.

Puoi trovare i dati sul rendimento su GitHub per quanto segue:

  • Addestramento basato su testo di Lightning
  • Addestramento delle immagini di Lightning
  • Checkpoint a nodo singolo
  • Checkpoint multi-nodo

Considerazioni

I seguenti elementi devono essere presi in considerazione in base al workload.

Operazioni di elenco rapido

L'algoritmo di elenco rapido del connettore per PyTorch fa sì che il connettore per PyTorch utilizzi più operazioni di elenco rispetto a un elenco sequenziale normale. Le operazioni di elenco vengono addebitate come operazioni di classe A.

Utilizzo di oggetti compositi

Per evitare addebiti di archiviazione eccessivi e addebiti per eliminazione anticipata quando lavori con oggetti compositi temporanei, devi assicurarti che il bucket utilizzi le seguenti impostazioni:

Gli oggetti compositi creati dal Connector for PyTorch vengono in genere rimossi automaticamente alla fine del loop di addestramento, ma in rari casi potrebbero non essere rimossi. Per assicurarti che gli oggetti vengano rimossi dal bucket, puoi eseguire il seguente comando:

gcloud storage rm gs://<my-bucket>/dataflux-composed-objects/ --recursive

Puoi disabilitare l'utilizzo di oggetti compositi includendo disable_compose=True o max_composite_object_size=0 nella parte di configurazione del set di dati che stai creando. Tuttavia, la disattivazione di questo comportamento può causare un aumento significativo della durata dei loop di addestramento, soprattutto quando si lavora con file di piccole dimensioni.

L'utilizzo di oggetti compositi fa sì che Cloud Storage raggiunga i limiti di QPS e velocità effettiva a una scala inferiore rispetto al download diretto dei file. Dovresti disabilitare l'utilizzo di oggetti compositi quando esegui a scale multi-nodo elevate in cui raggiungi i limiti di QPS o velocità effettiva del progetto anche senza utilizzare oggetti compositi.

Errori 429 e prestazioni ridotte

Quando lavori con il connettore per PyTorch, potresti ricevere errori 429 o tempi di esecuzione più lenti del previsto. Esistono diversi motivi comuni per cui si verifica questo problema:

Consumo di memoria

Le scritture e i caricamenti dei checkpoint, inclusi i modelli finali per l'inferenza, vengono eseguiti completamente in memoria per ottimizzare il rendimento di caricamento e download. Ogni macchina deve avere RAM libera sufficiente per eseguire il checkpoint in memoria in modo da poter sfruttare questi miglioramenti del rendimento.

Assistenza

Puoi ricevere assistenza, inviare domande generali e richiedere nuove funzionalità utilizzando uno dei canali di assistenza Google Cloud ufficiali. Puoi anche ricevere assistenza segnalando problemi su GitHub.

PyTorch, il logo PyTorch e tutti i marchi correlati sono marchi di The Linux Foundation.