Crea un cluster GKE ottimizzato per l'AI con Cluster Toolkit

Questo documento mostra come creare un cluster Google Kubernetes Engine (GKE) ottimizzato per l'AI che utilizza istanze Compute Engine A4X, A4, A3 Ultra, A3 Mega e A3 High (8 GPU) per supportare i workload di AI e ML.

Le serie di macchine A4X, A4, A3 Ultra, A3 Mega e A3 High (8 GPU) sono progettate per consentirti di eseguire cluster AI/ML su larga scala con funzionalità come il posizionamento dei workload mirato, i controlli avanzati di manutenzione dei cluster e la pianificazione basata sulla topologia. Per saperne di più, consulta Panoramica della gestione dei cluster.

GKE fornisce un'unica piattaforma per eseguire una serie diversificata di workload per le esigenze della tua organizzazione. Questi workload includono pre-addestramento distribuito ad alte prestazioni, ottimizzazione del modello, inferenza del modello, pubblicazione di applicazioni e servizi di supporto. GKE riduce l'onere operativo della gestione di più piattaforme.

Scegli come creare un cluster GKE ottimizzato per l'AI

Le seguenti opzioni per la creazione dei cluster offrono diversi livelli di facilità e flessibilità nella configurazione dei cluster e nella pianificazione dei workload:

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Per utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
  • Verifica di disporre delle autorizzazioni necessarie per creare e gestire il cluster GKE e i service account associati:
    • Kubernetes Engine Admin (roles/container.admin)
    • Compute Admin (roles/compute.admin)
    • Storage Admin (roles/storage.admin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)
    • Service Account Admin (roles/iam.serviceAccountAdmin)
    • Service Account User (roles/iam.serviceAccountUser)
    • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)
    • Amministratore dei ruoli (roles/iam.roleAdmin)
    • Secret Manager Secret Version Manager (roles/secretmanager.secretVersionManager)
    • Per utilizzare una prenotazione per singolo progetto: Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) sul progetto
    • Per utilizzare una prenotazione condivisa: Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) sia nel progetto proprietario sia in qualsiasi progetto consumer in cui vuoi utilizzare la prenotazione

Scegli un'opzione di consumo e ottieni la capacità

Per ottenere la capacità, completa i seguenti passaggi:

  1. Scegli un'opzione di consumo: effettua la scelta in base a come vuoi ottenere e utilizzare le risorse GPU. Per saperne di più, consulta Scegli un'opzione di consumo.

    Per GKE, tieni presente le seguenti informazioni aggiuntive quando scegli un'opzione di consumo:

  2. Ottieni capacità: il processo per ottenere capacità varia per ogni opzione di consumo. Per scoprire di più sulla procedura per l'opzione di consumo scelta, consulta la panoramica della capacità.

Requisiti

