Progettare lo spazio di archiviazione per i carichi di lavoro di AI e ML in Google Cloud

Last reviewed 2024-03-20 UTC

Quando scegli i servizi di archiviazione Google Cloud per i tuoi carichi di lavoro di intelligenza artificiale (AI) e machine learning (ML), devi fare attenzione a selezionare la combinazione corretta di opzioni di archiviazione per ogni job specifico. Questa necessità di una selezione accurata si applica quando carichi il set di dati, addestri e ottimizzi il modello, lo inserisci in produzione o archivi il set di dati e il modello. In breve, devi selezionare i servizi di archiviazione migliori che forniscono la latenza, la scalabilità e il costo appropriati per ogni fase dei tuoi carichi di lavoro di AI e ML.

Per aiutarti a fare scelte consapevoli, questo documento fornisce indicazioni di progettazione su come utilizzare e integrare la varietà di opzioni di archiviazione offerte da Google Cloud per i principali carichi di lavoro di AI e ML.

La Figura 1 mostra un riepilogo delle opzioni di archiviazione principale. Come mostrato nel diagramma, in genere scegli Cloud Storage quando hai dimensioni dei file più grandi, operazioni di input/output al secondo (IOPS) inferiori o latenza più elevata. Tuttavia, se hai bisogno di un numero superiore di IOPS, dimensioni dei file più piccole o una latenza inferiore, scegli Filestore.

Figura 1: considerazioni principali sull'archiviazione di IA e ML

Scegli Cloud Storage se hai dimensioni dei file più grandi, IOPS inferiori o latenza più elevata. Scegli Filestore quando hai bisogno di un numero maggiore di IOPS, dimensioni dei file più piccole o una latenza inferiore.

Panoramica delle fasi dei carichi di lavoro di AI e ML

I carichi di lavoro di AI e ML sono costituiti da quattro fasi principali: preparazione, addestramento, pubblicazione e archiving. Queste sono le quattro volte nel ciclo di vita di un carico di lavoro di AI e ML in cui devi decidere quali opzioni di archiviazione scegliere da utilizzare. Nella maggior parte dei casi, ti consigliamo di continuare a utilizzare la stessa scelta di archiviazione selezionata nella fase di preparazione per le fasi rimanenti. Seguire questo consiglio ti aiuta a ridurre la copia dei set di dati tra i servizi di archiviazione. Tuttavia, esistono alcune eccezioni a questa regola generale, descritte più avanti in questa guida.

Alcune soluzioni di archiviazione funzionano meglio di altre in ogni fase e potrebbero dover essere combinate con opzioni di archiviazione aggiuntive per ottenere risultati ottimali. L'efficacia della scelta dello spazio di archiviazione dipende dalle proprietà del set di dati, dalla scala delle risorse di calcolo e di archiviazione richieste, dalla latenza e da altri fattori. La tabella seguente descrive le fasi e un breve riepilogo delle scelte di archiviazione consigliate per ogni fase. Per una rappresentazione visiva di questa tabella e ulteriori dettagli, consulta la struttura a decisione.

Tabella 1: suggerimenti per lo spazio di archiviazione per le fasi e i passaggi dei carichi di lavoro di AI e ML
Fasi Passaggi Consigli per lo spazio di archiviazione

Preparazione

Preparazione dei dati

  • Carica ed esegui l'importazione dei dati.
  • Trasforma i dati nel formato corretto prima di addestrare il modello.

Cloud Storage

  • File di grandi dimensioni (da 50 MB in su) che possono tollerare una latenza di archiviazione più elevata (decine di millisecondi).

Filestore Zonal

  • Set di dati più piccoli con file più piccoli (meno di 50 MB) e latenza di archiviazione inferiore (~ 1 millisecondo).

Treno

  1. Sviluppo del modello
    • Sviluppare il modello utilizzando i notebook e applicando metodi di prova ed errore iterativi.
  2. Addestramento del modello
    • Utilizza un numero da piccolo a grande di unità di elaborazione grafica (GPU Cloud) o Tensor Processing Unit (Cloud TPU) per leggere ripetutamente il set di dati di addestramento.
    • Applica un processo iterativo allo sviluppo e all'addestramento del modello.

Cloud Storage

  • Se selezioni Cloud Storage nella fase di preparazione, è meglio addestrare i dati in Cloud Storage.

Cloud Storage con SSD locale o Filestore

  • Se selezioni Cloud Storage nella fase di preparazione, ma devi supportare piccole richieste I/O o piccoli file, puoi integrare le tue attività di addestramento. A tale scopo, sposta alcuni dati da Cloud Storage a SSD locale o Filestore Zonal.

Filestore

  • Se selezioni Filestore nella fase di preparazione, è meglio addestrare i dati in Filestore.
  • Crea una cache SSD locale per integrare le attività di addestramento di Filestore.
  1. Controllo dei punti di controllo e riavvio
    • Salva lo stato periodicamente durante l'addestramento del modello creando un checkpoint in modo che l'addestramento possa essere riavviato dopo un errore del nodo.
    • Effettua questa selezione in base al pattern I/O e alla quantità di dati da salvare nel checkpoint.

Cloud Storage

  • Se selezioni Cloud Storage nella fase di preparazione, è meglio utilizzarlo per il checkpoint e il riavvio.
  • Ottimo per la velocità effettiva e i carichi di lavoro che richiedono un numero elevato di thread.

