Esegui GPU in pool di nodi GKE Standard


Questa pagina mostra come eseguire e ottimizzare i carichi di lavoro con uso intensivo di calcolo, come l'intelligenza artificiale (AI) e l'elaborazione grafica, collegando e utilizzando gli acceleratori hardware GPU (unità di elaborazione grafica) NVIDIA® nei nodi dei cluster Google Kubernetes Engine (GKE) standard.

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 eseguire attività di deep learning come il riconoscimento delle immagini, l'elaborazione del linguaggio naturale e altre attività ad alta intensità di calcolo 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 scoprire di più sui casi d'uso delle GPU, consulta la pagina sulle GPU di Google Cloud. Per ulteriori informazioni sulle GPU in GKE e sulle differenze tra la modalità Standard e la modalità Autopilot, consulta 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 Configurazione di GKE Sandbox.

Prima di iniziare

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

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni 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 disporre della quota GPU di Compute Engine nella zona selezionata prima di poter creare i nodi GPU. Per assicurarti di disporre di una quota GPU sufficiente nel progetto, consulta Quote in Google Cloud Console.

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

    Per impostazione predefinita, gli account in prova gratuita non ricevono quota GPU.

  • Driver GPU NVIDIA: quando crei un cluster o un pool di nodi, puoi chiedere a GKE di installare automaticamente una versione del driver in base alla tua versione di GKE. Se non chiedi a GKE di installare automaticamente i driver GPU, devi installarli manualmente.

  • GPU A100: le GPU A100 sono supportate solo su tipi di macchine A2. Devi assicurarti di disporre di una quota sufficiente per il tipo di macchina A2 sottostante per utilizzare la GPU A100.

  • GPU sui nodi Ubuntu: se utilizzi GPU con nodi Ubuntu, quanto segue: si applicano i requisiti dei conducenti.

  • GPU L4 e GPU H100: driver NVIDIA versione 535 o successiva.

    Se una versione del driver richiesta o una versione successiva non è quella predefinita in la tua versione GKE, devi installarla manualmente un driver supportato sui tuoi nodi.

Best practice:

Utilizza Container-Optimized OS per i nodi GPU. Container-Optimized OS include i driver necessari per supportare la versione GKE specifica per i nodi GPU.

Limitazioni all'utilizzo delle GPU su GKE

Prima di utilizzare le GPU su GKE, tieni presente le seguenti 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:

    Assicurati di disporre di una quota sufficiente nel progetto per la serie di macchine corrispondente al tipo e alla quantità di GPU selezionati.

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

  • I cluster GKE Standard che eseguono la versione 1.28.2-gke.1098000 o precedente non supportano l'autoprovisioning dei nodi per la creazione di pool di nodi con GPU L4. Tuttavia, i cluster che eseguono versioni precedenti supportano la scalabilità automatica dei cluster per i 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 le unità SSD locali nei tuoi pod.

    La dimensione della macchina supportata in GKE è a3-highgpu-8g e il corrispondente numero di SSD locali è 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 quota GPU deve essere almeno equivalente al numero totale di GPU che intendi eseguire nel 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

Per richiedere una quota GPU, utilizza la console Google Cloud. Per ulteriori informazioni su come richiedere le quote, consulta la sezione Quote GPU nella documentazione di Compute Engine.

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

  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 le GPU nei cluster GKE Standard, crea un pool di nodi con GPU collegate.

Best practice:

Per migliorare efficienza in termini di costi, affidabilità e disponibilità delle GPU su GKE, esegui queste azioni:

  • Crea pool di nodi GPU separati. Per ogni pool di nodi, limita la posizione dei nodi alle zone in cui sono disponibili le GPU che ti interessano.
  • 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.
  • Configura GKE in modo da installare automaticamente i driver GPU predefiniti o più recenti sui pool di nodi, in modo da non dover installare e gestire manualmente le versioni dei driver.

Come descritto nelle sezioni seguenti, GKE utilizza le incompatibilità e le tolleranze dei nodi per garantire che i pod non vengano 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