I seguenti requisiti si applicano a un cluster GKE ottimizzato per l'AI:

  • Per A4X Max, devi utilizzare una delle seguenti versioni:

    • Per la versione 1.35 o successive, utilizza GKE 1.35.0-gke.2745000 o successive.
    • Per la versione 1.34, utilizza GKE 1.34.3-gke.1318000 o versioni successive.

    Queste versioni contribuiscono a garantire che A4X Max utilizzi quanto segue:

    • R580.95.05, la versione minima del driver GPU per A4X Max, attivata per impostazione predefinita.
    • Coherent Driver-based Memory Management (CDMM), abilitata per impostazione predefinita. NVIDIA consiglia ai cluster Kubernetes di attivare questa modalità per risolvere il problema di reporting eccessivo della memoria. CDMM consente di gestire la memoria della GPU tramite il driver anziché il sistema operativo. Questo approccio ti aiuta a evitare l'onlining della memoria GPU da parte del sistema operativo ed espone la memoria GPU come nodo NUMA (Non-Uniform Memory Access) al sistema operativo. Le GPU multi-istanza non sono supportate quando CDMM è abilitato. Per ulteriori informazioni su CDMM, consulta Supporto hardware e software.
    • GPUDirect RDMA e MNNVL, che sono consigliati per consentire ai node pool A4X Max di utilizzare le funzionalità di networking di A4X Max.
  • Per A4X, devi utilizzare una delle seguenti versioni:

    • Per la versione 1.33 o successive, utilizza GKE 1.33.4-gke.1036000 o successive.
    • Per la versione 1.32, utilizza GKE 1.32.8-gke.1108000 o versioni successive.

    Queste versioni contribuiscono a garantire che A4X utilizzi:

    • R580, la versione minima del driver GPU per A4X, abilitata per impostazione predefinita.
    • Coherent Driver-based Memory Management (CDMM), abilitata per impostazione predefinita. NVIDIA consiglia ai cluster Kubernetes di attivare questa modalità per risolvere il problema di reporting eccessivo della memoria. CDMM consente di gestire la memoria della GPU tramite il driver anziché il sistema operativo. Questo approccio ti aiuta a evitare l'onlining della memoria GPU da parte del sistema operativo ed espone la memoria GPU come nodo NUMA (Non-Uniform Memory Access) al sistema operativo. Le GPU multi-istanza non sono supportate quando CDMM è abilitato. Per ulteriori informazioni su CDMM, consulta Supporto hardware e software.
    • GPUDirect RDMA e MNNVL, consigliati per consentire ai node pool A4X di utilizzare le funzionalità di networking di A4X.
  • Assicurati di utilizzare la versione minima del driver GPU, a seconda del tipo di macchina:

    • A4X Max: le GPU GB300 nelle istanze bare metal A4X Max richiedono almeno la versione del driver GPU R580.95.05. Consulta i requisiti di versione menzionati in precedenza.
    • A4X: le GPU GB200 nelle istanze A4X richiedono almeno la versione del driver GPU R580. Consulta i requisiti di versione menzionati in precedenza.
    • A4: le GPU B200 nelle istanze A4 richiedono almeno la versione del driver GPU R570. Per impostazione predefinita, GKE installa automaticamente questa versione del driver su tutti i nodi A4 che eseguono la versione minima richiesta per A4, 1.32.1-gke.1729000 o versioni successive.
    • A3 Ultra: le GPU H200 nelle istanze A3 Ultra richiedono una versione minima del driver GPU R550, disponibile in GKE 1.31 come versione del driver latest. Per A3 Ultra, devi impostare gpu-driver-version=latest con GKE 1.31. Per GKE versione 1.31.5-gke.1169000 o successive, GKE installa automaticamente le versioni del driver GPU R550 sui nodi A3 Ultra.
    • A3 Mega e A3 High: le GPU H100 nelle istanze A3 High e A3 Mega sono supportate dalla versione predefinita del driver GPU in tutte le versioni GKE supportate. Puoi anche impostare gpu-driver-version=latest per accedere ai driver di produzione più recenti disponibili nelle versioni GKE supportate.
  • Per i pool di nodi A3 Ultra, devi impostare il tipo di disco su hyperdisk-balanced.

  • Per utilizzare GPUDirect RDMA, utilizza le seguenti versioni minime a seconda del tipo di macchina:

    • A4X Max: consulta i requisiti di versione menzionati in precedenza.
    • A4X: consulta i requisiti di versione menzionati in precedenza.
    • A4: utilizza 1.32.2-gke.1475000 o versioni successive.
    • A3 Ultra: utilizza 1.31.4-gke.1183000 o versioni successive.
  • Per utilizzare GPUDirect-TCPXO (per A3 Mega) e GPUDirect-TCPX (per A3 High), utilizza le seguenti versioni di GKE:

    • A3 High: utilizza qualsiasi versione di GKE disponibile precedente alla 1.34.
    • A3 Mega: utilizza qualsiasi versione di GKE disponibile.
  • Per utilizzare GPUDirect RDMA, i nodi GKE devono utilizzare un'immagine del nodo Container-Optimized OS. Le immagini dei nodi Ubuntu e Windows non sono supportate.

  • Per creare cluster con A4X Max e A4X, devi utilizzare il modello di provisioning con prenotazione. Altri modelli di provisioning non sono supportati.