Filestore Zonal

  • Se selezioni Filestore nella fase di preparazione, è meglio utilizzare Filestore per il checkpoint e il riavvio.
  • Ottima per la latenza, un'elevata velocità effettiva per client e un numero ridotto di thread.

Servire

  • Memorizza il modello.
  • Carica il modello in un'istanza che esegue GPU o Cloud TPU al momento dell'avvio.
  • Memorizza i risultati dell'inferenza del modello, ad esempio le immagini generate.
  • Se vuoi, archivia e carica il set di dati utilizzato per l'inferenza del modello.

Cloud Storage

  • Se addestri il modello in Cloud Storage, è meglio utilizzare Cloud Storage anche per pubblicarlo.
  • Salva i contenuti generati dal modello in Cloud Storage.

Filestore

  • Se addestri il modello in Filestore, è meglio utilizzarlo anche per il servizio.
  • Se hai bisogno di durabilità e bassa latenza durante la generazione di file di piccole dimensioni, scegli Filestore Zonal (a livello di zona) o Filestore Enterprise (a livello di regione).

Archivia

  • Conservare i dati di addestramento e il modello per periodi di tempo prolungati.

Cloud Storage

Per maggiori dettagli sulle ipotesi alla base di questa tabella, consulta le seguenti sezioni:

Criteri

Per restringere la scelta delle opzioni di archiviazione da utilizzare per i workload di AI e ML, inizia rispondendo a queste domande:

  • Le dimensioni richiesta di I/O di AI e ML e le dimensioni dei file sono piccole, medie o grandi?
  • I tuoi carichi di lavoro di AI e ML sono sensibili alla latenza I/O e al tempo di risposta al primo byte (TTFB)?
  • Hai bisogno di una velocità effettiva di lettura e scrittura elevata per singoli client, client aggregati o entrambi?
  • Qual è il numero massimo di GPU Cloud o Cloud TPU richiesto dal singolo carico di lavoro di addestramento AI e ML più grande?

Oltre a rispondere alle domande precedenti, devi anche conoscere le opzioni di calcolo e gli acceleratori che puoi scegliere per ottimizzare i carichi di lavoro di AI e ML.

Considerazioni sulla piattaforma di calcolo

Google Cloud supporta tre metodi principali per eseguire i carichi di lavoro di AI e ML:

Sia per Compute Engine che per GKE, ti consigliamo di utilizzare il Cluster Toolkit per eseguire il deployment di cluster chiavi in mano ripetibili che rispettano le best practice di Google Cloud.

Considerazioni sull'acceleratore

Quando selezioni le opzioni di archiviazione per i carichi di lavoro di AI e ML, devi anche selezionare le opzioni di elaborazione dell'acceleratore appropriate per la tua attività. Google Cloud supporta due scelte di acceleratori: le GPU NVIDIA Cloud e le TPU di Google Cloud sviluppate su misura. Entrambi i tipi di acceleratori sono circuiti integrati per applicazioni specifiche (ASIC) che vengono utilizzati per elaborare carichi di lavoro di machine learning in modo più efficiente rispetto ai processori standard.

Esistono alcune differenze importanti in termini di spazio di archiviazione tra le GPU Cloud e gli acceleratori Cloud TPU. Le istanze che utilizzano le GPU Cloud supportano le unità SSD locali con un throughput dello stoccaggio remoto fino a 200 GBps. I nodi e le VM Cloud TPU non supportano le unità SSD locali e si basano esclusivamente sull'accesso allo spazio di archiviazione remoto.

Per ulteriori informazioni sui tipi di macchine ottimizzate per l'acceleratore, consulta la Famiglia di macchine ottimizzate per l'acceleratore. Per ulteriori informazioni su Cloud GPU, consulta la sezione Piattaforme Cloud GPU. Per ulteriori informazioni sulle Cloud TPU, consulta Introduzione a Cloud TPU. Per ulteriori informazioni sulla scelta tra Cloud TPU e GPU Cloud, consulta Quando utilizzare Cloud TPU.

Opzioni di archiviazione

Come riassunto in precedenza nella Tabella 1, utilizza l'archiviazione di oggetti o di file con i tuoi carichi di lavoro di AI e ML e poi integra questa opzione di archiviazione con l'archiviazione a blocchi. La Figura 2 illustra tre opzioni tipiche che puoi prendere in considerazione quando selezioni lo spazio di archiviazione iniziale per il tuo carico di lavoro di AI e ML: Cloud Storage, Filestore e Google Cloud NetApp Volumes.

Figura 2: servizi di archiviazione appropriati per l'AI e l'apprendimento automatico offerti da Google Cloud

Le tre opzioni che puoi prendere in considerazione per la scelta iniziale dello spazio di archiviazione per i tuoi carichi di lavoro di AI e ML sono Cloud Storage, Filestore e NetApp Volumes.

Se hai bisogno di archiviazione di oggetti, scegli Cloud Storage. Cloud Storage offre quanto segue:

  • Una posizione di archiviazione per dati e oggetti non strutturati.
  • API, come l'API JSON di Cloud Storage, per accedere ai bucket di archiviazione.
  • Spazio di archiviazione permanente per salvare i dati.
  • Velocità in uscita di terabyte al secondo, ma richiede una latenza di archiviazione più elevata.

