Esegui GPU in pool di nodi GKE Standard


Questa pagina mostra come eseguire e ottimizzare i carichi di lavoro ad alta intensità di calcolo, come l'intelligenza artificiale (AI) e l'elaborazione grafica, collegando e utilizzando gli acceleratori hardware GPU NVIDIA® nei cluster Google Kubernetes Engine (GKE) Standard nodi.

Se invece usi i pod Autopilot, fai riferimento Esegui il deployment dei carichi di lavoro GPU in Autopilot.

Panoramica

Con GKE, puoi creare pool di nodi dotati di GPU. Le GPU forniscono potenza di calcolo per attività di deep learning come l'elaborazione del linguaggio naturale e altre applicazioni ad alta intensità come la transcodifica video e l'elaborazione delle immagini. In modalità GKE Standard, puoi collegare l'hardware GPU ai nodi nei tuoi cluster e poi allocare le risorse GPU dei carichi di lavoro containerizzati in esecuzione sui nodi.

Per saperne di più sui casi d'uso per le GPU, consulta alla pagina GPU. Per saperne di più sulle GPU in GKE e sulle differenze tra la modalità Standard e la modalità Autopilot, Informazioni sulle GPU in GKE.

Puoi anche utilizzare le GPU con VM spot se i tuoi carichi di lavoro sono tollerati e frequenti interruzioni dei nodi. L'utilizzo delle VM spot riduce il prezzo dell'esecuzione per uso generico di CPU e GPU. Per saperne di più, consulta Utilizzare le VM spot con i pool di nodi GPU.

A partire dalla versione 1.29.2-gke.1108000, puoi creare pool di nodi GPU in GKE Sandbox. Per ulteriori informazioni, consulta GKE Sandbox e la configurazione di GKE Sandbox.

Prima di iniziare

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

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine .
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi initialize con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Requisiti per le GPU su GKE

Le GPU su GKE hanno i seguenti requisiti:

  • Versione di Kubernetes: le versioni disponibili dipendono dall'immagine del nodo utilizzata dalle GPU:

  • Quota GPU: devi avere una quota GPU di Compute Engine nell'intervallo selezionato prima di poter creare nodi GPU. Per assicurarti di avere una quota GPU sufficiente nel tuo progetto, consulta Quote nella console Google Cloud.

    Se hai bisogno di una quota GPU aggiuntiva, devi richiedere una quota GPU nella console Google Cloud. Se disponi di un account di fatturazione già creato, il progetto riceve automaticamente la quota dopo che hai inviato la richiesta di quota.

  • Driver GPU NVIDIA: durante la creazione un cluster o un pool di nodi, puoi indicare a GKE di eseguire installare una versione del driver basata sulla tua versione di GKE. Se non indichi a GKE di installare automaticamente i driver GPU, è necessario installare manualmente i driver.

  • GPU A100: le GPU A100 sono supportate solo su tipi di macchine A2. Tu devi assicurarti di disporre di una quota sufficiente per consentire al tipo di macchina A2 sottostante la GPU A100.

  • GPU sui nodi Ubuntu: se utilizzi GPU con nodi Ubuntu, quanto segue: si applicano i requisiti dei conducenti. Ti consigliamo di utilizzare Container-Optimized OS per Nodi GPU perché includiamo i driver richiesti per una specifica GPU nella minima richiesta per quella GPU.

    • GPU L4 e GPU H100: driver NVIDIA 535 o versioni successive.

    Se una versione del driver richiesta o successiva non è quella predefinita in Versione GKE, devi installare manualmente un componente driver supportato sui tuoi nodi.

Limitazioni all'utilizzo delle GPU su GKE