Crea un cluster con Cluster Toolkit

Segui queste istruzioni per creare un cluster utilizzando Cluster Toolkit. Questa sezione ti guida nel processo di creazione del cluster, assicurandoti che il tuo progetto segua le best practice e soddisfi i requisiti per un cluster GKE ottimizzato per l'AI. Questa sezione mostra anche come utilizzare Terraform per eseguire il provisioning e gestire l'infrastruttura per il deployment.

A4X Max

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, segui le istruzioni per installare le dipendenze per preparare un ambiente diverso.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Nel progetto base examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml dal repository GitHub, compila le seguenti impostazioni nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici per il tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine. Il valore predefinito è gke-a4x-max-bm.
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi delle macchine A4X Max. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella prenotazione.
    • STATIC_NODE_COUNT: il numero di nodi A4X Max nel pool di nodi del cluster, che deve essere pari o inferiore a 18 nodi. Ti consigliamo di utilizzare 18 nodi per ottenere la topologia GPU di 1x72 in un sottoblocco utilizzando un dominio NVLink.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire la connessione al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.
    • Per il campo reservation, utilizza uno dei seguenti valori, a seconda che tu voglia scegliere come target blocchi specifici in una prenotazione quando esegui il provisioning del pool di nodi:

    • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il nome della prenotazione (RESERVATION_NAME).

    • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • RESERVATION_PROJECT_ID: l'ID progetto Google Cloud che ha la prenotazione. La prenotazione potrebbe trovarsi in un progetto diverso da PROJECT_ID.

    • NUM_NODE_POOLS: il numero di node pool da attivare nel cluster. Se vuoi un cluster con più di 18 nodi, puoi specificare più pool di nodi. Il valore predefinito è 1.

    Per modificare le impostazioni avanzate, modifica il file del progetto examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml.

  5. Genera le Credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  6. Utilizza il comando gcluster deploy per eseguire il deployment del blueprint ed eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchina A4X Max:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml \
        examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml
    
  7. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base.

    • Il progetto crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un node pool.
    • Per supportare il template del job fio-bench-job-template nel progetto, vengono creati bucketGoogle Cloud , spazio di archiviazione di rete e risorse di volumi permanenti.

A4X

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, segui le istruzioni per installare le dipendenze per preparare un ambiente diverso.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Nel progetto examples/gke-a4x/gke-a4x-deployment.yaml del repository GitHub, compila le seguenti impostazioni nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici del tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine. Il valore predefinito è gke-a4x.
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi delle macchine A4X. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella tua prenotazione.
    • STATIC_NODE_COUNT: il numero di nodi A4X nel pool di nodi del cluster, che deve essere pari o inferiore a 18 nodi. Ti consigliamo di utilizzare 18 nodi per ottenere la topologia GPU di 1x72 in un blocco secondario utilizzando un dominio NVLink.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire la connessione al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.
    • Per il campo reservation, utilizza uno dei seguenti valori, a seconda che tu voglia scegliere come target blocchi specifici in una prenotazione quando esegui il provisioning del pool di nodi:

    • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il nome della prenotazione (RESERVATION_NAME).

    • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • RESERVATION_PROJECT_ID: l'ID progetto Google Cloud che contiene la prenotazione. La prenotazione potrebbe trovarsi in un progetto diverso da PROJECT_ID.

    • NUM_NODE_POOLS: il numero di node pool da attivare nel cluster. Se vuoi un cluster con più di 18 nodi, puoi specificare più pool di nodi. Il valore predefinito è 1.

    Per modificare le impostazioni avanzate, modifica il file del progetto di base examples/gke-a4x/gke-a4x.yaml.

  5. Genera le Credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  6. Utilizza il comando gcluster deploy per eseguire il deployment del progetto e il provisioning dell'infrastruttura GKE utilizzando i tipi di macchina A4X:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x/gke-a4x-deployment.yaml \
        examples/gke-a4x/gke-a4x.yaml
    
  7. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base.

    • Il progetto crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un node pool.
    • Per supportare il template del job fio-bench-job-template nel progetto, vengono creati bucketGoogle Cloud , spazio di archiviazione di rete e risorse di volumi permanenti.

