Storage

Se ti interessano i cluster di addestramento di Gemini Enterprise Agent Platform, contatta il tuo rappresentante di vendita per l'accesso.

La scelta della configurazione di archiviazione giusta è fondamentale per le prestazioni e la stabilità del cluster di addestramento. Il servizio si integra con due soluzioni di archiviazione distinte e ad alte prestazioni:

  • Filestore: un servizio di file gestito obbligatorio che fornisce le directory /home condivise per tutti i nodi del cluster.
  • Google Cloud Managed Lustre: un file system parallelo facoltativo progettato per prestazioni I/O estreme, ideale per l'addestramento su set di dati di grandi dimensioni. Consideralo come spazio di archiviazione di lavoro ad alte prestazioni anziché come sistema di registrazione e mantieni Cloud Storage come fonte attendibile. Per ulteriori informazioni, consulta Eseguire il backup dei dati di Managed Lustre in Cloud Storage.

Questa pagina fornisce una panoramica dei loro utilizzi principali e descrive i requisiti specifici di rete e deployment per un'integrazione riuscita con il cluster.

Integrazione dello spazio di archiviazione per i cluster di addestramento

I cluster di addestramento di Gemini Enterprise Agent Platform si basano su soluzioni di archiviazione di rete specifiche per il loro funzionamento. Filestore è obbligatorio per fornire le directory /home condivise per il cluster, mentre Managed Lustre è un file system ad alte prestazioni facoltativo per i carichi di lavoro impegnativi.

È fondamentale configurare correttamente la rete per questi servizi di archiviazione prima di eseguire il deployment del cluster.

Filestore per le home directory

Questo servizio utilizza un'istanza Filestore per fornire la directory /home condivisa per il cluster. Per garantire una connettività corretta, devi creare le risorse cloud in questo ordine specifico:

  1. Crea la rete VPC: innanzitutto, esegui il deployment di una rete VPC configurata con l'MTU consigliato (ad esempio, 8896).
  2. Crea l'istanza Filestore: poi, esegui il deployment dell'istanza Filestore nel VPC che hai appena creato.
  3. Crea il cluster di addestramento: infine, esegui il deployment del cluster, che potrà quindi connettersi all'istanza Filestore all'interno della stessa rete.

Google Cloud Managed Lustre per carichi di lavoro ad alte prestazioni

Per i carichi di lavoro che richiedono le massime prestazioni I/O, puoi collegare un file system Managed Lustre. Questo servizio si connette al tuo VPC utilizzando l'accesso ai servizi privati.

Managed Lustre è ottimizzato per il throughput anziché per la durabilità. Un'istanza è zonale e non ha funzionalità di snapshot, backup o annullamento dell'eliminazione. Esegui il backup di tutto ciò che non puoi rigenerare in Cloud Storage. Per ulteriori informazioni, consulta Eseguire il backup dei dati di Managed Lustre in Cloud Storage.

Eseguire il backup dei dati di Managed Lustre in Cloud Storage

Mantieni Cloud Storage come fonte attendibile di Managed Lustre. In questo modo proteggi i checkpoint e puoi eseguire il ripristino rapidamente in caso di errore o eliminazione di un'istanza.

Managed Lustre include un trasferimento integrato ad alto throughput che esporta direttamente in Cloud Storage. I trasferimenti sono incrementali: ogni esecuzione copia solo i file che non esistono già nella destinazione o che sono stati modificati dall'ultimo trasferimento.

Due identità necessitano di autorizzazioni. L'utente o il account di servizio che avvia l' esportazione necessita di lustre.instances.exportData, che è incluso nel roles/lustre.admin ruolo o che puoi concedere tramite un ruolo personalizzato. Il service agent Managed Lustre ha bisogno separatamente dell'accesso in scrittura al bucket di destinazione.

  1. Concedi al service agent Managed Lustre l'accesso in scrittura al bucket di destinazione. Devi eseguire questa operazione una sola volta per bucket:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com \
      --role=roles/storage.objectUser
    

    Dove:

  2. Esporta il file system nel bucket:

    gcloud lustre instances export-data INSTANCE_ID \
      --location=ZONE \
      --lustre-path="/" \
      --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"
    

    Dove:

    • INSTANCE_ID è il nome dell' istanza Managed Lustre di cui eseguire il backup.
    • ZONE è la zona dell'istanza, ad esempio us-central1-a.

    Il valore --gcs-path-uri può essere un bucket autonomo o un percorso all'interno di un bucket. Se includi un percorso, deve terminare con una barra. L'esportazione di ogni istanza in un percorso con il suo nome mantiene le istanze separate: se colleghi più di un'istanza Managed Lustre al cluster, assegna a ognuna il proprio percorso, perché due istanze che esportano nello stesso percorso si sovrascrivono a vicenda i file.

Per mantenere aggiornato il backup, esegui l'esportazione in base a una pianificazione. Ad esempio, puoi eseguire un cron job giornaliero su un nodo di accesso anziché eseguirlo solo alla fine di una sessione di addestramento. Poiché i trasferimenti sono incrementali, ogni esecuzione dopo la prima copia solo le modifiche.