Prima di utilizzare GPU su GKE, tieni presente quanto segue limitazioni:

  • Non puoi aggiungere GPU a pool di nodi esistenti.
  • Non è possibile eseguire la migrazione live dei nodi GPU durante gli eventi di manutenzione.
  • Il tipo di GPU che puoi utilizzare dipende dalla serie di macchine, come segue:

    Devi assicurarti di disporre di una quota sufficiente nel tuo progetto per la macchina corrispondente al tipo e alla quantità di GPU selezionate.

  • Le GPU non sono supportate nei pool di nodi Windows Server.

  • Versione che esegue i cluster GKE Standard 1.28.2-gke.1098000 o versioni precedenti non supportano node provisioning automatico creando pool di nodi con GPU L4. Tuttavia, i cluster che eseguono versioni precedenti supporta il cluster scalabilità automatica del gestore della scalabilità automatica nei pool di nodi esistenti.

  • Se utilizzi GPU H100 e vuoi usare un SSD locale nei tuoi pod, devi: specificare esplicitamente il numero esatto di SSD locali da collegare alla VM A3 sottostante. Specifica il numero utilizzando il metodo --ephemeral-storage-local-ssd=count=SSD_COUNT flag per l'archiviazione temporanea --local-nvme-ssd-block=count=SSD_COUNT flag per bloccare l'accesso. Se non aggiungi uno di questi flag, non potrai utilizzare gli SSD locali nei tuoi pod.

    La dimensione della macchina supportata in GKE è a3-highgpu-8g e il valore il conteggio dei dischi SSD locali corrispondente è 16.

Disponibilità di GPU per regioni e zone

Le GPU sono disponibili in regioni e zone specifiche. Quando richiedi Quota GPU, considera le regioni in cui intendi eseguire cluster.

Per un elenco completo delle regioni e delle zone applicabili, consulta GPU su Compute Engine.

Puoi anche visualizzare le GPU disponibili nella tua zona utilizzando Google Cloud CLI. Per visualizzare un un elenco di tutti i tipi di acceleratori GPU supportati in ciascuna zona, esegui questo comando :

gcloud compute accelerator-types list

Prezzi

Per informazioni sui prezzi delle GPU, consulta la tabella dei prezzi nella pagina delle GPU di Google Cloud.

Assicurati che sia disponibile una quota GPU sufficiente

La quota GPU è il numero totale di GPU che possono essere eseguite nel tuo progetto Google Cloud. Per creare cluster con GPU, il progetto deve avere una quota GPU sufficiente.

La tua quota di GPU deve essere almeno equivalente al numero totale di GPU eseguire nel tuo cluster. Se abiliti la scalabilità automatica del cluster, deve richiedere una quota GPU almeno equivalente al numero di GPU per nodo moltiplicato per il numero massimo di GPU per nodi.

Ad esempio, se crei un cluster con tre nodi che esegue due GPU per nodo, il tuo progetto richiede almeno sei quote GPU.

Richiesta di quota GPU in corso...

Per richiedere la quota GPU, utilizza la console Google Cloud. Per ulteriori informazioni per le richieste di quote. Fai riferimento alle quote delle GPU documentazione di Compute Engine.

Per cercare la quota GPU e inviare una richiesta di quota, utilizza la console Google Cloud:

  1. Vai alla sezione IAM & pagina Quote per gli amministratori nella console Google Cloud.

    Vai a Quote

  2. Nella casella Filtro, procedi nel seguente modo:

    1. Seleziona la proprietà Quota, inserisci il nome del modello GPU e premi Invio.
    2. (Facoltativo) Per applicare filtri più avanzati per restringere i risultati, seleziona la proprietà Dimensioni (ad es. località), aggiungi il nome della regione o zona in uso e premi Invio.
  3. Dall'elenco delle quote di GPU, seleziona quella che vuoi modificare.

  4. Fai clic su Modifica quote. Si apre un modulo di richiesta.

  5. Compila il campo Nuovo limite quota per ogni richiesta di quota.

  6. Compila il campo Descrizione della richiesta con i dettagli della richiesta.

  7. Fai clic su Avanti.

  8. Nella finestra di dialogo Conferma override, fai clic su Conferma.

  9. Nella schermata Informazioni di contatto, inserisci il tuo nome e un numero di telefono che gli approvatori potrebbero utilizzare per completare la richiesta di modifica della quota.

  10. Fai clic su Invia richiesta.

  11. Riceverai un'email di conferma per monitorare la modifica della quota.

Esecuzione di GPU in cluster GKE Standard

Per eseguire GPU nei cluster GKE Standard, crea un nodo con GPU collegate.