GKE aggiunge questa incompatibilità solo se è presente un pool di nodi non GPU nel cluster. Se aggiungi un pool di nodi GPU a un cluster in cui tutti i pool di nodi esistenti sono pool di nodi GPU o se crei un nuovo cluster in cui al pool di nodi predefinito sono collegate GPU, l'alterazione precedente non viene aggiunta ai nodi GPU.

Se in futuro aggiungerai un pool di nodi non GPU al cluster, GKE non applica in modo retroattivo questa incompatibilità ai nodi GPU esistenti.

Limitazione automatica della programmazione con una tolleranza

Le tolleranze ti consentono di designare i pod che possono essere utilizzati su nodi "contaminati". GKE applica automaticamente una tolleranza, quindi solo i pod che richiedono GPU sono pianificate sui nodi GPU. In questo modo, viene attivata una scalabilità automatica più efficiente, in quanto i nodi GPU possono essere ridotti rapidamente se non ci sono pod sufficienti 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 utilizzare Terraform per eseguire il provisioning dei cluster GKE e del pool di nodi GPU.

Nel piano di controllo GKE 1.30.1-gke.1156000 e successive, GKE è in esecuzione installa la versione del driver NVIDIA predefinita per il tuo nodo GKE completamente gestita. Facoltativamente, puoi scegliere l'ultima versione disponibile del driver oppure disattivare esplicitamente l'installazione automatica dei driver. Nelle versioni precedenti a 1.30.1-gke.1156000, GKE non installa un driver per impostazione predefinita non specifichi una versione del driver quando crei o aggiorni il pool di nodi.

gcloud