A4

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, segui le istruzioni per installare le dipendenze per preparare un ambiente diverso.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Scegli un'opzione di consumo per il deployment GKE:

    Per impostazione predefinita, il file di deployment è configurato per utilizzare prenotazioni specifiche. Per utilizzare un modello di consumo alternativo (come le VM spot o la modalità di provisioning con avvio flessibile), aggiorna il file YAML del deployment. Per saperne di più, consulta Opzioni di consumo di GKE.

  5. Nel progetto examples/gke-a4/gke-a4-deployment.yaml del repository GitHub, compila le seguenti impostazioni nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici del tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine. Il valore predefinito è gke-a4.
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi di macchine A4. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella tua prenotazione.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP che vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.
    • Nella sezione della prenotazione specifica, configura le seguenti impostazioni:
    • Nel blocco reservation_affinity, nell'elenco specific_reservations, specifica il campo name della prenotazione:

      • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, specifica il nome della prenotazione (RESERVATION_NAME).
      • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • STATIC_NODE_COUNT: il numero di nodi A4 nel tuo cluster.

    Per modificare le impostazioni avanzate, modifica il file del progetto examples/gke-a4/gke-a4.yaml.

  6. Genera le Credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Utilizza il comando gcluster deploy per eseguire il deployment del blueprint ed eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchina A4:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4/gke-a4-deployment.yaml \
        examples/gke-a4/gke-a4.yaml
    
  8. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base.

    • Il progetto crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un node pool.
    • Per supportare il template del job fio-bench-job-template nel progetto, vengono creati bucketGoogle Cloud , spazio di archiviazione di rete e risorse di volumi permanenti.

A3 Ultra

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, segui le istruzioni per installare le dipendenze per preparare un ambiente diverso.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Scegli un'opzione di consumo per il deployment GKE:

    Per impostazione predefinita, il file di deployment è configurato per utilizzare prenotazioni specifiche. Per utilizzare un modello di consumo alternativo (come le VM spot o la modalità di provisioning con avvio flessibile), aggiorna il file YAML del deployment. Per saperne di più, consulta Opzioni di consumo di GKE.

  5. Nel progetto base examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml del repository GitHub, compila le seguenti impostazioni nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici del tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine. Il valore predefinito è gke-a3-ultragpu.
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi delle macchine A3 Ultra. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella tua prenotazione.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP che vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.
    • Nella sezione della prenotazione specifica, configura le seguenti impostazioni:
    • Nel blocco reservation_affinity, nell'elenco specific_reservations, specifica il campo name della prenotazione:

      • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, specifica il nome della prenotazione (RESERVATION_NAME).
      • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • STATIC_NODE_COUNT: il numero di nodi A3 Ultra nel cluster.

    Per modificare le impostazioni avanzate, modifica il file del progetto examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.

  6. Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Utilizza il comando gcluster deploy per eseguire il deployment del blueprint ed eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchine A3 Ultra:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \
        examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    
  8. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base.

    • Il progetto crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un node pool.
    • Per supportare il template del job fio-bench-job-template nel progetto, vengono creati bucketGoogle Cloud , spazio di archiviazione di rete e risorse di volumi permanenti.