Per una migliore efficienza in termini di costi, affidabilità e disponibilità delle GPU su GKE, consigliamo queste azioni:

  • Crea pool di nodi GPU separati. Per ogni pool di nodi, limita la località del nodo a le zone in cui sono disponibili le GPU desiderate.
  • Abilita la scalabilità automatica in ogni pool di nodi.
  • Usa cluster a livello di regione per migliorare la disponibilità replicando il cluster Kubernetes attraverso varie zone della regione.
  • Indica a GKE di installare automaticamente la versione predefinita o la più recente Driver GPU sui pool di nodi, così non dovrai installarli manualmente e gestire le versioni dei driver.

Come descritto nelle sezioni seguenti, GKE utilizza le incompatibilità e le tolleranze dei nodi per assicura che i pod non siano pianificati su nodi inappropriati.

Incompatibilità automatica di un pool di nodi GPU per evitare di pianificarlo in modo inappropriato

Un'incompatibilità del nodo consente di contrassegnare un nodo in modo che lo scheduler evita o prevenga per alcuni pod. Quando aggiungi un pool di nodi GPU a un cluster esistente che esegue già un pool di nodi non GPU, GKE esegue incompatibilità con i nodi GPU con la seguente incompatibilità:

  • Chiave: nvidia.com/gpu
  • Effetto:NoSchedule

Limitazione automatica della programmazione con una tolleranza

Le tolleranze consentono di designare i pod che possono essere utilizzati su "incompatibilità" nodi. GKE applica automaticamente una tolleranza, quindi solo i pod che richiedono GPU sono pianificate sui nodi GPU. Questo consente una scalabilità automatica più efficiente poiché i nodi GPU possono fare rapidamente lo scale down se non ci sono abbastanza pod che richiedono GPU. Per fare questo, GKE esegue Controller di ammissione ExtendedResourceToleration.

Crea un pool di nodi GPU

Per creare un pool di nodi GPU separato in un cluster esistente, puoi utilizzare il metodo console Google Cloud o Google Cloud CLI. Puoi anche usare Terraform il provisioning dei cluster GKE e del pool di nodi GPU.

Puoi indicare a GKE di installare automaticamente l'app predefinita o più recente Versione del driver NVIDIA che corrisponde alla versione GKE su ogni nodo.

gcloud

Per creare un pool di nodi con GPU in un cluster, esegui questo comando:

gcloud container node-pools create POOL_NAME \
  --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
  [--machine-type MACHINE_TYPE] \
  --region COMPUTE_REGION --cluster CLUSTER_NAME \
  --node-locations COMPUTE_ZONE1[,COMPUTE_ZONE2] \
  [--enable-autoscaling \
   --min-nodes MIN_NODES \
   --max-nodes MAX_NODES] \
  [--ephemeral-storage-local-ssd=count=SSD_COUNT]

Sostituisci quanto segue:

  • POOL_NAME: il nome che scegli per il pool di nodi.
  • GPU_TYPE: il tipo di acceleratore GPU che utilizzi. Ad esempio: nvidia-tesla-t4.
  • DRIVER_VERSION: la versione del driver NVIDIA per installare l'app. Può corrispondere a uno dei seguenti:

    • default: installa la versione del driver predefinita per il tuo nodo Versione GKE.
    • latest: installa l'ultima versione del driver disponibile per GKE completamente gestita. Disponibile solo per i nodi che utilizzano Container-Optimized OS.
    • disabled: salta l'installazione automatica del driver. Devi installare manualmente un driver dopo la creazione del pool di nodi. Se ometti gpu-driver-version, GKE non installa automaticamente un driver.
  • AMOUNT: il numero di GPU da collegare ai nodi in del pool di nodi.

  • MACHINE_TYPE: il tipo di macchina di Compute Engine per i nodi. Obbligatorio per i seguenti tipi di GPU:

    Per tutte le altre GPU, questo flag è facoltativo.

  • COMPUTE_REGION: il valore di Compute Engine del cluster regione, ad esempio us-central1. Scegli una regione con almeno una zona dove sono disponibili le GPU richieste.

  • CLUSTER_NAME: il nome del cluster in cui per creare il pool di nodi.

  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: il valore zone specifiche in cui GKE crea i nodi GPU. La devono trovarsi nella stessa regione del cluster, specificata --region flag. I tipi di GPU che definisci devono essere available in ogni zona selezionata. Ti consigliamo di Usa sempre il flag --node-locations durante la creazione del pool di nodi per e specificare la zona o le zone contenenti le GPU richieste.

  • MIN_NODES: il numero minimo di nodi per ogni nel pool di nodi in qualsiasi momento. Questo valore è rilevante solo se È in uso il flag --enable-autoscaling.

  • MAX_NODES: il numero massimo di nodi per ciascuno nel pool di nodi in qualsiasi momento. Questo valore è rilevante solo se È in uso il flag --enable-autoscaling.

  • SSD_COUNT: il numero di SSD locali da collegare archiviazione temporanea. Questo flag è necessario per usare gli SSD locali nella macchina A3 con GPU H100.