Se hai bisogno di spazio di archiviazione per i file, hai due opzioni: Filestore e NetApp Volumes, che offrono quanto segue:

  • Filestore
    • Archiviazione di file enterprise ad alte prestazioni basata su NFS.
    • Spazio di archiviazione permanente per salvare i dati.
    • Bassa latenza dello spazio di archiviazione e velocità effettiva di 26 Gbps.
  • NetApp Volumes
    • Archiviazione di file compatibile con NFS e Server Message Block (SMB).
    • Può essere gestito con la possibilità di utilizzare lo strumento software di archiviazione NetApp ONTAP.
    • Spazio di archiviazione permanente per salvare i dati.
    • Velocità in uscita di 4,5 Gbps.

Utilizza le seguenti opzioni di archiviazione come prima scelta per i workload di AI e ML:

Utilizza le seguenti opzioni di archiviazione per integrare i tuoi carichi di lavoro di AI e ML:

Se devi trasferire dati tra queste opzioni di archiviazione, puoi utilizzare gli strumenti di trasferimento dei dati.

Cloud Storage

Cloud Storage è un servizio di archiviazione oggetti completamente gestito incentrato sulla preparazione dei dati, sull'addestramento dei modelli di AI, sulla pubblicazione dei dati, sul backup e sull'archiviazione per i dati non strutturati. Ecco alcuni dei vantaggi di Cloud Storage:

  • Capacità di archiviazione illimitata che può raggiungere gli exabyte su base globale
  • Prestazioni con velocità effettiva ultra elevata
  • Opzioni di archiviazione a livello di regione e doppia regione per i carichi di lavoro di AI e ML

Cloud Storage scala la velocità in terabyte al secondo e oltre, ma ha una latenza relativamente più elevata (decine di millisecondi) rispetto a Filestore o a un file system locale. Il throughput di un singolo thread è limitado a circa 100-200 MB al secondo, il che significa che un throughput elevato può essere raggiunto solo utilizzando da centinaia a migliaia di singoli thread. Inoltre, la velocità in uscita elevata richiede anche l'utilizzo di file di grandi dimensioni e richieste I/O di grandi dimensioni.

Cloud Storage supporta le librerie client in diversi linguaggi di programmazione, ma supporta anche Cloud Storage FUSE. Cloud Storage FUSE ti consente di montare i bucket Cloud Storage sul tuo file system locale. Cloud Storage FUSE consente alle tue applicazioni di utilizzare API di file system standard per leggere da un bucket o scrivere in un bucket. Puoi archiviare e accedere ai tuoi dati di addestramento, ai modelli e ai checkpoint con la scalabilità, la convenienza e le prestazioni di Cloud Storage.

Per saperne di più su Cloud Storage, utilizza le seguenti risorse:

Filestore

Filestore è un servizio di archiviazione basato su file NFS completamente gestito. I livelli di servizio Filestore utilizzati per i carichi di lavoro di AI e ML includono quanto segue:

  • Livello Enterprise: utilizzato per carichi di lavoro mission critical che richiedono disponibilità a livello di regione.
  • Livello zonale: utilizzato per applicazioni ad alte prestazioni che richiedono un'elevata disponibilità con requisiti di prestazioni elevati per IOPS e throughput.
  • Livello di base: utilizzato per la condivisione di file, lo sviluppo di software, l'hosting web e i carichi di lavoro di AI e ML di base.

Filestore offre prestazioni I/O a bassa latenza. È una buona scelta per i set di dati con requisiti di accesso I/O ridotti o file di piccole dimensioni. Tuttavia, Filestore può gestire anche casi di utilizzo di I/O o file di grandi dimensioni, se necessario. Filestore può essere scalato fino a circa 100 TB di dimensione. Per i carichi di lavoro di addestramento dell'IA che leggono i dati ripetutamente, puoi migliorare la lettura del throughput utilizzando FS-Cache con l'SSD locale.

Per ulteriori informazioni su Filestore, consulta la panoramica di Filestore. Per ulteriori informazioni sui livelli di servizio Filestore, consulta Livelli di servizio. Per maggiori informazioni sulle prestazioni di Filestore, consulta Ottimizza e testa le prestazioni delle istanze.

Google Cloud NetApp Volumes

NetApp Volumes è un servizio completamente gestito con funzionalità avanzate di gestione dei dati che supportano gli ambienti NFS, SMB e multiprotocollo. NetApp Volumes supporta volumi multi-tebibyte a bassa latenza e un throughput di gigabyte al secondo.

Per saperne di più su NetApp Volumes, consulta Che cos'è Google Cloud NetApp Volumes? Per ulteriori informazioni sul rendimento di NetApp Volumes, consulta Rendimento previsto.

Archiviazione a blocchi

Dopo aver selezionato lo spazio di archiviazione principale, puoi utilizzare l'archiviazione a blocchi per migliorare le prestazioni, trasferire dati tra le opzioni di archiviazione e sfruttare le operazioni a bassa latenza. Con l'archiviazione a blocchi hai a disposizione due opzioni: SSD locale e Persistent Disk.

SSD locale

L'SSD locale fornisce spazio di archiviazione locale direttamente a una VM o a un contenitore. La maggior parte dei tipi di macchine Google Cloud che contengono GPU Cloud include una certa quantità di SSD locale. Poiché i dischi SSD locali sono collegati fisicamente alle GPU Cloud, forniscono accesso a bassa latenza con potenzialmente milioni di IOPS. Al contrario, le istanze basate su Cloud TPU non includono SSD locale.