Tieni presente quanto segue quando pianifichi un backup:

  • Può essere attiva una sola operazione di trasferimento per istanza alla volta. Un trasferimento avviato mentre un altro è ancora in esecuzione non riesce con ABORTED: unable to queue the operation.
  • L'esportazione non elimina mai gli oggetti dalla destinazione, quindi un file eliminato in Managed Lustre rimane nel bucket. Attiva il controllo delle versioni degli oggetti nel bucket di destinazione in modo da poter recuperare anche un file sovrascritto con contenuti indesiderati.
  • I link simbolici, le directory vuote e i layout di striping impostati con lfs setstripe non vengono conservati e i link fisici vengono esportati come oggetti separati, quindi un file con link fisici consuma spazio una volta per link nel bucket. UID, GID, modalità e mtime POSIX vengono conservati come metadati degli oggetti personalizzati.
  • Scrivi i checkpoint in modo atomico: scrivi in un percorso temporaneo, quindi rinomina il file in posizione, in modo che un'esportazione in esecuzione durante una scrittura acquisisca il file precedente o il nuovo file completo e mai un file parziale.

Per eseguire il ripristino, crea una nuova istanza Managed Lustre e ricarica i dati con gcloud lustre instances import-data. Per ulteriori informazioni, consulta Trasferire dati da o verso Cloud Storage.

Limitazione di rete critica: nessun peering transitivo

Una limitazione critica sia per Filestore sia per Google Cloud Managed Lustre è che non supportano il peering transitivo. Ciò significa che solo le risorse all'interno del VPC connesso direttamente possono accedere al servizio di archiviazione. Ad esempio, se il VPC del cluster (N1) è in peering con il servizio di archiviazione, un altro VPC (N2) in peering con N1 non avrà accesso.

Integrazione dello spazio di archiviazione per i cluster di addestramento

I cluster di addestramento di Gemini Enterprise Agent Platform si basano su soluzioni di archiviazione di rete specifiche per il loro funzionamento. Filestore è obbligatorio per fornire le directory /home condivise per il cluster, mentre Google Cloud Managed Lustre è un file system ad alte prestazioni facoltativo per i carichi di lavoro impegnativi. È fondamentale configurare correttamente la rete per questi servizi di archiviazione prima di eseguire il deployment del cluster.

Filestore

Utilizzi principali di Filestore con i cluster di addestramento

Oltre al suo ruolo di directory home obbligatoria, Filestore offre un modo flessibile per condividere i dati con il cluster.
Spazio di archiviazione condiviso aggiuntivo: puoi collegare una o più istanze Filestore aggiuntive a qualsiasi pool di nodi. Questa opzione è utile per fornire set di dati condivisi, file binari delle applicazioni, o altri file comuni ai job di addestramento. Quando vengono specificati nella configurazione del pool di nodi, i cluster di addestramento montano automaticamente queste istanze nella /mnt/filestore directory su ogni nodo.

Requisiti di Filestore

Per un'integrazione riuscita di Filestore con i cluster di addestramento è necessaria la seguente configurazione:

  • Abilita l'API: l'API Filestore deve essere abilitata nel tuo progetto Google Cloud prima di poter creare il cluster.
  • Directory /home obbligatoria: ogni cluster di addestramento richiede un'istanza Filestore dedicata che funga da directory /home condivisa. Questa istanza ha requisiti di configurazione specifici:
    • Rete: deve risiedere nella stessa rete VPC dei nodi di computing e di accesso del cluster.
    • Località: deve trovarsi nella stessa regione o zona del cluster.
    • Configurazione: devi specificare il nome completo della risorsa di questa istanza nel orchestrator_spec.slurm_spec.home_directory_storage campo quando crei il cluster tramite l'API.

Configurare lo spazio di archiviazione Filestore

Crea un'istanza Filestore zonale o regionale nella zona in cui vuoi creare il cluster. L'API Agent Platform richiede che un'istanza Filestore sia collegata al cluster per fungere da directory /home. Questa istanza Filestore deve trovarsi nella stessa zona o regione e nella stessa rete di tutti i nodi di computing e di accesso. Nell'esempio seguente, viene utilizzato 172.16.10.0/24 per il deployment di Filestore.

    SERVICE_TIER=ZONAL # Can use BASIC_SSD

    # Create reserved IP address range
    gcloud compute addresses create CLUSTER_IDfs-ip-range \
        --project=PROJECT_ID \
        --global \
        --purpose=VPC_PEERING \
        --addresses=172.16.10.0 \
        --prefix-length=24 \
        --description="Filestore instance reserved IP range" \
        --network=NETWORK

    # Get the CIDR range
    FS_IP_RANGE=$(
      gcloud compute addresses describe CLUSTER_IDfs-ip-range \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )

    # Create the Filestore instance
    gcloud filestore instances create FS_INSTANCE_ID \
        --project=PROJECT_ID \
        --location=ZONE \
        --tier=ZONAL \
        --file-share=name="nfsshare",capacity=1024 \
    --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
  