Ad esempio, il comando seguente crea un nodo con scalabilità automatica a disponibilità elevata pool, p100, con due GPU P100 per ogni nodo, nel cluster a livello di regione p100-cluster. GKE installa automaticamente i driver predefiniti su questi nodi.

gcloud container node-pools create p100 \
  --accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=default \
  --region us-central1 --cluster p100-cluster \
  --node-locations us-central1-c \
  --min-nodes 0 --max-nodes 5 --enable-autoscaling

Console

Per creare un pool di nodi con GPU:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Facoltativamente, nella pagina Dettagli del pool di nodi, seleziona la casella di controllo Abilita scalabilità automatica.

  5. Configura il pool di nodi come preferisci.

  6. Dal riquadro di navigazione, seleziona Nodi.

  7. In Configurazione macchina, fai clic su GPU.

  8. Seleziona un tipo di GPU e un numero di GPU da eseguire su ciascun nodo.

  9. Leggi l'avviso e seleziona Ho compreso le limitazioni.

  10. Nella sezione Installazione del driver GPU, seleziona una delle seguenti opzioni metodo:

    • Gestito da Google: GKE installa automaticamente un driver. Se selezioni questa opzione, scegli una delle seguenti opzioni dal Menu a discesa Versione:
        .
      • Predefinito: installa la versione del driver predefinita.
      • Più recente: installa la versione del driver più recente disponibile.
    • Gestita dall'utente: GKE non installa un driver. Tu è necessario installare manualmente un driver compatibile seguendo le istruzioni in Installazione dei driver di dispositivo GPU NVIDIA.
  11. Fai clic su Crea.

Terraform

