Informazioni sulle GPU in GKE


Questa pagina descrive le GPU in Google Kubernetes Engine (GKE), inclusi i casi d'uso, le funzionalità supportate e i tipi di GPU, nonché le differenze tra le modalità Autopilot e Standard. Per istruzioni su come collegare e utilizzare le GPU nei carichi di lavoro, consulta Eseguire il deployment dei carichi di lavoro GPU su Autopilot o Eseguire GPU su pool di nodi Standard.

Disponibilità delle GPU in GKE

In GKE Autopilot richiedi l'hardware GPU specificando le risorse GPU nei carichi di lavoro. In GKE Standard puoi collegare l'hardware GPU ai nodi nei cluster, quindi allocare le risorse GPU ai carichi di lavoro containerizzati in esecuzione su questi nodi. Puoi utilizzare questi acceleratori per eseguire attività che richiedono molte risorse, come le seguenti:

  • Inferenza e addestramento del machine learning (ML)
  • Elaborazione dati su larga scala

L'hardware GPU disponibile per GKE è un sottoinsieme delle GPU di Compute Engine per i carichi di lavoro di calcolo. GKE offre alcune funzionalità specifiche per GPU, come la condivisione del tempo e le GPU multi-istanza, che possono migliorare l'efficienza con cui i carichi di lavoro utilizzano le risorse GPU sui nodi.

L'hardware specifico disponibile dipende dalla regione o dalla zona di Compute Engine del cluster. Per informazioni sulla disponibilità specifica, consulta la sezione Regioni e zone delle GPU.

Quota per le GPU

La quota GPU è il numero massimo di GPU che possono essere eseguite nel progetto Google Cloud. Per utilizzare le GPU nei cluster GKE, il progetto deve avere una quota GPU sufficiente.

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

Ad esempio, se prevedi di utilizzare tre nodi con due GPU ciascuno, il tuo progetto richiede almeno sei quote GPU.

Per richiedere una quota GPU aggiuntiva, segui le istruzioni in Richiedere un limite di quota più elevato, utilizzando gpus come metrica.

Supporto delle GPU in Autopilot e Standard

Le GPU sono disponibili nei cluster Autopilot e Standard. La seguente tabella descrive le differenze tra il supporto per GPU Autopilot e quello Standard:

Descrizione Autopilot Standard
Disponibilità hardware GPU
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 da 40 GB
  • NVIDIA A100 da 80 GB
  • NVIDIA H100 da 80 GB
Tutti i tipi di GPU supportati da Compute Engine
Selezione di una GPU Richiedi una quantità di GPU e digiti nella specifica del carico di lavoro. Per impostazione predefinita, Autopilot installa il driver predefinito per quella versione di GKE e gestisce i nodi. Per selezionare una versione specifica del driver in Autopilot, consulta Selezione dei driver NVIDIA per i pod GPU Autopilot
  1. Crea un pool di nodi con il tipo di GPU specifico e il tipo di macchina Compute Engine corrispondente, quindi scegli un driver da installare
  2. Installa manualmente i driver GPU sui nodi se non hai utilizzato l'installazione automatica
  3. Richiedi quantità di GPU nella specifica del pod

Per le istruzioni, consulta Eseguire GPU su pool di nodi standard

Migliora l'utilizzo della GPU
Sicurezza
Prezzi Prezzi dei pod GPU Autopilot Prezzi delle GPU di Compute Engine

In Autopilot, GKE gestisce l'installazione dei driver, la scalabilità dei nodi, l'isolamento dei pod e il provisioning dei nodi. Ti consigliamo di scegliere una modalità cluster per le GPU in base alla flessibilità e al livello di controllo che vuoi sui nodi, come indicato di seguito:

  • Se vuoi concentrarti sul deployment dei carichi di lavoro basati su GPU senza dover gestire i nodi e se i tipi di GPU disponibili sono adatti alle tue esigenze, utilizza Autopilot.
  • Se preferisci gestire autonomamente i nodi, la scalabilità, l'isolamento e le macchine sottostanti, utilizza Standard.

Funzionalità GPU in GKE

GKE fornisce funzionalità aggiuntive che puoi utilizzare per ottimizzare l'utilizzo delle risorse dei carichi di lavoro GPU, in modo da non sprecare risorse GPU nei nodi. Per impostazione predefinita, Kubernetes supporta solo l'assegnazione di GPU come unità intere ai container, anche se un container richiede solo una parte della GPU disponibile o se il container non utilizza sempre le risorse.

In GKE sono disponibili le seguenti funzionalità per ridurre la quantità di risorse GPU sottoutilizzate:

Funzionalità GPU
GPU multi-istanza

Disponibile su:Autopilot e Standard

Suddividi una singola GPU in fino a sette istanze separate dall'hardware che possono essere assegnate come singole GPU ai container su un nodo. Ogni container assegnato riceve le risorse disponibili per l'istanza.