Sebbene l'SSD locale offra prestazioni elevate, ogni istanza di archiviazione è temporanea. Pertanto, i dati archiviati su un'unità SSD locale vengono persi quando l'istanza viene arrestata o eliminata. A causa della natura temporanea delle unità SSD locali, valuta la possibilità di utilizzare altri tipi di archiviazione se i tuoi dati richiedono una maggiore durabilità.

Tuttavia, quando la quantità di dati di addestramento è molto ridotta, è comune copiarli da Cloud Storage all'unità SSD locale di una GPU. Il motivo è che l'SSD locale offre una latenza I/O inferiore e riduce il tempo di addestramento.

Per ulteriori informazioni sulle unità SSD locali, consulta la pagina Informazioni sulle unità SSD locali. Per ulteriori informazioni sulla quantità di capacità SSD locale disponibile con i tipi di istanze GPU di Cloud, consulta Piattaforme GPU.

Persistent Disk

Persistent Disk è un servizio di archiviazione a blocchi di rete con una suite completa di funzionalità di gestione e persistenza dei dati. Oltre a utilizzarlo come disco di avvio, puoi utilizzare Persistent Disk con i carichi di lavoro di AI, ad esempio lo spazio di archiviazione scratch. Persistent Disk è disponibile nelle seguenti opzioni:

  • Standard, che fornisce un'archiviazione a blocchi efficiente e affidabile.
  • Equilibrato, che fornisce un'archiviazione a blocchi affidabile e conveniente.
  • SSD, che fornisce un'archiviazione a blocchi rapida e affidabile.
  • Extreme, che offre l'opzione di archiviazione a blocchi con le massime prestazioni con IOPS personalizzabili.

Per ulteriori informazioni su Persistent Disk, consulta Persistent Disk.

Strumenti di trasferimento dati

Quando esegui attività di AI e ML, a volte devi copiare i dati da una posizione all'altra. Ad esempio, se i dati iniziano in Cloud Storage, puoi spostarli altrove per addestrare il modello, quindi copiare gli snapshot del checkpoint o il modello addestrato di nuovo in Cloud Storage. Puoi anche eseguire la maggior parte delle attività in Filestore, quindi spostare i dati e il modello in Cloud Storage a scopo di archiviazione. Questa sezione illustra le opzioni a tua disposizione per spostare i dati tra i servizi di archiviazione in Google Cloud.

Storage Transfer Service

Con Storage Transfer Service puoi trasferire i dati tra Cloud Storage, Filestore e NetApp Volumes. Questo servizio completamente gestito ti consente anche di copiare i dati tra i repository di archiviazione file e di archiviazione oggetti on-premise, lo spazio di archiviazione Google Cloud e da altri fornitori di servizi cloud. Storage Transfer Service consente di copiare i dati in modo sicuro dalla posizione di origine alla posizione di destinazione, nonché di eseguire trasferimenti periodici dei dati modificati. Fornisce inoltre convalida dell'integrità dei dati, nuovi tentativi automatici e bilanciamento del carico.

Per ulteriori informazioni su Storage Transfer Service, consulta Che cos'è Storage Transfer Service?

Interfaccia a riga di comando

Quando sposti i dati tra Filestore e Cloud Storage, devi utilizzare l'interfaccia a riga di comando Google Cloud. gcloud CLI consente di creare e gestire bucket e oggetti Cloud Storage con un throughput ottimale e una suite completa di comandi.

Mappa le tue scelte di archiviazione alle fasi di AI e ML

Questa sezione espande il riepilogo fornito nella Tabella 1 per esplorare i consigli e le indicazioni specifici per ogni fase di un carico di lavoro di AI e ML. L'obiettivo è aiutarti a comprendere il fondamento di queste scelte e a selezionare le opzioni di archiviazione migliori per ogni fase di AI e ML. Questa analisi genera tre consigli principali che vengono esaminati nella sezione Consigli per lo spazio di archiviazione per AI e l'ML.

La figura seguente fornisce un albero decisionale che mostra le opzioni di archiviazione consigliate per le quattro fasi principali di un carico di lavoro di AI e ML. Il diagramma è seguito da una spiegazione dettagliata di ogni fase e delle scelte che puoi fare in ogni fase.

Figura 3: opzioni di archiviazione per ogni fase di AI e ML

Un albero decisionale che mostra le opzioni di archiviazione consigliate per le quattro fasi principali di un carico di lavoro di AI e ML.

Preparazione

In questa fase iniziale, devi selezionare se vuoi utilizzare Cloud Storage o Filestore come origine di verità permanente per i tuoi dati. Puoi anche selezionare potenziali ottimizzazioni per l'addestramento con un volume elevato di dati. Tieni presente che i diversi team della tua organizzazione possono avere tipi di carichi di lavoro e set di dati diversi, il che potrebbe portare a decisioni di archiviazione diverse. Per soddisfare queste esigenze diverse, puoi combinare le tue scelte di archiviazione tra Cloud Storage e Filestore in modo appropriato.

Cloud Storage per la fase di preparazione

  • Il tuo carico di lavoro contiene file di grandi dimensioni di almeno 50 MB.
  • Il tuo carico di lavoro richiede un numero inferiore di IOPS.
  • Il carico di lavoro può tollerare una latenza di archiviazione più elevata nell'ordine di decine di millisecondi.

  • Devi ottenere l'accesso al set di dati tramite le API Cloud Storage o Cloud Storage FUSE e un sottoinsieme di API file.

