Crea un cluster Slurm ottimizzato per l'AI con un tipo di macchina A4

Questa pagina descrive come creare ed eseguire rapidamente il deployment di un cluster Slurm ottimizzato per l'AI utilizzando i tipi di macchine A4 ottimizzati per l'acceleratore con gcloud CLI e Cluster Toolkit.

I tipi di macchine A4 ottimizzate per l'acceleratore sono dotati di GPU NVIDIA B200 collegate e sono progettati specificamente per il calcolo intensivo dell'AI per aiutare il cluster Slurm a gestire in modo efficiente l'addestramento e l'inferenza di modelli su larga scala. Per ulteriori informazioni sui tipi di macchine A4 ottimizzati per l'acceleratore su Google Cloud, vedi Tipi di macchine GPU.

In alternativa, puoi utilizzare Cluster Director per creare un cluster Slurm basato su A4. Cluster Director è un servizio gestito che semplifica e automatizza il deployment dei cluster, riducendo il sovraccarico operativo. Per saperne di più, consulta Crea un cluster ottimizzato per l'AI basato su un modello.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud , fai clic su Procedura guidata:

Procedura guidata


Panoramica sull'esercitazione

Questo tutorial descrive i passaggi per configurare un cluster Slurm ottimizzato per l'AI utilizzando tipi di macchine A4 ottimizzati per l'acceleratore. In particolare, hai configurato un cluster con macchine virtuali Compute Engine, creato un bucket Cloud Storage per archiviare i moduli Terraform necessari e configurato un'istanza Filestore per provisionare il cluster Slurm. Per completare i passaggi di questo tutorial, segui questa procedura:

  1. Configurare il progetto Google Cloud con le autorizzazioni e le variabili di ambiente richieste.
  2. Configurare un bucket Cloud Storage.
  3. Configurare Cluster Toolkit.
  4. Passare alla directory di Cluster Toolkit.
  5. Creare un file YAML di deployment Slurm.
  6. Eseguire il provisioning di un cluster Slurm utilizzando un progetto iniziare.
  7. Connetterti al cluster Slurm.

Prima di iniziare

  1. Riserva un blocco di capacità per una macchina a4-highgpu-8g. Queste macchine sono necessarie per questo tutorial.
  2. Assicurati di disporre di una quota Filestore sufficiente per eseguire il provisioning del cluster Slurm. È necessaria una capacità zonale minima di 10.240 GiB (nota anche come capacità SSD ad alta scalabilità).

    Per controllare la quota Filestore, visualizza Quote e limiti di sistema nella console Google Cloud e filtra la tabella in modo da mostrare solo le risorse Filestore.

  3. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  4. Abilita le API Compute Engine, Filestore, Cloud Storage, Service Usage e Cloud Resource Manager:

    Abilita le API

Ruoli obbligatori

Per assicurarti che il account di servizio predefinito di Compute Engine disponga delle autorizzazioni necessarie per eseguire il deployment di un cluster Slurm, chiedi all'amministratore di concedere i seguenti ruoli IAM al account di servizio predefinito di Compute Engine:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere al account di servizio predefinito di Compute Engine le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Costi

Il costo dell'esecuzione di questo tutorial varia in base a ogni sezione completata, ad esempio la configurazione del tutorial o l'esecuzione dei job. Puoi calcolare il costo utilizzando il Calcolatore prezzi.

  • Per stimare il costo della configurazione di questo tutorial, utilizza le seguenti specifiche:

    • Capacità Filestore (standard) per regione: 10.240 GiB.
    • Standard Persistent Disk: 50 GB pd-standard per il nodo di accesso Slurm.
    • Dischi permanenti prestazionali (SSD): 50 GB pd-ssd per il controller Slurm.
    • Istanza VM: 1 a4-highgpu-8g.

Avvia Cloud Shell

In questo tutorial utilizzerai Cloud Shell, un ambiente shell per la gestione delle risorse ospitate su Google Cloud.

Cloud Shell è preinstallato con Google Cloud CLI. gcloud CLI fornisce l'interfaccia a riga di comando principale per Google Cloud. Avvia Cloud Shell:

  1. Vai alla console Google Cloud .

    Google Cloud console

  2. Nell'angolo in alto a destra della console, fai clic sul pulsante Attiva Cloud Shell: Icona di Cloud Shell

Viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Utilizza questa shell per eseguire i comandi Cluster Toolkit e gcloud.

Imposta le variabili di ambiente

In Cloud Shell, imposta le seguenti variabili di ambiente da utilizzare per il resto del tutorial. Queste variabili di ambiente impostano valori segnaposto per le seguenti attività:

  • Configurare il progetto con i valori pertinenti per accedere alla macchina a4-highgpu-8g prenotata.

  • Configurare un bucket Cloud Storage per archiviare i moduli di Cluster Toolkit.

Variabili di capacità di prenotazione

export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID
export A4_RESERVATION_NAME=A4_RESERVATION_NAME
export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME
export A4_REGION=A4_REGION
export A4_ZONE=A4_ZONE
export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME

Sostituisci quanto segue:

  • A4_RESERVATION_PROJECT_ID: l' Google CloudID progetto a cui è stato concesso il blocco di prenotazione del tipo di macchina A4.
  • A4_RESERVATION_NAME: il nome della prenotazione GPU utilizzata nel progetto. Ad esempio, a4high-exr.
  • A4_DEPLOYMENT_NAME: un nome univoco per il deployment del cluster Slurm. Ad esempio, my-slurm-cluster-deployment.
  • A4_REGION: la regione in cui è in esecuzione il blocco di prenotazione delle macchine A4 riservate. Ad esempio, us-central1.
  • A4_ZONE: la zona che contiene le macchine riservate. Questa stringa deve contenere sia la regione che la zona. Ad esempio, us-central1-a.
  • A4_DEPLOYMENT_FILE_NAME: un nome univoco per il file YAML del progetto iniziale Slurm. Se completi questo tutorial più di una volta, scegli ogni volta un nome di deployment univoco.

Variabili di capacità di archiviazione

Crea le variabili di ambiente per il bucket Cloud Storage.

Cluster Toolkit utilizza i progetti iniziali per definire ed eseguire il deployment dei cluster delle VM. Un progetto iniziale definisce uno o più moduli Terraform per il provisioning dell'infrastruttura Cloud. Questo bucket viene utilizzato per archiviare questi progetti iniziali.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

Sostituisci quanto segue:

  • GOOGLE_CLOUD_BUCKET_NAME: il nome che vuoi utilizzare per il bucket Cloud Storage e che soddisfa i requisiti di denominazione dei bucket.
  • GOOGLE_CLOUD_BUCKET_LOCATION: qualsiasi Google Cloud regione di tua scelta in cui verrà ospitato il bucket. Ad esempio: us-central1.

Passa al progetto approvato per A4

Esegui il seguente comando per assicurarti di essere nel progetto Google Cloudche ha il blocco di prenotazione approvato per il tipo di macchina A4.

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

Crea un bucket Cloud Storage

Crea il bucket per archiviare i moduli Terraform. Da Cloud Shell, utilizzando le variabili di ambiente, esegui il seguente comando:

Una best practice quando si utilizza Terraform è di archiviare lo stato da remoto in un file abilitato per il controllo delle versioni. In Google Cloud, puoi creare un bucket Cloud Storage in cui è abilitato il controllo delle versioni.

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning

Configura Cluster Toolkit

Per creare un cluster Slurm in un Google Cloud progetto, puoi utilizzare Cluster Toolkit per gestire il deployment e il provisioning del cluster. Cluster Toolkit è un software open source fornito da Google Cloudper semplificare il processo di deployment dei workload su Google Cloud.

Per configurare Cluster Toolkit, segui questi passaggi.

Clona il repository GitHub di Cluster Toolkit

  1. In Cloud Shell, clona il repository GitHub:

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. Vai alla directory di lavoro principale:

    cd cluster-toolkit/

Crea il file binario di Cluster Toolkit

  1. In Cloud Shell, crea il file binario di Cluster Toolkit dall'origine eseguendo questo comando:

    make
  2. Per verificare la build, esegui questo comando:

    Per eseguire il deployment di un cluster Slurm di macchine A4 High ottimizzate per l'acceleratore, devi utilizzare la versione v1.51.1 o successiva di Cluster Toolkit.

    ./gcluster --version

    Dopo aver creato il file binario, puoi eseguire il deployment dei cluster per eseguire i job o i workload.