Per creare un pool di nodi con GPU in un cluster, esegui il seguente 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 scelto per il pool di nodi.
  • GPU_TYPE: il tipo di acceleratore GPU utilizzato. Ad esempio: nvidia-tesla-t4.
  • DRIVER_VERSION: la versione del driver NVIDIA da installare. Può corrispondere a uno dei seguenti:

    • default: installa la versione predefinita del driver per la versione GKE del tuo nodo. In GKE 1.30.1-gke.1156000 e versioni successive, se ometti il flag gpu-driver-version, questa è l'opzione predefinita. Nelle versioni precedenti, GKE non installa un driver se ometti questo flag.
    • 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. Nelle versioni di GKE precedenti alla versione 1.30.1-gke.1156000, questa è l'opzione predefinita.

    L'opzione gpu-driver-version è disponibile solo per GKE versione 1.27.2-gke.1200 e successive. Nelle versioni precedenti, ometti questo flag e installa manualmente un driver dopo aver creato il pool di nodi. Se esegui l'upgrade di un cluster o di un pool di nodi esistente a questa versione o a una successiva, GKE installa automaticamente la versione predefinita del driver corrispondente alla versione GKE, a meno che non specifichi diversamente quando avvii l'upgrade.

  • AMOUNT: il numero di GPU da collegare ai nodi nel pool di nodi.

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

    • GPU NVIDIA H100 da 80 GB (corrispondenti al tipo di acceleratore nvidia-h100-80gb e al tipo di macchina A3 High) o GPU NVIDIA H100 Mega da 80 GB (corrispondenti al tipo di acceleratore nvidia-h100-mega-80gb e al tipo di macchina A3 Mega). Per ulteriori informazioni, consulta la serie di macchine A3 nella documentazione di Compute Engine.
    • GPU NVIDIA A100 da 40 GB (corrispondenti al tipo di acceleratore nvidia-tesla-a100 e al tipo di macchina A2 Standard) o GPU NVIDIA A100 da 80 GB (corrispondenti al tipo di acceleratore nvidia-a100-80gb e al tipo di macchina A2 Ultra). Per maggiori informazioni consulta la serie di macchine A2 nella documentazione di Compute Engine.
    • GPU NVIDIA L4 (corrispondenti al tipo di acceleratore nvidia-l4 e la serie di macchine G2).

    Per tutte le altre GPU, questo flag è facoltativo.

  • COMPUTE_REGION: la regione Compute Engine del cluster, ad esempio us-central1. Scegli una regione con almeno una zona in cui sono disponibili le GPU richieste.

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

  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: le zone specifiche in cui GKE crea i nodi GPU. Le zone devono trovarsi nella stessa regione del cluster, specificata dal flag --region. I tipi di GPU che definisci devono essere available in ogni zona selezionata. Ti consigliamo di utilizzare sempre il flag --node-locations quando crei il pool di nodi per 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 ogni zona del pool di nodi in qualsiasi momento. Questo valore è pertinente solo se viene utilizzato 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 regionale con Terraform con GPU utilizzando un 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.
    • CLUSTER_REGION: il 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 scoprire quali zone dispongono di GPU, consulta la sezione Disponibilità. Devi utilizzare la variabile node_locations quando crei il pool di nodi GPU per specificare la zona o le zone contenenti le GPU richieste.
    • GPU_TYPE: il tipo di acceleratore GPU utilizzato. Ad esempio: nvidia-tesla-t4.
    • DRIVER_VERSION: la versione del driver GPU per l'installazione automatica di GKE. Questo campo è facoltativo. Sono supportati i seguenti valori:

      • INSTALLATION_DISABLED: disattiva l'installazione automatica dei driver GPU. Devi installare manualmente i driver per eseguire le tue GPU. Nelle versioni GKE precedenti a 1.30.1-gke.1156000, questa è l'opzione predefinita se ometti questo campo.
      • DEFAULT: installa automaticamente la versione del driver predefinita per la versione del sistema operativo del nodo. In GKE 1.30.1-gke.1156000 e versioni successive, se ometti questo campo, l'opzione predefinita è questa. Nelle versioni precedenti, installare un driver se ometti questo campo.
      • LATEST: installa automaticamente la versione più recente del driver disponibile per la versione del sistema operativo del tuo nodo. Disponibile solo per i nodi che utilizzano Container-Optimized OS.

      Se ometti questo campo, GKE non installa automaticamente un conducente. Questo campo non è supportato nei pool di nodi che utilizzano il provisioning automatico dei nodi. Per installare manualmente un driver, vedi Installa manualmente i driver GPU NVIDIA in questo documento.

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

      • GPU NVIDIA H100 da 80 GB (corrispondenti al tipo di acceleratore nvidia-h100-80gb e al tipo di macchina A3 High) o GPU NVIDIA H100 Mega da 80 GB (corrispondenti al tipo di acceleratore nvidia-h100-mega-80gb e al tipo di macchina A3 Mega). Per maggiori informazioni per informazioni, consulta la serie di macchine A3 nella documentazione di Compute Engine.
      • GPU NVIDIA A100 da 40 GB (corrispondenti al tipo di acceleratore nvidia-tesla-a100 e al tipo di macchina A2 Standard) o GPU NVIDIA A100 da 80 GB (corrispondenti al tipo di acceleratore nvidia-a100-80gb e al tipo di macchina A2 Ultra). Per ulteriori informazioni, consulta la serie di macchine A2 nella documentazione di Compute Engine.
      • GPU NVIDIA L4 (corrispondenti al tipo di acceleratore nvidia-l4 e la serie di macchine G2).

      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 un pool di nodi che utilizza le GPU. Il pool di nodi ha inizialmente tre nodi e la scalabilità automatica è abilitata. Per scoprire di più su Terraform, consulta la specifica della risorsa google_container_node_pool su terraform.io.

Best practice:

Per evitare ulteriori costi, rimuovi tutte le risorse definite nel file di configurazione utilizzando il comando terraform destroy.

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

Installare manualmente i driver GPU NVIDIA

Puoi installare manualmente i driver GPU NVIDIA sui tuoi nodi dispiegando un DaemonSet di installazione su questi nodi. Utilizza l'installazione manuale nelle seguenti situazioni:

  • 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 tuo carico di lavoro richiede una versione specifica del driver NVIDIA non disponibile come predefinita o come driver più recente con installazione automatica.
Best practice:

Se possibile, utilizza l'installazione automatica del driver. Per farlo, specifica l'opzione gpu-driver-version nel flag --accelerator quando crei il 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, solitamente aggiunto durante la creazione del cluster.

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

COS

Per eseguire il deployment del DaemonSet di installazione e installare la versione predefinita del driver GPU, esegui il seguente 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 della GPU (vedi la tabella di seguito), esegui il seguente 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.