Per ottimizzare il tuo carico di lavoro in Cloud Storage, puoi selezionare lo spazio di archiviazione regionale e posizionare il bucket nella stessa regione delle risorse di calcolo. Tuttavia, se hai bisogno di una maggiore affidabilità o se utilizzi acceleratori situati in due regioni diverse, ti consigliamo di selezionare lo spazio di archiviazione a due regioni.

Filestore per la fase di preparazione

Devi selezionare Filestore per preparare i dati se si applica una delle seguenti condizioni:

  • Il tuo workload contiene file di dimensioni inferiori a 50 MB.
  • Il tuo carico di lavoro richiede IOPS più elevati.
  • Il tuo carico di lavoro richiede una latenza inferiore a 1 millisecondo per soddisfare i requisiti di archiviazione per l'accesso ai metadati e alle I/O casuali.
  • Per visualizzare e gestire i dati, gli utenti hanno bisogno di un'esperienza simile a quella di un computer con supporto completo di POSIX.
  • I tuoi utenti devono eseguire altre attività, come lo sviluppo software.

Altre considerazioni per la fase di preparazione

Se in questa fase hai difficoltà a scegliere un'opzione, prendi in considerazione i seguenti punti per aiutarti a prendere una decisione:

  • Se vuoi utilizzare altri framework di AI e ML, come Dataflow, Spark o BigQuery, su un set di dati, Cloud Storage è una scelta logica per l'integrazione personalizzata con questi tipi di framework.
  • Filestore ha una capacità massima di circa 100 TB. Se devi addestrare il modello con set di dati più grandi o se non riesci a suddividere il set in più istanze da 100 TB, Cloud Storage è un'opzione migliore.

Durante la fase di preparazione dei dati, molti utenti riorganizzano i dati in grandi blocchi per migliorare l'efficienza di accesso ed evitare richieste di lettura casuali. Per ridurre ulteriormente i requisiti di prestazioni I/O sul sistema di archiviazione, molti utenti utilizzano la pipeline, l'ottimizzazione dell'addestramento per aumentare il numero di thread I/O o entrambi.

Addestra

Nella fase di addestramento, in genere riutilizzi l'opzione di archiviazione principale selezionata per la fase di preparazione. Se lo spazio di archiviazione principale che hai scelto non è in grado di gestire il solo carico di lavoro di addestramento, potresti dover integrare lo spazio di archiviazione principale. Puoi aggiungere spazio di archiviazione aggiuntivo in base alle esigenze, ad esempio SSD locali, per bilanciare il workload.

Oltre a fornire consigli per l'utilizzo di Cloud Storage o Filestore in questa fase, questa sezione fornisce anche maggiori dettagli su questi consigli. I dettagli includono quanto segue:

  • Indicazioni per le dimensioni dei file e delle richieste
  • Suggerimenti su quando integrare la scelta dello spazio di archiviazione principale
  • Una spiegazione dei dettagli di implementazione dei due carichi di lavoro principali in questa fase: caricamento dei dati, checkpoint e riavvio

Cloud Storage per la fase di addestramento

I motivi principali per selezionare Cloud Storage durante l'addestramento dei dati includono quanto segue:

  • Se utilizzi Cloud Storage per preparare i dati, è meglio eseguire l'addestramento dei dati in Cloud Storage.
  • Cloud Storage è una buona scelta per la velocità effettiva, i carichi di lavoro che non richiedono un'elevata velocità effettiva di una singola VM o i carichi di lavoro che utilizzano molti thread per aumentare la velocità effettiva in base alle esigenze.

Cloud Storage con SSD locale o Filestore per la fase di addestramento

Il motivo principale per selezionare Cloud Storage con SSD locale o Filestore durante l'addestramento dei dati si verifica quando devi supportare piccole richieste I/O o piccoli file. In questo caso, puoi integrare l'attività di addestramento di Cloud Storage spostando alcuni dati su SSD locale o Filestore Zonal.

Filestore per la fase di addestramento

I motivi principali per selezionare Filestore per l'addestramento dei dati includere quanto segue:

  • Se utilizzi Filestore per preparare i dati, nella maggior parte dei casi dovresti continuare ad addestrarli in Filestore.
  • Filestore è una buona scelta per una latenza ridotta, un throughput elevato per client e applicazioni che utilizzano un numero ridotto di thread, ma richiedono comunque prestazioni elevate.
  • Se devi integrare le attività di addestramento in Filestore, valuta la possibilità di creare una cache SSD locale in base alle tue esigenze.

Dimensioni dei file e dimensioni delle richieste

Una volta che il set di dati è pronto per l'addestramento, esistono due opzioni principali che possono aiutarti a valutare le diverse opzioni di archiviazione.

Set di dati contenenti file di grandi dimensioni e a cui si accede con richieste di grandi dimensioni

In questa opzione, il job di addestramento è costituito principalmente da file di dimensioni maggiori, pari o superiori a 50 MB. Il job di addestramento importa i file con dimensioni da 1 MB a 16 MB per richiesta. Generalmente consigliamo Cloud Storage con Cloud Storage FUSE per questa opzione perché i file sono abbastanza grandi da consentire a Cloud Storage di mantenere gli acceleratori forniti. Tieni presente che potresti dover utilizzare da centinaia a migliaia di thread per ottenere il massimo rendimento con questa opzione.