Puoi creare un cluster a livello di regione con Terraform con GPU utilizzando una Modulo Terraform.

  1. Imposta le variabili Terraform includendo il seguente blocco nel file variables.tf:

    variable "project_id" {
      default     = PROJECT_ID
      description = "the gcp_name_short project where GKE creates the cluster"
    }
    
    variable "region" {
      default     = CLUSTER_REGION
      description = "the gcp_name_short region where GKE creates the cluster"
    }
    
    variable "zone" {
      default     = "COMPUTE_ZONE1,COMPUTE_ZONE2"
      description = "the GPU nodes zone"
    }
    
    variable "cluster_name" {
      default     = "CLUSTER_NAME"
      description = "the name of the cluster"
    }
    
    variable "gpu_type" {
      default     = "GPU_TYPE"
      description = "the GPU accelerator type"
    }
    
    variable "gpu_driver_version" {
      default = "DRIVER_VERSION"
      description = "the NVIDIA driver version to install"
    }
    
    variable "machine_type" {
      default = "MACHINE_TYPE"
      description = "The Compute Engine machine type for the VM"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • CLUSTER_NAME: il nome del cluster GKE in un cluster Kubernetes.
    • CLUSTER_REGION: il valore regione di computing per il cluster.
    • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: le zone specifiche in cui GKE crea i nodi GPU. Le zone devono trovarsi nella stessa regione specificata dalla variabile region. In queste zone devono essere disponibili i tipi di GPU definiti. Per sapere quali le zone hanno GPU; consulta la sezione Disponibilità. Dovresti usare lo node_locations durante la creazione del pool di nodi GPU per specificare la variabile la zona o le zone contenenti le GPU richieste.
    • GPU_TYPE: il tipo di acceleratore GPU che utilizzi. Ad esempio: nvidia-tesla-t4.
    • DRIVER_VERSION: la versione del driver GPU per di GKE per l'installazione automatica. Questo campo è facoltativo. Sono supportati i seguenti valori:

      • INSTALLATION_DISABLED: disattiva l'installazione automatica del driver GPU. Per eseguire le GPU, devi installare manualmente i driver.
      • DEFAULT: installa automaticamente la versione del driver predefinita per la versione del sistema operativo del nodo.
      • LATEST: installa automaticamente l'ultima versione del driver disponibile per la versione del sistema operativo del nodo.

    Se ometti questo campo, GKE non installa automaticamente un conducente. Questo campo non è supportato nei pool di nodi che utilizzano nodi e provisioning automatico. Per installare manualmente un driver, vedi Installa manualmente i driver GPU NVIDIA in questo documento. * MACHINE_TYPE: il tipo di macchina di Compute Engine per i nodi. Obbligatorio per i seguenti tipi di GPU:

    Per tutte le altre GPU, questo flag è facoltativo.

  2. Aggiungi il blocco seguente alla tua configurazione Terraform:

    provider "google" {
      project = var.project_id
      region  = var.region
    }
    
    resource "google_container_cluster" "ml_cluster" {
      name     = var.cluster_name
      location = var.region
      node_locations = [var.zone]
    }
    
    resource "google_container_node_pool" "gpu_pool" {
      name       = google_container_cluster.ml_cluster.name
      location   = var.region
      cluster    = google_container_cluster.ml_cluster.name
      node_count = 3
    
      autoscaling {
        total_min_node_count = "1"
        total_max_node_count = "5"
      }
    
      management {
        auto_repair  = "true"
        auto_upgrade = "true"
      }
    
      node_config {
        oauth_scopes = [
          "https://www.googleapis.com/auth/logging.write",
          "https://www.googleapis.com/auth/monitoring",
          "https://www.googleapis.com/auth/devstorage.read_only",
          "https://www.googleapis.com/auth/trace.append",
          "https://www.googleapis.com/auth/service.management.readonly",
          "https://www.googleapis.com/auth/servicecontrol",
        ]
    
        labels = {
          env = var.project_id
        }
    
        guest_accelerator {
          type  = var.gpu_type
          count = 1
          gpu_driver_installation_config {
            gpu_driver_version = var.gpu_driver_version
          }
        }
    
        image_type   = "cos_containerd"
        machine_type = var.machine_type
        tags         = ["gke-node", "${var.project_id}-gke"]
    
        disk_size_gb = "30"
        disk_type    = "pd-standard"
    
        metadata = {
          disable-legacy-endpoints = "true"
        }
      }
    }
    

Terraform chiama le API Google Cloud per impostare la creazione di un nuovo cluster con pool di nodi che utilizza le GPU. Il pool di nodi ha inizialmente tre nodi e la scalabilità automatica è abilitata. Per saperne di più su Terraform, consulta Specifiche della risorsa google_container_node_pool su terraform.io.

Puoi anche creare un nuovo cluster con GPU e specificare le zone utilizzando il metodo --node-locations flag. Tuttavia, ti consigliamo di creare un pool di nodi GPU separato in un di un cluster esistente, come mostrato in questa sezione.

Installa manualmente i driver GPU NVIDIA

Puoi installare manualmente i driver GPU NVIDIA sui tuoi nodi eseguendo il deployment di di installazione DaemonSet sui nodi. Utilizza l'installazione manuale nel seguente situazioni seguenti:

  • Hai scelto di disattivare l'installazione automatica del driver del dispositivo al momento della creazione in un pool di nodi GPU.
  • Utilizza una versione di GKE precedente a quella minima supportata per l'installazione automatica.
  • Il carico di lavoro richiede una versione del driver NVIDIA specifica non disponibile come driver predefinito o come driver più recente con installazione automatica.

Ti consigliamo di utilizzare l'installazione automatica dei driver, se possibile, specificando l'opzione gpu-driver-version nel flag --accelerator quando per creare un cluster Standard. Se hai utilizzato il set di dati DaemonSet di installazione per installare manualmente i driver GPU entro il 25 gennaio 2023, puoi applicare nuovamente il DaemonSet per ottenere una versione che ignora i nodi che utilizzano l'installazione automatica dei driver.

Per eseguire il DaemonSet di installazione, il pool di nodi GPU richiede l'elemento https://www.googleapis.com/auth/devstorage.read_only nell'ambito di comunicazione con Cloud Storage. Senza questo ambito, il download del manifest DaemonSet di installazione non riesce. Questo ambito è uno degli ambiti predefiniti, che in genere viene aggiunto quando crei il cluster.

Le seguenti istruzioni mostrano come installare i driver su Container-Optimized OS (COS) e nodi Ubuntu e utilizzo di Terraform.

COS

Per eseguire il deployment di DaemonSet installa la versione del driver GPU predefinita, esegui questo comando:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml

In alternativa, per installare la versione più recente del driver GPU (vedi tabella di seguito), esegui questo comando:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded-latest.yaml

Il completamento dell'installazione richiede diversi secondi. Dopo l'installazione, Il plug-in per dispositivi GPU NVIDIA utilizza l'API Kubernetes per creare la GPU NVIDIA di archiviazione disponibile.

Ogni versione dell'immagine di Container-Optimized OS ne ha almeno una supportata Versione driver GPU NVIDIA. Consulta le note di rilascio dei principali obiettivi LTS di Container-Optimized OS per il valore predefinito supportato completamente gestita.

Nella tabella seguente sono elencate le versioni dei driver disponibili in ciascuno Versione GKE:

Versioni del driver NVIDIA GKE
1,30 R535 (predefinito) o R550
1,29 R535 (predefinito) o R550
1,28 R535 (predefinito) o R550
1,27 R470 (predefinito), R525, R535 o R550
1,26 R470 (predefinito), R525, R535 o R550

Ubuntu

Il DaemonSet di installazione di cui esegui il deployment dipende dal tipo di GPU e da la versione del nodo GKE come segue:

  • Per tutte le GPU tranne le GPU NVIDIA L4 e NVIDIA H100, esegui seguente comando:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml
    
  • Per le GPU NVIDIA L4 o H100 che eseguono versioni dei nodi dal Release 2024-R05 o una versione successiva, installa il driver R535:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml
    
  • Per GPU NVIDIA L4 o H100 che eseguono versioni dei nodi dalle release prima del Release 2024-R05 o una versione successiva, installa il driver R525:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R525.yaml
    

Il completamento dell'installazione richiede diversi secondi. Dopo l'installazione, Il plug-in per dispositivi GPU NVIDIA utilizza l'API Kubernetes per creare la GPU NVIDIA di archiviazione disponibile.

Nella tabella seguente sono elencate le versioni dei driver disponibili in ciascuno Versione GKE:

Driver GPU Ubuntu e versioni GKE
1,30 R470 o R535
1,29 R470 o R535
1,28 R470 o R535
1,27 R470 o R535
1,26 R470 o R535

Terraform

Puoi utilizzare Terraform per installare la versione predefinita del driver GPU in base e il tipo di nodi. In entrambi i casi, devi configurare il kubectl_manifest Tipo di risorsa Terraform.

  • Per installare DaemonSet su COS, aggiungi seguente blocco nella configurazione Terraform:

      data "http" "nvidia_driver_installer_manifest" {
        url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml"
      }
    
      resource "kubectl_manifest" "nvidia_driver_installer" {
        yaml_body = data.http.nvidia_driver_installer_manifest.body
      }
    
  • Per installare DaemonSet su Ubuntu, aggiungi il seguente blocco nella configurazione Terraform:

      data "http" "nvidia_driver_installer_manifest" {
        url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml"
      }
    
      resource "kubectl_manifest" "nvidia_driver_installer" {
        yaml_body = data.http.nvidia_driver_installer_manifest.body
      }
    

Installazione dei driver utilizzando il provisioning automatico dei nodi con GPU

Quando utilizzi il provisioning automatico dei nodi con le GPU, per impostazione predefinita viene eseguito I pool di nodi non dispongono di ambiti sufficienti per installare i driver. A concedere gli ambiti richiesti, modificare gli ambiti predefiniti per il provisioning automatico dei nodi per aggiungere logging.write, monitoring, devstorage.read_only e compute, come nell'esempio che segue.

gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \
    --min-cpu=1 --max-cpu=10 --min-memory=1 --max-memory=32 \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute

In GKE versione 1.29.2-gke.1108000 e in seguito, puoi selezionare una versione del driver GPU per GKE installabili nei nodi GPU di cui è stato eseguito il provisioning automatico. Aggiungi il seguente campo al file manifest:

spec:
  nodeSelector:
    cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"

Sostituisci DRIVER_VERSION con uno dei seguenti valori:

  • default: il driver stabile predefinito per il tuo nodo GKE completamente gestita. Se ometti il nodeSelector nel manifest, questa è l'opzione predefinita.
  • latest: l'ultima versione del driver disponibile per il tuo nodo Versione GKE.

Per saperne di più sul provisioning automatico, consulta Utilizzo del provisioning automatico dei nodi.

Configurazione dei pod per il consumo di GPU

Puoi utilizzare un limite di risorse per configurare i pod da utilizzare per uso generico di CPU e GPU. Devi specificare un limite di risorse in una specifica di pod utilizzando la seguente coppia chiave-valore

  • Chiave: nvidia.com/gpu
  • Valore:numero di GPU da utilizzare

Il seguente manifest è un esempio di specifica di un pod che utilizza GPU:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
       nvidia.com/gpu: 2

Utilizzo di più tipi di GPU

Se vuoi utilizzare più tipi di acceleratori GPU per cluster, devi creare più pool di nodi, ciascuno con il proprio tipo di acceleratore. GKE collega un selettore di nodi univoco alla GPU nodi per posizionare i carichi di lavoro GPU su nodi con tipi di GPU specifici:

  • Chiave: cloud.google.com/gke-accelerator
  • Valore: il tipo di acceleratore GPU che utilizzi. Ad esempio: nvidia-tesla-t4.

Puoi scegliere come target determinati tipi di GPU aggiungendo questo selettore di nodi al tuo la specifica dei pod dei carichi di lavoro. Ad esempio:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
       nvidia.com/gpu: 2
  nodeSelector:
    cloud.google.com/gke-accelerator: nvidia-tesla-t4

Esegui l'upgrade dei pool di nodi utilizzando acceleratori (GPU e TPU)

GKE upgrade automatico Cluster standard, inclusi i pool di nodi. Puoi anche manualmente esegui l'upgrade del nodo se vuoi che i tuoi nodi usino una versione successiva prima. Per controllare in che modo gli upgrade per il tuo cluster, utilizza canali, manutenzione Windows e esclusioni, e l'implementazione sequenza.

Puoi anche configurare un upgrade dei nodi per del pool di nodi, come surge upgrade o blu-verde upgrade. Configurando queste strategie, puoi assicurarti che venga eseguito l'upgrade dei pool di nodi in modo da raggiungere l'equilibrio ottimale tra velocità e interruzione completamente gestito di Google Cloud. Per nodo della sezione TPU multi-host pool, invece di utilizzare di upgrade del nodo configurato, GKE ricrea a livello atomico l'intero pool di nodi in un solo passaggio. Per saperne di più, consulta la definizione di atomicità in Terminologia relativa alla TPU in con GKE.

L'utilizzo di una strategia di upgrade dei nodi richiede temporaneamente GKE a seconda della configurazione. Se Google Cloud ha una capacità limitata per le risorse del tuo pool di nodi, ad esempio, stai riscontrando disponibilità delle risorse durante il tentativo di creare più nodi con GPU o TPU. Consulta Eseguire l'upgrade in un con risorse limitate dell'ambiente di rete.

Informazioni sulle librerie NVIDIA CUDA-X

CUDA è la piattaforma di computing parallelo e il modello di programmazione per GPU NVIDIA. A utilizzare le applicazioni CUDA, l'immagine che utilizzi deve contenere le librerie. Per aggiungere le librerie NVIDIA CUDA-X, puoi creare e utilizzare una tua immagine includendo i seguenti valori nella variabile di ambiente LD_LIBRARY_PATH nella specifica del container:

  • /usr/local/cuda-CUDA_VERSION/lib64: il valore posizione delle librerie NVIDIA CUDA-X sul nodo.

    Sostituisci CUDA_VERSION con la versione dell'immagine CUDA-X che che hai utilizzato. Alcune versioni contengono anche utilità di debug /usr/local/nvidia/bin. Per maggiori dettagli, vedi l'immagine NVIDIA CUDA su DockerHub.

    Per controllare la versione minima del driver GPU richiesta per la tua versione di CUDA: vedi CUDA Toolkit e versioni di driver compatibili.

  • /usr/local/nvidia/lib64: la posizione del Driver di dispositivi NVIDIA.
Assicurati che la versione della patch GKE in esecuzione sui nodi include una versione del driver GPU compatibile con lo strumento CUDA scelto completamente gestita. Per un elenco delle versioni dei driver GPU associate a GKE fai riferimento alla pagina Container-Optimized OS corrispondente collegata nel Tabella delle versioni attuali di GKE.

Monitora le prestazioni del carico di lavoro del nodo GPU

Se il tuo cluster GKE metriche di sistema attivata, le seguenti metriche sono disponibili in Cloud Monitoring per monitorare le prestazioni dei carichi di lavoro GPU:

  • Ciclo di lavoro (container/accelerator/duty_cycle): Percentuale di tempo nell'ultimo periodo campione (10 secondi) durante il quale dell'acceleratore stava elaborando attivamente. Tra 1 e 100.
  • Memoria utilizzata (container/accelerator/memory_used): Quantità di memoria dell'acceleratore allocata in byte.
  • Capacità memoria (container/accelerator/memory_total): Memoria dell'acceleratore totale in byte.

Puoi usare dashboard predefinite per monitorare i cluster con nodi GPU. Per ulteriori informazioni, vedi Visualizza le metriche di osservabilità. Per informazioni generali sul monitoraggio per i tuoi cluster e le relative risorse, Osservabilità per GKE.

Visualizza le metriche di utilizzo per i carichi di lavoro

Puoi visualizzare le metriche di utilizzo della GPU dei carichi di lavoro dal Carichi di lavoro nella console Google Cloud.

Per visualizzare l'utilizzo delle GPU del carico di lavoro, segui questi passaggi:

  1. Vai alla pagina Carichi di lavoro nella console Google Cloud.

    Vai a Carichi di lavoro
  2. Seleziona un carico di lavoro.

La dashboard Carichi di lavoro mostra i grafici relativi all'utilizzo e alla capacità della memoria GPU, e dal ciclo di servizio della GPU.

Visualizza le metriche di NVIDIA Data Center GPU Manager (DCGM)

Puoi raccogliere e visualizzare le metriche NVIDIA DCGM utilizzando Google Cloud Managed Service per Prometheus. Per Autopilot, GKE installa i driver. Per i cluster Standard, devi installare i driver NVIDIA.

Per istruzioni su come eseguire il deployment del pacchetto DCGM gestito da GKE, consulta Raccogli e visualizza le metriche di NVIDIA Data Center GPU Manager (DCGM).

Configura la terminazione controllata dei nodi GPU

Nei cluster GKE con il piano di controllo in esecuzione 1.29.1-gke.1425000 o versioni successive, i nodi GPU supportano indicatori SIGTERM che avvisano il nodo di un imminente arrestato. La notifica di spegnimento imminente è configurabile fino a un massimo di 60 minuti nei nodi GPU.

Puoi configurare GKE per terminare i tuoi carichi di lavoro in modo controllato entro questo periodo di notifica. Nel manifest del pod, imposta spec.terminationGracePeriodSeconds a un valore massimo di 60 minuti (3600 secondi). Ad esempio, per ricevere un'ora di notifica di 10 minuti, nel manifest del pod, imposta il campo spec.terminationGracePeriodSeconds su 600 secondi come segue:

  spec:
    terminationGracePeriodSeconds: 600

GKE fa il possibile per terminare questi pod in modo controllato eseguire l'azione di chiusura da te definita, come il salvataggio di una formazione stato.

Passaggi successivi