A3 Mega

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, prepara un ambiente diverso seguendo le istruzioni per installare le dipendenze.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Nel progetto base examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml dal repository GitHub, sostituisci le seguenti variabili nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici del tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi delle macchine A3 Mega. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella tua prenotazione.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP che vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate. Per ottenere l'indirizzo IP della tua macchina host, esegui il comando curl -s https://ifconfig.me.
  5. Scegli un'opzione di consumo per il deployment GKE:

    Per impostazione predefinita, il file di deployment è configurato per utilizzare prenotazioni standard o future. Per utilizzare un modello di consumo alternativo (ad esempio capacità on demand, VM spot o modalità di provisioning con avvio flessibile), aggiorna il file YAML del deployment. Per saperne di più, consulta Opzioni di consumo di GKE.

    Per configurare una prenotazione, imposta i seguenti valori nella sezione specifica della prenotazione:

    • Nel blocco reservation_affinity, nell'elenco specific_reservations, specifica il campo name della prenotazione:
    • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, specifica il nome della prenotazione (RESERVATION_NAME).
    • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • STATIC_NODE_COUNT: il numero di nodi A3 Mega nel tuo cluster.

    Per modificare le impostazioni avanzate, modifica il progetto base examples/gke-a3-megagpu/gke-a3-megagpu.yaml dal repository GitHub.

  6. Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Utilizza il comando gcluster deploy per eseguire il deployment del blueprint ed eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchina A3 Mega:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml \
        examples/gke-a3-megagpu/gke-a3-megagpu.yaml
    
  8. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base. Il progetto crea reti VPC, service account, un cluster e un pool di nodi.

A3 High

  1. Avvia Cloud Shell. Sebbene sia possibile utilizzare un ambiente diverso, ti consigliamo di utilizzare Cloud Shell perché le dipendenze sono già preinstallate per Cluster Toolkit. Se non vuoi utilizzare Cloud Shell, prepara un ambiente diverso seguendo le istruzioni per installare le dipendenze.
  2. Installa Cluster Toolkit.

  3. Crea un bucket Cloud Storage con il controllo delle versioni abilitato per archiviare lo stato del deployment di Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Sostituisci le seguenti variabili:

    • BUCKET_NAME: il nome del nuovo bucket Cloud Storage, che deve soddisfare i requisiti di denominazione dei bucket.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: la regione di computing in cui vuoi archiviare lo stato del deployment Terraform.
  4. Nel progetto base examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml dal repository GitHub, sostituisci le seguenti variabili nelle sezioni terraform_backend_defaults e vars in modo che corrispondano ai valori specifici del tuo deployment:

    • BUCKET: il nome del bucket Cloud Storage che hai creato nel passaggio precedente.
    • DEPLOYMENT_NAME: un nome univoco per il deployment, che deve avere una lunghezza compresa tra 6 e 30 caratteri. Se il nome del deployment non è univoco all'interno di un progetto, la creazione del cluster non va a buon fine.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • REGION: la regione di computing del cluster.
    • ZONE: la zona di computing del pool di nodi delle macchine A3 High. Questa zona deve corrispondere a quella in cui sono disponibili le macchine nella tua prenotazione.
    • AUTHORIZED_CIDR: l'intervallo di indirizzi IP che vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che chiama Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate. Per ottenere l'indirizzo IP della tua macchina host, esegui il comando curl -s https://ifconfig.me.
  5. Scegli un'opzione di consumo per il deployment GKE:

    Per impostazione predefinita, il file di deployment è configurato per utilizzare prenotazioni standard o future. Per utilizzare un modello di consumo alternativo (ad esempio capacità on demand, VM spot o modalità di provisioning con avvio flessibile), aggiorna il file YAML del deployment. Per saperne di più, consulta Opzioni di consumo di GKE.

    Per configurare una prenotazione, imposta i seguenti valori nella sezione specifica della prenotazione:

    • Nel blocco reservation_affinity, nell'elenco specific_reservations, specifica il campo name della prenotazione:
    • Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, specifica il nome della prenotazione (RESERVATION_NAME).
    • Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza i nomi della prenotazione e del blocco nel seguente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Se non sai quali blocchi sono disponibili nella tua prenotazione, consulta Visualizza la topologia di una prenotazione.

    • STATIC_NODE_COUNT: il numero di nodi A3 High nel tuo cluster.

    Per modificare le impostazioni avanzate, modifica il progetto base examples/gke-a3-highgpu/gke-a3-highgpu.yaml dal repository GitHub.

  6. Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, utilizza il comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Utilizza il comando gcluster deploy per eseguire il deployment del progetto e il provisioning dell'infrastruttura GKE utilizzando i tipi di macchina A3 High:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml \
        examples/gke-a3-highgpu/gke-a3-highgpu.yaml
    
  8. Quando richiesto, seleziona (A)pplica per eseguire il deployment del progetto di base. Il progetto crea reti VPC, service account, un cluster e un pool di nodi.