Tuttavia, se hai bisogno di API POSIX complete per altre applicazioni o se il tuo carico di lavoro non è appropriato per l'elevato numero di thread richiesti, Filestore è una buona alternativa.

Set di dati contenenti file di piccole o medie dimensioni o a cui si accede con richieste di piccole dimensioni

Con questa opzione, puoi classificare il job di addestramento in due modi:

  • Molti file di piccole e medie dimensioni di dimensioni inferiori a 50 MB.
  • Un set di dati con file di dimensioni maggiori, ma i dati vengono letti in sequenza o in modo casuale con dimensioni delle richieste di lettura relativamente piccole (ad esempio meno di 1 MB). Un esempio di questo caso d'uso è quando il sistema legge meno di 100 KB alla volta da un file di più gigabyte o terabyte.

Se utilizzi già Filestore per le sue funzionalità POSIX, ti consigliamo di conservare i dati in Filestore per l'addestramento. Filestore offre accesso ai dati con una bassa latenza I/O. Questa latenza inferiore può ridurre il tempo di addestramento complessivo e potrebbe ridurre il costo dell'addestramento del modello.

Se utilizzi Cloud Storage per archiviare i dati, ti consigliamo di copiarli su SSD locale o Filestore prima dell'addestramento.

Caricamento dei dati

Durante il caricamento dei dati, le GPU o le TPU di Cloud importano ripetutamente batch di dati per addestrare il modello. Questa fase può essere adatta alla cache, a seconda delle dimensioni dei batch e dell'ordine in cui li richiedi. A questo punto, il tuo obiettivo è formare il modello con la massima efficienza, ma al costo più basso.

Se le dimensioni dei dati di addestramento raggiungono i petabyte, potrebbe essere necessario leggere nuovamente i dati più volte. Una scala di questo tipo richiede un'elaborazione intensiva da parte di un acceleratore GPU o TPU. Tuttavia, devi assicurarti che le GPU e le TPU di Cloud non siano inattive, ma elaborino attivamente i tuoi dati. In caso contrario, paghi un acceleratore costoso e inutilizzato mentre copi i dati da una posizione all'altra.

Per il caricamento dei dati, tieni presente quanto segue:

  • Parallelismo: esistono numerosi modi per eseguire il parallelismo dell'addestramento e ognuno può influire sulle prestazioni complessive dello spazio di archiviazione richiesto e sulla necessità di memorizzare nella cache i dati localmente su ogni istanza.
  • Numero massimo di GPU Cloud o Cloud TPU per un singolo job di addestramento: con l'aumento del numero di acceleratori e VM, l'impatto sul sistema di archiviazione può essere significativo e potrebbe comportare un aumento dei costi se le GPU Cloud o le Cloud TPU sono inattive. Tuttavia, esistono modi per ridurre al minimo i costi man mano che aumenti il numero di acceleratori. A seconda del tipo di parallelismo utilizzato, puoi minimizzare i costi aumentando i requisiti di throughput di lettura aggregati necessari per evitare acceleratori inattivi.

Per supportare questi miglioramenti in Cloud Storage o Filestore, devi aggiungere un'unità SSD locale a ogni istanza in modo da poter scaricare le operazioni di I/O dal sistema di archiviazione sovraccaricato.

Tuttavia, il precaricamento dei dati nell'unità SSD locale di ogni istanza da Cloud Storage presenta delle sfide. Rischi di sostenere costi più elevati per gli acceleratori inattivi durante il trasferimento dei dati. Se i tempi di trasferimento dei dati e i costi di inattività dell'acceleratore sono elevati, potresti essere in grado di ridurre i costi utilizzando Filestore con SSD locale.

  • Numero di GPU Cloud per istanza: quando esegui il deployment di più GPU Cloud in ogni istanza, puoi aumentare il throughput delle GPU inter-Cloud con NVLink. Tuttavia, la velocità effettiva disponibile delle SSD locali e della rete di archiviazione non aumenta sempre in modo lineare.
  • Ottimizzazioni di archiviazione e applicazioni: le opzioni di archiviazione e le applicazioni hanno requisiti di prestazioni specifici per poter funzionare in modo ottimale. Assicurati di bilanciare questi requisiti di sistema di archiviazione e applicazioni con le ottimizzazioni del caricamento dei dati, ad esempio mantenendo occupate e in funzione in modo efficiente le tue GPU o TPU Cloud.

Controllo dei punti di controllo e riavvio

Per il controllo dei punti di controllo e il riavvio, i job di addestramento devono salvare periodicamente il proprio stato per poter recuperare rapidamente dai guasti delle istanze. Quando si verifica l'errore, i job devono essere riavviati, importare il checkpoint più recente e riprendere l'addestramento. Il meccanismo esatto utilizzato per creare e importare i checkpoint è in genere specifico per un framework, come TensorFlow o PyTorch. Alcuni utenti hanno creato framework complessi per aumentare l'efficienza del checkpointing. Questi framework complessi consentono di eseguire un controllo più di frequente.

Tuttavia, la maggior parte degli utenti utilizza in genere lo spazio di archiviazione condiviso, come Cloud Storage o Filestore. Quando salvi i checkpoint, devi salvare solo da tre a cinque checkpoint in un determinato momento. I carichi di lavoro dei checkpoint tendono a essere costituiti principalmente da scritture, diverse eliminazioni e, idealmente, letture infrequenti quando si verificano errori. Durante il recupero, il pattern I/O include scritture intensive e frequenti, eliminazioni frequenti e letture frequenti del checkpoint.