Crea un file di deployment

  1. Nella directory Cluster Toolkit, crea il file YAML di deployment di Slurm.

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Incolla i seguenti contenuti nel file YAML.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: A4_DEPLOYMENT_FILE_NAME
      project_id: A4_RESERVATION_PROJECT_ID
      region: A4_REGION
      zone: A4_ZONE
      a4h_reservation_name: A4_RESERVATION_NAME
      a4h_cluster_size: 1
    
  3. Per salvare ed uscire dal file, premi Ctrl+O > Invio > Ctrl+X.

Esegui il provisioning del cluster Slurm

Per eseguire il provisioning del cluster Slurm, esegui questo comando di deployment. Questo comando esegue il provisioning del cluster Slurm con il file di progetto iniziale examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml.

In Cloud Shell, avvia la creazione del cluster.

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

Connettiti al cluster

Dopo il deployment, connettiti alla Google Cloud console per visualizzare il cluster.

  1. Vai alla pagina Compute Engine > Istanze VM nella consoleGoogle Cloud .

    Vai a Istanze VM

  2. Individua il nodo di accesso (a4high-login-001 o simile).

  3. Fai clic su SSH per connetterti.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

Elimina il cluster Slurm

Ti consigliamo di eliminare le risorse quando non sono più necessarie.

Per impostazione predefinita, i progetti iniziali A4 High attivano la protezione da eliminazione sull'istanza Filestore. Quando elimini il cluster Slurm, devi disabilitare la protezione da eliminazione prima di eseguire il comando di eliminazione.

Disabilita la protezione da eliminazione

Per disabilitare la protezione da eliminazione quando aggiorni un'istanza, utilizza un comando simile al seguente:

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

Sostituisci INSTANCE_NAME con il nome dell'istanza che vuoi modificare. Ad esempio, my-genomics-instance.

Per trovare INSTANCE_NAME, puoi eseguire gcloud filestore instances list. Questo comando elenca tutte le istanze Filestore nel tuo progetto Google Cloud corrente, inclusi i relativi nomi, le località (zone), i livelli, la capacità e lo stato.

Dopo aver eseguito il comando, trova l'istanza Filestore corrispondente alla macchina a4-highgpu-8g in esecuzione in questo tutorial.

Elimina il cluster Slurm

  1. Prima di eseguire il comando di eliminazione, vai alla directory root di Cluster Toolkit. Per impostazione predefinita, DEPLOYMENT_FOLDER si trova nella directory root di Cluster Toolkit.

  2. Per eliminare il cluster, esegui:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Sostituisci DEPLOYMENT_FOLDER con il nome della cartella di deployment. In genere, è uguale a DEPLOYMENT_NAME.

Al termine dell'eliminazione, viene visualizzato un messaggio simile al seguente:

Destroy complete! Resources: xx destroyed.

Elimina il bucket di archiviazione

Elimina il bucket Cloud Storage dopo aver verificato che il comando precedente sia terminato senza errori:

gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}

Risoluzione dei problemi

  • Errore: Cloud Shell non può eseguire il provisioning del cluster perché non c'è più spazio di archiviazione.

    Potresti visualizzare questo errore se utilizzi spesso Cloud Shell e lo spazio di archiviazione è esaurito.

    Per risolvere il problema, consulta Disabilita o reimposta Cloud Shell.

  • Errore: il nome del cluster o del progetto iniziale esiste già.

    Potresti visualizzare questo errore se utilizzi un progetto che ha già usatoi nomi esatti dei file utilizzati in questo tutorial. Ad esempio, se un'altra persona della tua organizzazione ha completato questo tutorial end-to-end.

    Per risolvere il problema, esegui di nuovo il tutorial, scegli un nome univoco per il file di deployment ed esegui di nuovo il comando provision the Slurm cluster (esegui il provisioning del cluster Slurm) con il nuovo file di deployment.

Passaggi successivi