Esegui i job di esempio di Dynamic Workload Scheduler

Se hai eseguito il provisioning del cluster utilizzando Dynamic Workload Scheduler (con provisioning con avvio flessibile o provisioning in coda), puoi convalidare la pianificazione dei workload inviando job Kubernetes di esempio.

Per saperne di più sulle modalità di provisioning di Dynamic Workload Scheduler, consulta Avvio flessibile di Dynamic Workload Scheduler con provisioning in coda.

Invia un job di esempio

Seleziona la scheda corrispondente alla tua opzione di consumo:

Avvio flessibile

Questa attività è facoltativa e si applica solo se hai eseguito il provisioning del cluster con l'avvio flessibile. I workload configurati per l'avvio flessibile richiedono il selettore di nodi cloud.google.com/gke-flex-start: "true" nella specifica del pod.

  1. Invia il job di esempio con avvio flessibile:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yaml
    
  2. Monitora lo stato del job e dei pod:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    Sostituisci quanto segue:

    • JOB_NAME: il nome del job.
    • POD_NAME: il nome del pod.
  3. Al termine del job, elimina le risorse del job:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex.yaml
    

Provisioning in coda

Questa attività è facoltativa e si applica solo se hai eseguito il provisioning del cluster con il provisioning in coda. I workload configurati per il provisioning in coda richiedono la seguente etichetta e annotazione nella specifica del pod:

  • Etichetta: kueue.x-k8s.io/queue-name: dws-local-queue
  • Annotazione: provreq.kueue.x-k8s.io/maxRunDurationSeconds: "MAX_RUN_DURATION"

Per saperne di più, consulta Requisiti del manifest del workload per il provisioning in coda.

  1. Invia il job di provisioning in coda di esempio:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    
  2. Monitora lo stato del job e dei pod:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    Sostituisci quanto segue:

    • JOB_NAME: il nome del job.
    • POD_NAME: il nome del pod.
  3. Al termine del job, elimina le risorse del job:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    

Testa le prestazioni della rete

Ti consigliamo di convalidare la funzionalità dei cluster di cui è stato eseguito il provisioning. Per farlo, utilizza i test NCCL, ovvero i test della NVIDIA Collective Communications Library (NCCL) ottimizzati per l'ambiente Google.

Esegui benchmark riproducibili

Dopo aver creato un cluster utilizzando Cluster Toolkit, puoi riprodurre i benchmark di pre-addestramento per i modelli aperti di machine learning di grandi dimensioni sulla serie di macchine scelta seguendo le ricette fornite su GitHub.

Ogni ricetta fornisce le istruzioni per completare le seguenti attività:

  • Prepara l'ambiente.
  • Esegui il benchmark.
  • Analizza i risultati del benchmark. Questa revisione include i risultati del benchmark e i log dettagliati per un'analisi più approfondita.

Per visualizzare tutte le formule disponibili per l'addestramento e altri tipi di workload, consulta il repository GitHub GPU recipes.

Esegui la pulizia delle risorse create da Cluster Toolkit

Per evitare addebiti ricorrenti per le risorse utilizzate in questa pagina, utilizza il comando gcluster destroy per liberare spazio per le risorse di cui è stato eseguito il provisioning da Cluster Toolkit, tra cui le reti VPC e il cluster GKE:

   cd ~/cluster-toolkit
   ./gcluster destroy CLUSTER_NAME/

Sostituisci CLUSTER_NAME con il nome del tuo cluster. Per i cluster creati con Cluster Toolkit, il nome del cluster si basa sul nome DEPLOYMENT_NAME.

Passaggi successivi