Lustre

Google Cloud Managed Lustre offre un file system parallelo gestito e ad alte prestazioni ottimizzato per le applicazioni AI e HPC. Con una capacità di più petabyte e un throughput fino a 1 TBps, Managed Lustre facilita la migrazione dei carichi di lavoro impegnativi al cloud.

Le istanze Managed Lustre risiedono nelle zone all'interno delle regioni. Una regione rappresenta una posizione geografica specifica in cui puoi eseguire le tue risorse. Ogni regione è suddivisa in diverse zone. Ad esempio, la regione us-central1 negli Stati Uniti centrali ha le zone us-central1-a, us-central1-b, us-central1-c e us-central1-f. Per ulteriori informazioni, consulta Geografia e regioni.

Per ridurre la latenza di rete, ti consigliamo di creare un'istanza Managed Lustre in una regione e una zona vicine a dove prevedi di utilizzarla.

Quando crei un'istanza Managed Lustre, devi definire le seguenti proprietà:

  • Il nome dell'istanza utilizzata da Google Cloud.
  • Il nome del file system utilizzato dagli strumenti lato client, ad esempio lfs.
  • La capacità di archiviazione in gibibyte (GiB). La capacità può variare da 9000 GiB a circa 8 PiB (7.632.000 GiB). La dimensione massima di un'istanza dipende dal suo livello di prestazioni.
  • Managed Lustre offre livelli di prestazioni che vanno da 125 MBps per TiB a 1000 MBps per TiB.
  • Per ottenere prestazioni ottimali, crea l'istanza nella stessa zona del tuo cluster di addestramento.
  • La rete VPC per questa istanza deve essere la stessa utilizzata dal tuo cluster di addestramento.

Managed Lustre offre 4 livelli di prestazioni, ognuno con una velocità di throughput massima diversa per TiB. I livelli di prestazioni influiscono anche sulla dimensione minima e massima dell'istanza e sulla dimensione del passo tra i valori di capacità accettabili. Non puoi modificare il livello di prestazioni di un'istanza dopo la creazione.

Il deployment di Managed Lustre richiede l'accesso ai servizi privati, che stabilisce il peering VPC tra il VPC del cluster di addestramento e il VPC che ospita Managed Lustre, utilizzando una subnet /20 dedicata.

Configurare l'istanza Managed Lustre (facoltativo)

Utilizza Google Cloud Managed Lustre solo se vuoi utilizzare Managed Lustre in Model Development Service.

Google Cloud Managed Lustre è un servizio di file system parallelo gestito e ad alte prestazioni su Google Cloud. È progettato specificamente per accelerare i carichi di lavoro impegnativi in AI/machine learning e computing ad alte prestazioni (HPC).

Per prestazioni ottimali quando utilizzi i cluster di addestramento, Google Cloud Managed Lustre deve essere eseguito il deployment dallo stesso VPC e dalla stessa zona del cluster di addestramento utilizzando il peering VPC per la rete di servizi.

Crea istanza Lustre

    gcloud lustre instances create LUSTRE_INSTANCE_ID \
    --project=PROJECT_ID \
    --location=ZONE \
    --filesystem=lustrefs \
    --per-unit-storage-throughput=500 \
    --capacity-gib=36000 \
    --network=NETWORK_NAME

  

Montaggio di Cloud Storage

Come prerequisito, assicurati che il account di servizio VM abbia il ruolo Utente oggetti Storage.

Montaggio predefinito

I cluster di addestramento di Gemini Enterprise Agent Platform utilizzano Cloud Storage FUSE per montare dinamicamente i bucket Cloud Storage su tutti i nodi di accesso e di computing, rendendoli accessibili nella directory /gcs. I bucket montati dinamicamente non possono essere elencati dal punto di montaggio root /gcs. Puoi accedere ai bucket montati dinamicamente come sottodirectory:

user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name

Montaggio personalizzato

Per montare un bucket Cloud Storage specifico in una directory locale con opzioni personalizzate, utilizza la seguente struttura di comando passandola come parte dello script di avvio durante la creazione del cluster o eseguendola direttamente sul nodo dopo la creazione del cluster.

sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a

Ad esempio, per montare il bucket mtdata nella directory /data, utilizza il seguente comando:

sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a

Per una configurazione completamente automatizzata e coerente, includi gli script di montaggio personalizzati negli script di avvio del cluster. Questa procedura garantisce che i bucket Cloud Storage vengano montati automaticamente su tutti i nodi all'avvio, eliminando la necessità di una configurazione manuale.

Per ulteriori consigli di configurazione personalizzati per i carichi di lavoro AI/ML, consulta la guida alle best practice per l'ottimizzazione del rendimento. Fornisce indicazioni specifiche per l'ottimizzazione di Cloud Storage FUSE per l'addestramento, l'inferenza e il checkpointing.

Passaggi successivi

I passaggi successivi si concentrano sull'utilizzo efficace del cluster per l'addestramento su larga scala.