Devi anche considerare le dimensioni del checkpoint che ogni GPU o TPU deve creare. Le dimensioni del checkpoint determinano la velocità effettiva di scrittura necessaria per completare il job di addestramento in modo tempestivo e conveniente.

Per ridurre al minimo i costi, valuta la possibilità di aumentare i seguenti elementi:

  • La frequenza dei checkpoint
  • Il throughput di scrittura aggregato necessario per i checkpoint
  • Efficienza del riavvio

Distribuzione

Quando pubblichi il modello, noto anche come inferenza AI, il pattern I/O principale è di sola lettura per caricare il modello nelle GPU Cloud o nella memoria Cloud TPU. Il tuo obiettivo in questa fase è eseguire il modello in produzione. Il modello è molto più piccolo dei dati di addestramento, quindi puoi replicarlo e scalarlo su più istanze. L'alta disponibilità e la protezione contro gli errori a livello di zona e di regione sono importanti in questa fase, quindi devi assicurarti che il tuo modello sia disponibile per una serie di scenari di errore.

Per molti casi d'uso dell'AI generativa, i dati di input del modello potrebbero essere piuttosto ridotti e potrebbe non essere necessario archiviarli in modo permanente. In altri casi, potresti dover eseguire grandi volumi di dati sul modello (ad esempio set di dati scientifici). In questo caso, devi selezionare un'opzione che possa conservare le GPU o le TPU Cloud fornite durante l'analisi del set di dati, nonché una posizione permanente per archiviare i risultati dell'inferenza.

Quando pubblichi il modello, hai due opzioni principali.

Cloud Storage per la fase di pubblicazione

I motivi principali per selezionare Cloud Storage quando pubblichi i dati includono quanto segue:

  • Quando addestri il modello in Cloud Storage, puoi risparmiare sui costi di migrazione lasciandolo in Cloud Storage quando lo pubblichi.
  • Puoi salvare i contenuti generati in Cloud Storage.
  • Cloud Storage è una buona scelta quando l'inferenza AI avviene in più regioni.
  • Puoi utilizzare bucket a due e più regioni per garantire la disponibilità del modello in caso di guasti a livello regionale.

Filestore per la fase di pubblicazione

I motivi principali per selezionare Filestore per la pubblicazione dei dati includono:

  • Quando addestri il modello in Filestore, puoi risparmiare sui costi di migrazione lasciandolo in Filestore quando lo pubblichi.
  • Poiché il suo accordo sul livello del servizio (SLA) garantisce una disponibilità del 99,99%, il livello di servizio Filestore Enterprise è una buona scelta per l'alta disponibilità quando vuoi pubblicare il tuo modello tra più zone di una regione.
  • I livelli di servizio zonale di Filestore potrebbero essere una scelta ragionevole a un costo inferiore, ma solo se l'alta disponibilità non è un requisito per il tuo carico di lavoro di AI e ML.
  • Se hai bisogno di un recupero tra regioni, puoi archiviare il modello in una posizione di backup remota o in un bucket Cloud Storage remoto e poi ripristinarlo in base alle esigenze.
  • Filestore offre un'opzione durevole e altamente disponibile che consente di accedere al modello a bassa latenza quando generi file di piccole dimensioni o hai bisogno di API file.

Archivia

La fase di archiviazione ha un pattern I/O di "scrivi una volta, leggi raramente". Il tuo obiettivo è memorizzare i diversi set di dati di addestramento e le diverse versioni dei modelli che hai generato. Puoi utilizzare queste versioni incrementali di dati e modelli per scopi di backup e ripristino di emergenza. Inoltre, devi conservare questi elementi in un luogo sicuro per un lungo periodo di tempo. Anche se potresti non avere bisogno di accedere ai dati e ai modelli molto spesso, è importante che siano disponibili quando ti servono.

Grazie alla sua estrema durabilità, alla sua ampia scalabilità e al suo basso costo, la migliore opzione per archiviare i dati oggetto per un lungo periodo di tempo è Cloud Storage. A seconda della frequenza con cui accedi ai file di set di dati, modelli e backup, Cloud Storage offre l'ottimizzazione dei costi tramite diverse classi di archiviazione con i seguenti approcci:

  • Inserisci i dati a cui accedi di frequente nello spazio di archiviazione Standard.
  • Mantieni i dati a cui accedi mensilmente nello spazio di archiviazione Nearline.
  • Archivia i dati a cui accedi ogni tre mesi nello spazio di archiviazione Coldline.
  • Conserva i dati a cui accedi una volta all'anno nello spazio di archiviazione Archive.

Con la gestione del ciclo di vita degli oggetti, puoi creare criteri per spostare i dati in classi di archiviazione meno utilizzate o per eliminarli in base a criteri specifici. Se non sai con quale frequenza accederai ai tuoi dati, puoi utilizzare la funzionalità Autoclass per spostare automaticamente i dati tra le classi di archiviazione in base al tuo pattern di accesso.

Se i tuoi dati si trovano in Filestore, spesso ha senso spostarli in Cloud Storage a scopo di archiviazione. Tuttavia, puoi fornire una protezione aggiuntiva ai tuoi dati Filestore creando backup di Filestore in un'altra regione. Puoi anche acquisire snapshot di Filestore per il recupero di file e file system locali. Per maggiori informazioni sui backup di Filestore, consulta la panoramica dei backup. Per ulteriori informazioni sugli snapshot di Filestore, consulta la Panoramica degli snapshot.