GPU con condivisione del tempo

Disponibile su:Autopilot e Standard

Presenta una singola GPU come più unità in più container su un nodo. Il driver GPU cambia contesto e alloca le risorse GPU complete a ogni container assegnato in base alle esigenze nel tempo.

MPS di NVIDIA

Disponibile su: standard

Condividi un'unica GPU NVIDIA fisica tra più container. NVIDIA MPS è un'implementazione alternativa e compatibile con il programma binario dell'API CUDA progettata per consentire in modo trasparente l'esecuzione simultanea di applicazioni CUDA multi-processo cooperative su un singolo dispositivo GPU.

Informazioni sulle librerie NVIDIA CUDA-X

Nei cluster Autopilot, GKE gestisce la selezione e l'installazione delle versioni del driver.

CUDA è la piattaforma di computing parallela e il modello di programmazione di NVIDIA per GPU. Per utilizzare le applicazioni CUDA, l'immagine utilizzata deve avere le librerie. Per aggiungere le librerie NVIDIA CUDA-X, utilizza uno dei seguenti metodi:

  • Consigliato: utilizza un'immagine con le librerie NVIDIA CUDA-X preinstallate. Ad esempio, puoi utilizzare Deep Learning Containers. Questi container preinstallano i framework chiave di data science, le librerie e gli strumenti NVIDIA CUDA-X. In alternativa, l' immagine NVIDIA CUDA contiene solo le librerie NVIDIA CUDA-X.
  • Crea e utilizza la tua immagine. In questo caso, includi i seguenti valori nella variabile di ambiente LD_LIBRARY_PATH della specifica del container:
    1. /usr/local/cuda-CUDA_VERSION/lib64: la località delle librerie NVIDIA CUDA-X sul nodo. Sostituisci CUDA_VERSION con la versione immagine CUDA-X 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.
    2. /usr/local/nvidia/lib64: la posizione dei driver di dispositivo NVIDIA.

Per controllare la versione minima del driver GPU richiesta per la tua versione di CUDA, consulta CUDA Toolkit e versioni dei driver compatibili. Assicurati che la versione della patch GKE in esecuzione sui tuoi nodi includa una versione del driver GPU compatibile con la versione CUDA che hai scelto. Per un elenco delle versioni dei driver GPU associate alla versione di GKE, consulta la pagina Container-Optimized OS corrispondente nella tabella delle versioni attuali di GKE.

Monitora i nodi GPU

Se nel cluster GKE sono abilitate le metriche di sistema, le seguenti metriche sono disponibili in Cloud Monitoring per monitorare le prestazioni del carico di lavoro della GPU:

  • Ciclo di lavoro (container/accelerator/duty_cycle): percentuale di tempo nell'ultimo periodo di campionamento (10 secondi) durante il quale l'acceleratore ha eseguito attivamente l'elaborazione. Tra 1 e 100.
  • Utilizzo memoria (container/accelerator/memory_used): quantità di memoria dell'acceleratore allocata in byte.
  • Capacità di memoria (container/accelerator/memory_total): memoria totale dell'acceleratore in byte.

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

Visualizza metriche di utilizzo per i carichi di lavoro

Puoi visualizzare le metriche di utilizzo delle GPU dei carichi di lavoro dalla dashboard Carichi di lavoro nella console Google Cloud.

Per visualizzare l'utilizzo della GPU dei carichi 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 della GPU e al 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 i cluster Standard, devi installare i driver NVIDIA. Per i cluster Autopilot, GKE installa i driver.

Per istruzioni su come eseguire il deployment di DCGM e dell'esportatore Prometheus DCGM, consulta NVIDIA Data Center GPU Manager (DCGM) nella documentazione sull'osservabilità di Google Cloud.

Gestire l'interruzione dovuta alla manutenzione dei nodi

I nodi GKE che ospitano le GPU sono soggetti a eventi di manutenzione o altre interruzioni che potrebbero causare l'arresto dei nodi. Puoi ridurre le interruzioni dei carichi di lavoro in esecuzione nei cluster GKE con il piano di controllo che esegue la versione 1.29.1-gke.1425000 e successive. GKE avvisa i nodi di un arresto imminente inviando un segnale SIGTERM al nodo fino a 60 minuti prima dell'eliminazione.

Puoi configurare GKE per terminare in modo controllato i carichi di lavoro. Nel manifest del pod, imposta il campo spec.terminationGracePeriodSeconds su un valore massimo di 3600 secondi (un'ora). GKE fa il possibile per terminare in modo controllato questi pod ed eseguire l'azione di terminazione da te definita, ad esempio salvando uno stato di addestramento. GKE rispetta qualsiasi configurazione, fino a un massimo di 60 minuti, per le impostazioni di PodDisruptionBudget o terminationGracePeriodSeconds.

Per saperne di più, consulta Configurare la terminazione controllata dei nodi GPU.

Passaggi successivi