La scelta della configurazione di archiviazione corretta è 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 file gestito obbligatorio che fornisce le directory
/homecondivise per tutti i nodi del cluster. - Google Cloud Managed Lustre: un file system parallelo facoltativo progettato per prestazioni di I/O estreme, ideale per l'addestramento su set di dati di grandi dimensioni. Consideralo come uno spazio di archiviazione di lavoro ad alte prestazioni, anziché come un sistema di registrazione, e mantieni Cloud Storage come fonte di attendibilità. Per saperne di più, consulta Esegui il backup dei dati di Managed Lustre su Cloud Storage.
Questa pagina fornisce una panoramica dei loro utilizzi principali e illustra i requisiti specifici di networking e deployment per un'integrazione riuscita con il tuo 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 è necessario per fornire le directory /home condivise per il cluster, mentre Managed Lustre è un file system facoltativo ad alte prestazioni per workload impegnativi.
È fondamentale configurare correttamente il networking 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:
- Crea la rete VPC: innanzitutto, esegui il deployment di una rete VPC configurata con l'MTU consigliata (ad esempio 8896).
- Crea l'istanza Filestore: esegui il deployment dell'istanza Filestore nel VPC appena creato.
- 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 workload ad alte prestazioni
Per i workload che richiedono le massime prestazioni di I/O, puoi collegare un file system Managed Lustre. Questo servizio si connette al tuo VPC utilizzando l'accesso privato ai servizi.
Managed Lustre è ottimizzato per il throughput anziché per la durabilità. Un'istanza è a livello di zona e non dispone di funzionalità di snapshot, backup o annullamento dell'eliminazione. Esegui il backup di tutto ciò che non puoi rigenerare in Cloud Storage. Per saperne di più, consulta Esegui il backup dei dati di Managed Lustre su Cloud Storage.
Esegui il backup dei dati di Managed Lustre in Cloud Storage
Mantieni Cloud Storage come fonte di attendibilità di Managed Lustre. In questo modo, i checkpoint vengono salvaguardati e puoi eseguire rapidamente il recupero se un'istanza non va a buon fine o viene eliminata.
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 deve disporre di lustre.instances.exportData, che è incluso nel ruolo roles/lustre.admin o che puoi concedere tramite un ruolo personalizzato. Il service agent Managed Lustre deve avere separatamente l'accesso in scrittura al bucket di destinazione.
Concedi all'agente di servizio 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.objectUserDove:
- BUCKET_NAME è il bucket di destinazione.
- PROJECT_NUMBER è il numero del progetto che contiene l'istanza Managed Lustre. Per saperne di più, consulta Autorizzazioni per l'agente di servizio Managed Lustre.
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-uripuò essere un bucket o un percorso all'interno di un bucket. Se includi un percorso, questo 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 ciascuna il proprio percorso, perché due istanze che esportano nello stesso percorso sovrascrivono i file l'una dell'altra.
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 un'esecuzione di addestramento. Poiché i trasferimenti sono incrementali, ogni esecuzione successiva alla prima copia solo ciò che è cambiato.
Quando pianifichi un backup, tieni presente quanto segue:
- Può essere attiva una sola operazione di trasferimento per istanza alla volta. Un trasferimento avviato mentre un altro è ancora in esecuzione non va a buon fine e restituisce l'errore
ABORTED: unable to queue the operation. - L'esportazione non elimina mai gli oggetti dalla destinazione, quindi un file che elimini su 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 setstripenon vengono conservati e i collegamenti fisici vengono esportati come oggetti separati, pertanto un file con collegamento fisico 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 modo che un'esportazione in esecuzione durante una scrittura acquisisca il file precedente o il nuovo file completo, 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 saperne di più, consulta Trasferisci dati da o verso Cloud Storage.
Limitazione critica del networking: nessun peering transitivo
Una limitazione critica sia per Filestore che per Google Cloud Managed Lustre è che non supportano il peering transitivo. Ciò significa che solo le risorse all'interno del VPC direttamente connesso possono accedere al servizio di archiviazione. Ad esempio, se il VPC del tuo 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 le operazioni IT. Filestore è necessario per fornire le directory /home condivise per il cluster, mentre Google Cloud Managed Lustre è un file system opzionale ad alte prestazioni per workload impegnativi.
È fondamentale configurare correttamente il networking 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. Questo è utile per fornire set di dati condivisi, file binari di applicazioni o altri file comuni ai tuoi job di addestramento. Se specificato nella configurazione del pool di nodi, i cluster di addestramento montano automaticamente queste istanze nella directory /mnt/filestore su ciascun nodo.
Requisiti di Filestore
Per un'integrazione corretta 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
/homeobbligatoria: ogni cluster di addestramento richiede un'istanza Filestore dedicata che funga da directory/homecondivisa. Questa istanza ha requisiti di configurazione specifici:- Rete: deve trovarsi 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 campo
quando crei il cluster tramite l'API.orchestrator_spec.slurm_spec.home_directory_storage
Configura lo spazio di archiviazione di Filestore
Crea un'istanza Filestore a livello di zona o di regione nella zona in cui vuoi creare il cluster. L'API Agent Platform richiede che un Filestore sia collegato 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 nodi di accesso. Nell'esempio seguente, 172.16.10.0/24 viene utilizzato 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 completamente gestito e ad alte prestazioni ottimizzato per applicazioni AI e HPC. Con una capacità su scala multi-petabyte e un throughput fino a 1 TBps, Managed Lustre facilita la migrazione dei workload più impegnativi al cloud.
Le istanze Managed Lustre si trovano in 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 è composta dalle zone us-central1-a, us-central1-b, us-central1-c e us-central1-f. Per saperne di più, consulta Area geografica e regioni.
Per ridurre la latenza di rete, ti consigliamo di creare un'istanza Managed Lustre in una regione e in una zona vicine al luogo in cui prevedi di utilizzarla.
Quando crei un'istanza Managed Lustre, devi definire le seguenti proprietà:
- Il nome dell'istanza utilizzato 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 ~8 PiB (7.632.000 GiB). La dimensione massima di un'istanza dipende dal 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 cluster di addestramento.
- La rete VPC per questa istanza deve essere la stessa utilizzata dal cluster di addestramento.
Managed Lustre offre 4 livelli di prestazioni, ciascuno con una velocità di throughput massima diversa per TiB. I livelli di prestazioni influiscono anche sulle dimensioni minime e massime dell'istanza e sulle dimensioni dei passaggi tra i valori di capacità accettabili. Non puoi modificare il livello di prestazioni di un'istanza dopo averla creata.
Il deployment di Managed Lustre richiede l'accesso privato ai servizi, che stabilisce il peering VPC tra il VPC del cluster di addestramento e il VPC che ospita Managed Lustre, utilizzando una subnet /20 dedicata.
Configura l'istanza Managed Lustre (facoltativo)
Utilizza Google Cloud Managed Lustre solo se vuoi utilizzare Managed Lustre nel servizio di sviluppo dei modelli.
Google Cloud Managed Lustre è un servizio di file system parallelo completamente gestito e ad alte prestazioni su Google Cloud. È progettato specificamente per accelerare i workload più impegnativi di AI/machine learning e computing ad alte prestazioni (HPC).
Per prestazioni ottimali durante l'utilizzo dei cluster di addestramento, Google Cloud Managed Lustre deve essere distribuito dallo stesso VPC e dalla stessa zona del cluster di addestramento utilizzando il peering VPC per il networking dei 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 della VM abbia il ruolo Storage Object User.
Montaggio predefinito
I cluster di addestramento di Gemini Enterprise Agent Platform utilizzano Cloud Storage FUSE per montare dinamicamente i tuoi 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 principale /gcs. Puoi accedere ai bucket montati dinamicamente come sottodirectory:
user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name
Supporto 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. In questo modo, i bucket Cloud Storage vengono montati automaticamente su tutti i nodi all'avvio, eliminando la necessità di una configurazione manuale.
Per ulteriori suggerimenti di configurazione personalizzati per i workload AI/ML, consulta la guida alle best practice per l'ottimizzazione delle prestazioni. 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.
- Adatta il codice per l'addestramento distribuito: per sfruttare appieno un cluster multi-nodo e uno spazio di archiviazione ad alte prestazioni, adatta il codice di addestramento per un ambiente distribuito.
- Orchestra i tuoi job con le pipeline di Gemini Enterprise Agent Platform: per i workflow di produzione, automatizza il processo di preparazione dei dati, invio dei job e registrazione dei modelli utilizzando le pipeline di Agent Platform.
- Monitora ed esegui il debug dei job di addestramento: monitora l'avanzamento e l'utilizzo delle risorse dei job di addestramento distribuito per identificare e risolvere i problemi.