Consigli per lo spazio di archiviazione per AI e ML

Questa sezione riassume l'analisi fornita nella sezione precedente, Mappa le tue scelte di archiviazione alle fasi di AI e ML. Fornisce dettagli sulle tre combinazioni di opzioni di archiviazione principali che consigliamo per la maggior parte dei carichi di lavoro di AI e ML. Le tre opzioni sono le seguenti:

Seleziona Cloud Storage

Cloud Storage offre la soluzione di archiviazione con il costo per capacità più basso rispetto a tutte le altre offerte di archiviazione. È scalabile per un numero elevato di client, offre accessibilità e disponibilità a livello di regione e di due regioni e può essere accessibile tramite Cloud Storage FUSE. Devi selezionare lo spazio di archiviazione regionale quando la piattaforma di calcolo per l'addestramento si trova nella stessa regione e scegliere lo spazio di archiviazione a due regioni se hai bisogno di una maggiore affidabilità o se utilizzi GPU o TPU Cloud situate in due regioni diverse.

Cloud Storage è la scelta migliore per la conservazione a lungo termine dei dati e per i carichi di lavoro con requisiti di prestazioni di archiviazione inferiori. Tuttavia, altre opzioni come Filestore e SSD locale sono valide alternative in casi specifici in cui è necessario il supporto completo di POSIX o Cloud Storage diventa un collo di bottiglia per le prestazioni.

Seleziona Cloud Storage con SSD locale o Filestore

Per l'addestramento con uso intensivo di dati o per i carichi di lavoro di checkpoint e riavvio, può essere sensato utilizzare un'offerta di archiviazione più veloce durante la fase di addestramento con uso intensivo di I/O. Le scelte più comuni includono la copia dei dati su un SSD locale o su Filestore. Questa azione riduce il tempo di esecuzione complessivo del job mantenendo le GPU o le TPU Cloud fornite di dati e impedisce alle istanze di bloccarsi durante il completamento delle operazioni di checkpoint. Inoltre, più spesso crei i checkpoint, più checkpoint hai a disposizione come backup. Questo aumento del numero di backup consente inoltre di incrementare la frequenza complessiva con cui arrivano i dati utili (nota anche come goodput). Questa combinazione di ottimizzazione dei processori e aumento della produttività consente di ridurre i costi complessivi dell'addestramento del modello.

Esistono compromessi da considerare quando utilizzi SSD locale o Filestore. La sezione seguente descrive alcuni vantaggi e svantaggi di ciascuno.

Vantaggi delle unità SSD locali

  • Elevata velocità effettiva e IOPS dopo il trasferimento dei dati
  • Costo aggiuntivo basso o minimo

Svantaggi delle unità SSD locali

  • Le GPU o le TPU Cloud rimangono inattive durante il caricamento dei dati.
  • Il trasferimento dei dati deve avvenire in ogni job per ogni istanza.
  • È disponibile solo per alcuni tipi di istanze Cloud GPU.
  • Offre una capacità di archiviazione limitata.
  • Supporta i checkpoint, ma devi trasferirli manualmente a un'opzione di archiviazione durevole come Cloud Storage.

Vantaggi di Filestore

  • Fornisce uno spazio di archiviazione NFS condiviso che consente di trasferire i dati una volta e poi condividerli tra più job e utenti.
  • Non esiste tempo di inattività delle Cloud GPU o delle Cloud TPU perché i dati vengono trasferiti prima che tu debba pagare le Cloud GPU o le Cloud TPU.
  • Ha una grande capacità di archiviazione.
  • Supporta il checkpointing rapido per migliaia di VM.
  • Supporta Cloud GPU, Cloud TPU e tutti gli altri tipi di istanze Compute Engine.

Svantaggi di Filestore

  • Costo iniziale elevato, ma l'aumento dell'efficienza di calcolo ha il potenziale per ridurre i costi di addestramento complessivi.

Filestore selezionato con SSD locale facoltativo

Filestore è la scelta migliore per i carichi di lavoro di AI e ML che richiedono una bassa latenza e il supporto completo di POSIX. Oltre a essere la scelta consigliata per i job di addestramento di file di piccole dimensioni o I/O di piccole dimensioni, Filestore può offrire un'esperienza reattiva per i notebook di AI e ML, lo sviluppo software e molte altre applicazioni. Puoi anche implementare Filestore in una zona per l'addestramento ad alte prestazioni e l'archiviazione permanente dei checkpoint. Il deployment di Filestore in una zona offre anche un riavvio rapido in caso di errore. In alternativa, puoi eseguire il deployment di Filestore a livello di regione per supportare i job di inferenza ad alta disponibilità. L'aggiunta facoltativa di FS-Cache per supportare la memorizzazione nella cache SSD locale consente letture ripetute rapide dei dati di addestramento per ottimizzare i carichi di lavoro.

Passaggi successivi

Per ulteriori informazioni sulle opzioni di archiviazione e sull'AI e sul machine learning, consulta le seguenti risorse:

Collaboratori

Autori:

  • Dean Hildebrand | Technical Director, Office of the CTO
  • Sean Derrington | Group Outbound Product Manager, Storage
  • Richard Hendricks | Staff del Centro di Architettura

Altro collaboratore: Kumar Dhanagopal | Sviluppatore di soluzioni cross-product