La tabella seguente elenca le versioni dei driver disponibili in ogni versione di GKE:

Versioni del driver NVIDIA GKE
1,30 R535 (predefinito) o R550
1,29 R535 (predefinito) o R550
1,28 R535 (impostazione predefinita) 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 dalla versione del nodo GKE come segue:

  • Per tutte le GPU tranne le GPU NVIDIA L4 e NVIDIA H100, esegui il 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 le GPU NVIDIA L4 o H100 che eseguono versioni dei nodi delle release precedenti alla release 2024-R05 o successive, 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 basata su 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 alla configurazione di 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 i pool di nodi sottoposti a provisioning automatico non hanno 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 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 la versione GKE del tuo nodo. Se ometti il nodeSelector nel manifest, questa è l'opzione predefinita.
  • latest: l'ultima versione del driver disponibile per il tuo nodo Versione GKE.

Per scoprire di più sul provisioning automatico, consulta Utilizzare il provisioning automatico dei nodi.

Configurazione dei pod per l'utilizzo delle GPU

Utilizzi un limite di risorse per configurare i pod in modo che consumino GPU. Specifica un limite di risorse in una specifica del pod utilizzando la seguente coppia chiave-valore

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

alpha.kubernetes.io/nvidia-gpu non è supportato come nome risorsa in con GKE. Usa invece nvidia.com/gpu come nome della risorsa.

Il manifest seguente è un esempio di specifica del 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 associa un selettore di nodi univoco ai nodi GPU per contribuire a 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 eseguire manualmente l'upgrade dei pool di nodi se vuoi che i tuoi nodi passino a una versione successiva prima. Per controllare il funzionamento degli upgrade per il tuo cluster, utilizza i canali di rilascio, i periodi di manutenzione ed esclusioni e la sequenziazione del rollout.

Puoi anche configurare una strategia di upgrade dei nodi per il tuo pool di nodi, ad esempio gli upgrade per picchi o gli upgrade blu-verde. Configurando queste strategie, puoi assicurarti che l'upgrade dei pool di nodi venga eseguito in modo da raggiungere l'equilibrio ottimale tra velocità e interruzione per il tuo ambiente. Per i pool di nodi delle sezioni TPU multi-host, anziché utilizzare la strategia di upgrade dei nodi configurata, GKE ricrea l'intero pool di nodi in un unico 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 visualizzi errori di disponibilità delle risorse quando cerchi di creare altri nodi con GPU o TPU, consulta Eseguire l'upgrade in un ambiente con risorse limitate.

Informazioni sulle librerie NVIDIA CUDA-X

CUDA è la piattaforma di computing parallelo e il modello di programmazione per GPU NVIDIA. Per utilizzare le applicazioni CUDA, l'immagine che utilizzi deve avere 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: la 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 in /usr/local/nvidia/bin. Per maggiori dettagli, consulta l'immagine NVIDIA CUDA su DockerHub.

    Per controllare la versione minima del driver GPU richiesta per la tua versione di CUDA, consulta CUDA Toolkit e versioni dei driver compatibili.

  • /usr/local/nvidia/lib64: la posizione dei driver di dispositivo NVIDIA.
Assicurati che la versione della patch GKE in esecuzione sui tuoi nodi includa una versione del driver GPU compatibile con la versione di CUDA scelta. Per un elenco delle versioni dei driver GPU associate alla versione GKE, consulta la pagina del sistema operativo Container-Optimized OS corrispondente collegata nella tabella delle versioni correnti di GKE.

Monitorare 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 acceleratore totale in byte.

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

Visualizzare le metriche di utilizzo per i carichi di lavoro

Puoi visualizzare le metriche sull'utilizzo della GPU del carico di lavoro dalla dashboard 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, nonché al ciclo di lavoro della GPU.

Visualizzare 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 i cluster 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 Raccogliere e visualizzare le metriche di NVIDIA Data Center GPU Manager (DCGM).

Configurare l'interruzione controllata dei nodi GPU

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

Per configurare GKE in modo che termini i carichi di lavoro in modo corretto in questo periodo di tempo della notifica, segui i passaggi descritti in Gestire l'interruzione dei nodi GKE per GPU e TPU.

Passaggi successivi