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 tuoi 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 mirato dei workload, controlli avanzati di manutenzione del cluster e pianificazione in base alla topologia. Per saperne di più, consulta Panoramica della gestione dei cluster.
GKE fornisce un'unica piattaforma per eseguire un insieme diversificato di workload per le esigenze della tua organizzazione. Sono inclusi il pre-addestramento distribuito ad alte prestazioni, il perfezionamento del modello, l'inferenza del modello, la pubblicazione dell'applicazione e i servizi di supporto. GKE riduce il carico operativo della gestione di più piattaforme.
Scegliere come creare un cluster GKE ottimizzato per l'AI
Le seguenti opzioni per la creazione di cluster offrono ciascuna diversi livelli di facilità e flessibilità nella configurazione dei cluster e nella pianificazione dei workload:
- Utilizza Cluster Toolkit per creare cluster con la configurazione predefinita per le risorse di computing, archiviazione e networking e con GPUDirect RDMA-over-Converged-Ethernet (RoCE) abilitato.
In alternativa, puoi creare manualmente il cluster GKE per una personalizzazione o un'espansione precisa degli ambienti GKE di produzione esistenti. Per creare manualmente un cluster GKE ottimizzato per l'AI, consulta una delle seguenti pagine:
- A4X Max: crea un cluster GKE ottimizzato per l'AI che utilizza A4X Max.
- A4X: crea un cluster GKE ottimizzato per l'AI che utilizza A4X.
- A4 o A3 Ultra: crea un cluster GKE ottimizzato per l'AI che utilizza A4 o A3 Ultra.
- A3 Mega o A3 High: crea un cluster GKE Standard che utilizza A3 Mega o A3 High oppure crea un cluster GKE Autopilot che utilizza A3 Mega o A3 High.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- 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:
- Amministratore Kubernetes Engine (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin) - Amministratore service account (
roles/iam.serviceAccountAdmin) - Utente Service Account (
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 un 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
- Amministratore Kubernetes Engine (
Scegli un'opzione di consumo e ottieni la capacità
Scegli un'opzione di consumo. Fai la tua scelta in base a come vuoi ottenere e utilizzare le risorse GPU. Per saperne di più, consulta Scegliere un'opzione di consumo.
Per GKE, considera le seguenti informazioni aggiuntive quando scegli un'opzione di consumo:
- Le istanze di calcolo A4X Max e A4X non possono essere sottoposte a provisioning con avvio flessibile.
- Per saperne di più su avvio flessibile (anteprima) e GKE, consulta Informazioni sull'ottenimento di GPU con avvio flessibile.
- L'avvio flessibile utilizza il posizionamento compatto con il criterio del "best effort". Per esaminare la topologia, consulta Visualizza la topologia fisica dei nodi nel cluster GKE.
- Puoi ottenere informazioni sulla topologia quando utilizzi le VM spot solo se configuri il posizionamento compatto.
Ottenere capacità. La procedura per ottenere la capacità varia a seconda dell'opzione di consumo.
Per scoprire di più sulla procedura per l'opzione di consumo che hai scelto, 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 versioni 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, che è abilitata per impostazione predefinita.
- Coherent Driver-based Memory Management (CDMM), che è abilitato per impostazione predefinita. NVIDIA consiglia di attivare questa modalità nei cluster Kubernetes per risolvere il problema della segnalazione eccessiva della memoria. CDMM consente di gestire la memoria GPU tramite il driver anziché il sistema operativo. Questo approccio consente di evitare l'online del sistema operativo della memoria GPU 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, vedi Assistenza hardware e software.
- GPUDirect RDMA e MNNVL, che sono consigliati per consentire ai pool di nodi A4X Max di utilizzare le funzionalità di rete 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 versioni successive.
- Per la versione 1.32, utilizza GKE 1.32.8-gke.1108000 o versioni successive.
Queste versioni contribuiscono a garantire che A4X utilizzi quanto segue:
- R580, la versione minima del driver GPU per A4X, che è abilitata per impostazione predefinita.
- Coherent Driver-based Memory Management (CDMM), che è abilitato per impostazione predefinita. NVIDIA consiglia di attivare questa modalità nei cluster Kubernetes per risolvere il problema della segnalazione eccessiva della memoria. CDMM consente di gestire la memoria GPU tramite il driver anziché il sistema operativo. Questo approccio consente di evitare l'online del sistema operativo della memoria GPU 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, vedi Assistenza hardware e software.
- GPUDirect RDMA e MNNVL, che sono consigliati per consentire ai pool di nodi 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 una versione del driver GPU R580.95.05. Consulta i requisiti di versione menzionati in precedenza.
- A4X: le GPU GB200 nelle istanze di macchine virtuali (VM) A4X richiedono almeno la versione R580 del driver della GPU. Consulta i requisiti di versione menzionati in precedenza.
- A4: le GPU B200 nelle istanze VM A4 richiedono almeno la versione R570 del driver GPU. 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 VM A3 Ultra richiedono una versione minima del driver GPU R550, disponibile in GKE 1.31 come versione del driver
latest. Per A3 Ultra, devi impostaregpu-driver-version=latestcon GKE 1.31. Per GKE versione 1.31.5-gke.1169000 o successive, GKE, per impostazione predefinita, installa automaticamente le versioni del driver GPU R550 sui nodi A3 Ultra. - A3 Mega e A3 High: le GPU H100 nelle VM 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=latestper 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: vedi i requisiti di versione menzionati in precedenza.
- A4X: consulta i requisiti di versione menzionati in precedenza.
- A4: utilizza la versione 1.32.2-gke.1475000 o successive.
- A3 Ultra: utilizza la versione 1.31.4-gke.1183000 o 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, assicurandosi 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
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
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 memorizzare lo stato del deployment Terraform.
Nel progetto base
examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yamldal repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.PROJECT_ID: il tuo ID progetto Google Cloud .DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili 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 della GPU di1x72in un blocco secondario utilizzando un dominio NVLink.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare 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 durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione
(
RESERVATION_PROJECT_ID: l' Google Cloud ID progetto che contiene la prenotazione. La prenotazione potrebbe esistere in un progetto diverso daPROJECT_ID.NUM_NODE_POOLS: il numero di node pool da abilitare nel cluster. Se vuoi un cluster più grande di 18 nodi, puoi specificare più pool di nodi. Il valore predefinito è1.
Per modificare le impostazioni avanzate, modifica il file
examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml.Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, accedi e configura ADC:
gcloud auth application-default loginUtilizza il comando
gcluster deployper eseguire il deployment del blueprint e il provisioning dell'infrastruttura GKE utilizzando i tipi di macchine 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 \ --deployment DEPLOYMENT_NAMESostituisci
DEPLOYMENT_NAMEcon il nome del deployment.Quando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
A4X
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
- Installa Cluster Toolkit.
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 memorizzare lo stato del deployment Terraform.
Nel progetto base
examples/gke-a4x/gke-a4x-deployment.yamldel repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici del tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.PROJECT_ID: il tuo ID progetto Google Cloud .DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili nella 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 della GPU di1x72in un blocco secondario utilizzando un dominio NVLink.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare 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 durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione
(
RESERVATION_PROJECT_ID: l' Google Cloud ID progetto che contiene la prenotazione. La prenotazione potrebbe esistere in un progetto diverso daPROJECT_ID.NUM_NODE_POOLS: il numero di node pool da abilitare nel cluster. Se vuoi un cluster più grande di 18 nodi, puoi specificare più pool di nodi. Il valore predefinito è1.
Per modificare le impostazioni avanzate, modifica il file
examples/gke-a4x/gke-a4x.yaml.Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, accedi e configura ADC:
gcloud auth application-default loginEsegui il deployment del blueprint per eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchine A4X:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4x/gke-a4x-deployment.yaml \ examples/gke-a4x/gke-a4x.yamlQuando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
A4
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
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 memorizzare lo stato del deployment Terraform.
I file che devi modificare per creare un cluster dipendono dall'opzione di consumo che utilizzi per il deployment. Seleziona la scheda corrispondente al modello di provisioning dell'opzione di consumo.
Con prenotazione
Nel progetto base
examples/gke-a4/gke-a4-deployment.yamldel repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici del tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.PROJECT_ID: il tuo ID progetto Google Cloud .DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 delle macchine A4. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili nella prenotazione.STATIC_NODE_COUNT: il numero di nodi A4 nel cluster.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare 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 durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione (
Per modificare le impostazioni avanzate, modifica
examples/gke-a4/gke-a4.yaml.Avvio flessibile
Nel progetto base
examples/gke-a4/gke-a4-deployment.yamldel repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici del tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.PROJECT_ID: il tuo ID progetto Google Cloud .DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 delle macchine A4.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Rimuovi il campo
reservatione sostituiscilo conenable_flex_start: true. Aggiungienable_queued_provisioning: truenella riga successiva se vuoi utilizzare anche il provisioning in coda. Per saperne di più, consulta Utilizzare i pool di nodi con avvio flessibile con provisioning in coda. - Rimuovi
static_node_count.
Nel progetto base
examples/gke-a4/gke-a4.yamldal repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, rimuovistatic_node_count. - Nel blocco
vars, assicurati che il numeroversion_prefixsia"1.32."o superiore. Per utilizzare l'avvio flessibile in GKE, il cluster deve utilizzare la versione 1.32.2-gke.1652000 o successive. - Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conenable_flex_start: truee, facoltativamente,enable_queued_provisioning: true. - Nel blocco
vars, se non è necessario il provisioning in coda, rimuovi la seguente riga:kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")). - In
id: a4-pool, rimuovi la seguente riga:static_node_count: $(vars.static_node_count). Nella sezione
id: a4-pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con le seguenti righe:enable_flex_start: $(vars.enable_flex_start)auto_repair: false- Per il provisioning in coda, se vuoi attivarlo, aggiungi le
seguenti righe aggiuntive:
enable_queued_provisioning: $(vars.enable_queued_provisioning)autoscaling_total_min_nodes: 0
In
id: workload-manager-install, rimuovi il seguente blocco:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(a3-ultragpu-pool.static_gpu_count) accelerator_type: $(vars.accelerator_type)Per l'avvio flessibile con provisioning in coda:
Aggiungi
gpu_nominal_quota: NOMINAL_QUOTAal bloccovars. Il valoregpu_nominal_quotaviene utilizzato per impostare il valorenominalQuotadelle GPU nella specificaClusterQueue(vedi il passaggio di impostazione diClusterQueuedi seguito). In questo esempio,ClusterQueueammette i workload solo se la somma delle richieste di GPU è inferiore o uguale al valoreNOMINAL_QUOTA. Per saperne di più suClusterQueue, consulta il seguente documento di Kueue sulla coda del cluster.Aggiorna il blocco
kueuecome segue:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Sostituisci i contenuti del file
kueue-configuration.yaml.tftplcon i seguenti:apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: "default-flavor" --- apiVersion: kueue.x-k8s.io/v1beta1 kind: AdmissionCheck metadata: name: dws-prov spec: controllerName: kueue.x-k8s.io/provisioning-request parameters: apiGroup: kueue.x-k8s.io kind: ProvisioningRequestConfig name: dws-config --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ProvisioningRequestConfig metadata: name: dws-config spec: provisioningClassName: queued-provisioning.gke.io managedResources: - nvidia.com/gpu --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: "dws-cluster-queue" spec: namespaceSelector: {} resourceGroups: - coveredResources: ["nvidia.com/gpu"] flavors: - name: "default-flavor" resources: - name: "nvidia.com/gpu" nominalQuota: ${num_gpus} admissionChecks: - dws-prov --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: namespace: "default" name: "dws-local-queue" spec: clusterQueue: "dws-cluster-queue" ---
In
id: job-template, sostituisci la variabilenode_countcon2.
- Nel blocco
Spot
Nel progetto base
examples/gke-a4/gke-a4-deployment.yamldel repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici del tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.PROJECT_ID: il tuo ID progetto Google Cloud .DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 delle macchine A4.STATIC_NODE_COUNT: il numero di nodi A4 nel cluster.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Sostituisci l'intero blocco
reservation(inclusa la rigareservation) conspot: true.
Nel progetto base
examples/gke-a4/gke-a4.yamldal repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conspot: true. Nella sezione
id: a4-pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con la seguente riga:spot: $(vars.spot)
- Nel blocco
Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, accedi e configura ADC:
gcloud auth application-default loginEsegui il deployment del blueprint per eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchine A4:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4/gke-a4-deployment.yaml \ examples/gke-a4/gke-a4.yamlQuando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
A3 Ultra
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
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 memorizzare lo stato del deployment Terraform.
I file che devi modificare per creare un cluster dipendono dall'opzione di consumo che utilizzi per il deployment. Seleziona la scheda corrispondente al modello di provisioning dell'opzione di consumo.
Con prenotazione
Nel progetto base
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamldal repository GitHub, sostituisci le seguenti variabili nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET_NAME: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 .COMPUTE_REGION: la regione di computing del cluster.COMPUTE_ZONE: la zona di computing del pool di nodi delle macchine A3 Ultra. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili nella prenotazione.IP_ADDRESS/SUFFIX: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare 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 durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione (
NODE_COUNT: il numero di nodi A3 Ultra nel cluster.
Per modificare le impostazioni avanzate, modifica
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.Avvio flessibile
Nel progetto base
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamldal repository GitHub, sostituisci le seguenti variabili nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET_NAME: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 .COMPUTE_REGION: la regione di computing del cluster.COMPUTE_ZONE: la zona di computing del pool di nodi delle macchine A3 Ultra.IP_ADDRESS/SUFFIX: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Rimuovi il campo
reservatione sostituiscilo conenable_flex_start: true. Aggiungienable_queued_provisioning: truenella riga successiva se vuoi utilizzare anche il provisioning in coda. Per saperne di più, consulta Utilizzare i pool di nodi con avvio flessibile con provisioning in coda. - Rimuovi
static_node_count.
Nel progetto base
examples/gke-a3-ultragpu/gke-a3-ultragpu.yamldel repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, rimuovistatic_node_count. - Nel blocco
vars, aggiorna il numeroversion_prefixa"1.32."o a un valore superiore. Per utilizzare l'avvio flessibile in GKE, il cluster deve utilizzare la versione 1.32.2-gke.1652000 o successive. - Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conenable_flex_start: truee, facoltativamente,enable_queued_provisioning: true. - Nel blocco
vars, rimuovi la seguente riga:kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")). - In
id: a3-ultragpu-pool, rimuovi la seguente riga:static_node_count: $(vars.static_node_count). Nella sezione
id: a3-ultragpu-pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con le seguenti righe:enable_flex_start: $(vars.enable_flex_start)auto_repair: false- Per il provisioning in coda, se vuoi attivarlo, aggiungi le
seguenti righe aggiuntive:
enable_queued_provisioning: $(vars.enable_queued_provisioning)autoscaling_total_min_nodes: 0
In
id: workload-manager-install, rimuovi il seguente blocco:config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(a4-pool.static_gpu_count) accelerator_type: $(vars.accelerator_type)Per l'avvio flessibile con provisioning in coda, segui questi tre passaggi:
Aggiungi
gpu_nominal_quota: NOMINAL_QUOTAal bloccovars. Il valoregpu_nominal_quotaviene utilizzato per impostare ilnominalQuotadelle GPU nella specificaClusterQueue. In questo esempio,ClusterQueueammette carichi di lavoro solo se la somma delle richieste di GPU è inferiore o uguale al valore diNOMINAL_QUOTA. Per saperne di più suClusterQueue, consulta il seguente documento di Kueue sulla coda del cluster.Aggiorna il blocco
kueuecome segue:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Sostituisci i contenuti del file
kueue-configuration.yaml.tftplcon i seguenti:apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: "default-flavor" --- apiVersion: kueue.x-k8s.io/v1beta1 kind: AdmissionCheck metadata: name: dws-prov spec: controllerName: kueue.x-k8s.io/provisioning-request parameters: apiGroup: kueue.x-k8s.io kind: ProvisioningRequestConfig name: dws-config --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ProvisioningRequestConfig metadata: name: dws-config spec: provisioningClassName: queued-provisioning.gke.io managedResources: - nvidia.com/gpu --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: "dws-cluster-queue" spec: namespaceSelector: {} resourceGroups: - coveredResources: ["nvidia.com/gpu"] flavors: - name: "default-flavor" resources: - name: "nvidia.com/gpu" nominalQuota: ${num_gpus} admissionChecks: - dws-prov --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: namespace: "default" name: "dws-local-queue" spec: clusterQueue: "dws-cluster-queue" ---
Nel campo
id: job-template, sostituisci la variabilenode_countcon2.
- Nel blocco
Spot
Nel
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamlblueprint dal repository GitHub, compila le seguenti impostazioni nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET_NAME: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 .COMPUTE_REGION: la regione di computing del cluster.COMPUTE_ZONE: la zona di computing del pool di nodi delle macchine A3 Ultra.IP_ADDRESS/SUFFIX: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Sostituisci l'intero blocco
reservation(inclusa la rigareservation) conspot: true. NODE_COUNT: il numero di nodi A3 Ultra nel cluster.
Nel progetto base
examples/gke-a3-ultragpu/gke-a3-ultragpu.yamldal repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, sostituisci l'intera variabilereservationconspot: true. Nella sezione
id: a3-ultragpu-pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con la seguente riga:spot: $(vars.spot)
- Nel blocco
Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, accedi e configura ADC:
gcloud auth application-default loginEsegui il deployment del blueprint per 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.yamlQuando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
A3 Mega
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
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 memorizzare lo stato del deployment Terraform.
I file che devi modificare per creare un cluster dipendono dall'opzione di consumo che utilizzi per il deployment. Seleziona la scheda corrispondente al modello di provisioning dell'opzione di consumo.
Con prenotazione
Nel progetto base
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamldal repository GitHub, sostituisci le seguenti variabili nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 Mega. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili nella prenotazione.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare 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 durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione (
STATIC_NODE_COUNT: il numero di nodi A3 Mega nel cluster.
Per modificare le impostazioni avanzate, modifica
examples/gke-a3-megagpu/gke-a3-megagpu.yaml.Avvio flessibile
Nel progetto base
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamldal repository GitHub, sostituisci le seguenti variabili nelle sezionivarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 Mega.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Rimuovi il campo
reservatione sostituiscilo conenable_flex_start: true. Se vuoi utilizzare anche il provisioning in coda, aggiungienable_queued_provisioning: truealla riga seguente. Per saperne di più, consulta Utilizzare i pool di nodi con avvio flessibile con provisioning in coda. - Rimuovi
static_node_count.
Nel progetto base
examples/gke-a3-megagpu/gke-a3-megagpu.yamldal repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, rimuovistatic_node_count. - Nel blocco
vars, aggiorna il numeroversion_prefixa"1.32."o a un valore superiore. Per utilizzare l'avvio flessibile in GKE, il cluster deve utilizzare la versione 1.32.2-gke.1652000 o successive. - Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conenable_flex_start: truee, facoltativamente,enable_queued_provisioning: true. - Nel blocco
vars, rimuovi la seguente riga:kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")). - In
id: a3_megagpu_pool, rimuovi la seguente riga:static_node_count: $(vars.static_node_count). Nella sezione
id: a3_megagpu_pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con le seguenti righe:enable_flex_start: $(vars.enable_flex_start)auto_repair: false- Per il provisioning in coda, se vuoi attivarlo, aggiungi le
seguenti righe aggiuntive:
enable_queued_provisioning: $(vars.enable_queued_provisioning)autoscaling_total_min_nodes: 0
In
id: workload_manager_install, rimuovi il seguente blocco:config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(a3_megagpu_pool.static_gpu_count) accelerator_type: $(vars.accelerator_type)Per l'avvio flessibile con provisioning in coda, segui questi tre passaggi:
Aggiungi
gpu_nominal_quota: NOMINAL_QUOTAal bloccovars. Il valoregpu_nominal_quotaviene utilizzato per impostare ilnominalQuotadelle GPU nella specificaClusterQueue. In questo esempio,ClusterQueueammette carichi di lavoro solo se la somma delle richieste di GPU è inferiore o uguale al valore diNOMINAL_QUOTA. Per saperne di più suClusterQueue, consulta il seguente documento di Kueue sulla coda del cluster.Aggiorna il blocco
kueuecome segue:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Sostituisci i contenuti del file
kueue-configuration.yaml.tftplcon i seguenti:apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: "default-flavor" --- apiVersion: kueue.x-k8s.io/v1beta1 kind: AdmissionCheck metadata: name: dws-prov spec: controllerName: kueue.x-k8s.io/provisioning-request parameters: apiGroup: kueue.x-k8s.io kind: ProvisioningRequestConfig name: dws-config --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ProvisioningRequestConfig metadata: name: dws-config spec: provisioningClassName: queued-provisioning.gke.io managedResources: - nvidia.com/gpu --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: "dws-cluster-queue" spec: namespaceSelector: {} resourceGroups: - coveredResources: ["nvidia.com/gpu"] flavors: - name: "default-flavor" resources: - name: "nvidia.com/gpu" nominalQuota: ${num_gpus} admissionChecks: - dws-prov --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: namespace: "default" name: "dws-local-queue" spec: clusterQueue: "dws-cluster-queue" ---
Nel campo
id: job-template, sostituisci il valore della variabilenode_countcon2.
- Nel blocco
Spot
Nel
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamlblueprint dal repository GitHub, aggiorna le seguenti variabili in modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 Mega.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Sostituisci l'intero blocco
reservation(inclusa la rigareservation) conprovisioning_model: SPOT. STATIC_NODE_COUNT: il numero di nodi A3 Mega nel cluster.
Nel progetto base
examples/gke-a3-megagpu/gke-a3-megagpu.yamldel repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conspot: true. Nella sezione
id: a3_megagpu_pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con la seguente riga:spot: $(vars.spot)
- Nel blocco
Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, puoi eseguire il comando seguente:
gcloud auth application-default loginEsegui il deployment del blueprint per eseguire il provisioning dell'infrastruttura GKE utilizzando i tipi di macchine A3 Mega:
cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a3-megagpu/gke-a3-megagpu.yamlQuando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
A3 High
- Avvia Cloud Shell. Puoi utilizzare un ambiente diverso, ma ti consigliamo 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.
Crea un bucket Cloud Storage 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 --versioningSostituisci le seguenti variabili:
BUCKET_NAME: il nome del nuovo bucket Cloud Storage.PROJECT_ID: il tuo ID progetto Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: la regione di calcolo in cui vuoi memorizzare lo stato del deployment Terraform.
I file che devi modificare per creare un cluster dipendono dall'opzione di consumo che utilizzi per il deployment. Seleziona la scheda corrispondente al modello di provisioning dell'opzione di consumo.
Con prenotazione
Nel blueprint
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yamldal repository GitHub, sostituisci le seguenti variabili nelle sezioniterraform_backend_defaultsevarsin modo che corrispondano ai valori specifici per la tua implementazione:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 High. Tieni presente che questa zona deve corrispondere a quella in cui le macchine sono disponibili nella prenotazione.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.STATIC_NODE_COUNT: il numero di nodi A3 High nel cluster.Per il campo
reservation, utilizza uno dei seguenti valori, a seconda che tu voglia scegliere come target blocchi specifici in una prenotazione durante 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 Visualizzare la topologia di una prenotazione.
- Per posizionare il pool di nodi in un punto qualsiasi della prenotazione, fornisci il
nome della prenotazione (
Per modificare le impostazioni avanzate, modifica
examples/gke-a3-highgpu/gke-a3-highgpu.yaml.Avvio flessibile
Nel file
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yamldel repository GitHub, sostituisci le seguenti variabili nelle sezionivarsin modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 High.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Rimuovi il campo
reservatione sostituiscilo conenable_flex_start: true. Se vuoi utilizzare anche il provisioning in coda, aggiungienable_queued_provisioning: truealla riga seguente. Per saperne di più, consulta Utilizzare i pool di nodi con avvio flessibile con provisioning in coda. - Rimuovi
static_node_count.
Nel progetto base
examples/gke-a3-highgpu/gke-a3-highgpu.yamldal repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, rimuovistatic_node_count. - Nel blocco
vars, aggiorna il numeroversion_prefixa"1.32."o a un valore superiore. Per utilizzare l'avvio flessibile in GKE, il cluster deve utilizzare la versione 1.32.2-gke.1652000 o successive. - Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conenable_flex_start: truee, facoltativamente,enable_queued_provisioning: true. - Nel blocco
vars, rimuovi la seguente riga:kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")). - In
id: a3_highgpu_pool, rimuovi la seguente riga:static_node_count: $(vars.static_node_count). Nella sezione
id: a3_highgpu_pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con le seguenti righe:enable_flex_start: $(vars.enable_flex_start)auto_repair: false- Per il provisioning in coda, se vuoi attivarlo, aggiungi le
seguenti righe aggiuntive:
enable_queued_provisioning: $(vars.enable_queued_provisioning)autoscaling_total_min_nodes: 0
In
id: workload_component_install, rimuovi il seguente blocco:config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(a3_highgpu_pool.static_gpu_count) accelerator_type: $(vars.accelerator_type)Per l'avvio flessibile con provisioning in coda, segui questi tre passaggi:
Aggiungi
gpu_nominal_quota: NOMINAL_QUOTAal bloccovars. Il valoregpu_nominal_quotaviene utilizzato per impostare ilnominalQuotadelle GPU nella specificaClusterQueue. In questo esempio,ClusterQueueammette carichi di lavoro solo se la somma delle richieste di GPU è inferiore o uguale al valore diNOMINAL_QUOTA. Per saperne di più suClusterQueue, consulta il seguente documento di Kueue sulla coda del cluster.Aggiorna il blocco
kueuecome segue:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Sostituisci i contenuti del file
kueue-configuration.yaml.tftplcon i seguenti:apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: "default-flavor" --- apiVersion: kueue.x-k8s.io/v1beta1 kind: AdmissionCheck metadata: name: dws-prov spec: controllerName: kueue.x-k8s.io/provisioning-request parameters: apiGroup: kueue.x-k8s.io kind: ProvisioningRequestConfig name: dws-config --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ProvisioningRequestConfig metadata: name: dws-config spec: provisioningClassName: queued-provisioning.gke.io managedResources: - nvidia.com/gpu --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: "dws-cluster-queue" spec: namespaceSelector: {} resourceGroups: - coveredResources: ["nvidia.com/gpu"] flavors: - name: "default-flavor" resources: - name: "nvidia.com/gpu" nominalQuota: ${num_gpus} admissionChecks: - dws-prov --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: namespace: "default" name: "dws-local-queue" spec: clusterQueue: "dws-cluster-queue" ---
Nel campo
id: job-template, sostituisci il valore della variabilenode_countcon2.
- Nel blocco
Spot
Nel blueprint
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yamldal repository GitHub, aggiorna le seguenti variabili in modo che corrispondano ai valori specifici per il tuo deployment:BUCKET: il nome del bucket Cloud Storage creato nel passaggio precedente.DEPLOYMENT_NAME: un nome univoco per il deployment, che deve essere compreso 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 per il pool di nodi delle macchine A3 High.AUTHORIZED_CIDR: l'intervallo di indirizzi IP a cui vuoi consentire di connettersi al cluster. Questo blocco CIDR deve includere l'indirizzo IP della macchina che vuoi utilizzare per chiamare Terraform. Per saperne di più, consulta Come funzionano le reti autorizzate.- Sostituisci la riga
reservation:conprovisioning_model: SPOT. STATIC_NODE_COUNT: il numero di nodi A3 High nel cluster.
Nel progetto base
examples/gke-a3-highgpu/gke-a3-highgpu.yamldel repository GitHub, apporta le seguenti modifiche:- Nel blocco
vars, sostituisci l'intero bloccoreservation(inclusa la rigareservation) conspot: true. Nella sezione
id: a3_highgpu_pool, rimuovi il bloccoreservation_affinity. Sostituisci questo blocco con la seguente riga:spot: $(vars.spot)
- Nel blocco
Genera le credenziali predefinite dell'applicazione (ADC) per fornire l'accesso a Terraform. Se utilizzi Cloud Shell, puoi eseguire il comando seguente:
gcloud auth application-default loginEsegui il deployment del blueprint per eseguire 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.yamlQuando richiesto, seleziona Applica per eseguire il deployment del blueprint.
- Il blueprint crea reti VPC, una rete VPC GPU RDMA, service account, un cluster e un pool di nodi.
- Per supportare il modello di job
fio-bench-job-templatenel blueprint, vengono create risorse di bucketGoogle Cloud , spazio di archiviazione di rete e volumi permanenti.
Testare le prestazioni di rete
Ti consigliamo di convalidare la funzionalità dei cluster di cui è stato eseguito il provisioning. Per farlo, utilizza i test NCCL, ovvero i test NVIDIA Collective Communications Library (NCCL) ottimizzati per l'ambiente Google.
Eseguire benchmark riproducibili
Dopo aver creato un cluster utilizzando Cluster Toolkit, puoi riprodurre i benchmark di pre-addestramento per i modelli open source di machine learning di grandi dimensioni sulla serie di macchine che hai scelto seguendo le ricette fornite in GitHub.
Ogni ricetta fornisce le istruzioni per completare le seguenti attività:
- Prepara l'ambiente.
- Esegui il benchmark.
- Analizza i risultati dei benchmark. Sono inclusi i risultati del benchmark e log dettagliati per ulteriori analisi.
Per visualizzare tutte le ricette disponibili per l'addestramento e altri tipi di workload, consulta il repository GitHub GPU recipes.
Liberare spazio dalle risorse create da Cluster Toolkit
Per evitare addebiti ricorrenti per le risorse utilizzate in questa pagina, utilizza il
comando gcluster destroy
per liberare spazio dalle risorse di cui è stato eseguito il provisioning da Cluster Toolkit, incluse 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 su DEPLOYMENT_NAME.
Passaggi successivi
- Per scoprire di più sulla pianificazione dei workload sui cluster GKE utilizzando TAS e Kueue, consulta Pianificare i workload GKE con Topology Aware Scheduling.
- Per scoprire di più sulla gestione degli eventi comuni pertinenti ai cluster GKE e ai carichi di lavoro AI, consulta Gestire i cluster GKE ottimizzati per l'AI.
- Per informazioni su come testare l'ambiente per una configurazione e un'ottimizzazione corrette, consulta Panoramica dell'ottimizzazione del networking del cluster