Questa pagina mostra come richiedere GPU per accelerare le attività nei carichi di lavoro GKE Autopilot (Google Kubernetes Engine). In questa pagina viene inoltre descritto come Autopilot esegue le GPU, come cambia il modello di prezzo in base alla versione di GKE, come impostare le richieste e i limiti di risorse dei pod e come monitorare i workload GPU.
Questa pagina è rivolta agli amministratori e agli operatori della piattaforma e agli esperti di dati e AI che vogliono richiedere GPU per carichi di lavoro che eseguono attività come l'addestramento o l'inferenza di machine learning (ML). Per scoprire di più sui ruoli, sulle responsabilità e su esempi di attività comuni a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività comuni degli utenti di GKE Enterprise.
Prima di procedere, assicurati di conoscere i seguenti concetti:
Informazioni sulla selezione degli acceleratori nei pod
Autopilot utilizza la classe di calcolo Accelerator specializzata per eseguire i pod GPU. Con questa classe di calcolo, GKE posiziona i pod sui nodi GPU, fornendo ai pod l'accesso a funzionalità avanzate sulla macchina virtuale (VM). Per utilizzare questa classe in un carico di lavoro GPU, esegui una delle seguenti azioni a seconda della versione di GKE:
- Versione 1.29.4-gke.1427000 e successive: richiedi le GPU nel manifest del tuo carico di lavoro. Puoi anche utilizzare le funzionalità di condivisione della GPU, come il time-sharing. GKE non modifica i manifest del tuo carico di lavoro per aggiungere un selettore di nodi o un'annotazione per la classe Accelerator.
- Versione 1.29 fino alla versione 1.29.4-gke.142700, esclusa: specifica il selettore di nodi
cloud.google.com/compute-class: Accelerator
nel manifest del pod e richiedi le GPU. Se specifichi questo selettore di nodi, puoi anche utilizzare le funzionalità di condivisione della GPU, come il time-sharing. - Versione 1.28.9-gke.1069000 fino alla versione 1.29, esclusa: specifica il selettore di nodi
cloud.google.com/compute-class: Accelerator
nel manifest del pod insieme ai selettori GPU. Se specifichi questo selettore di nodi, puoi anche utilizzare le funzionalità di condivisione della GPU, come il time-sharing.
La classe di calcolo Accelerator non è supportata nelle versioni precedenti alla 1.28.9-gke.1069000. GKE tratta invece i pod GPU su queste versioni in modo simile agli altri pod Autopilot e ti vengono addebitate le richieste di risorse. Per maggiori dettagli, consulta la pagina Prezzi.
Compatibilità con le funzionalità di GKE
La tabella seguente mostra le funzionalità GKE compatibili per ciascun metodo di selezione degli acceleratori in GKE Autopilot:
Accelerator classe di calcolo selezionata |
Compatibilità con le funzionalità di GKE |
---|---|
|
|
|
Prezzi
La tabella seguente descrive in che modo il modello di fatturazione utilizzato da GKE dipende dalla versione GKE del cluster. Per una descrizione degli modelli di fatturazione di GKE Autopilot, consulta Prezzi di Autopilot.
Versione GKE | Prezzi |
---|---|
1.29.4-gke.1427000 e versioni successive | Modello di fatturazione basato sui nodi. Tutti i pod GPU utilizzano la classe di calcolo Accelerator. Ti viene addebitato il costo dell'hardware Compute Engine che esegue i tuoi carichi di lavoro GPU, oltre a un abbonamento Autopilot premium per la gestione e la scalabilità dei nodi. Per maggiori dettagli, consulta Prezzi della modalità Autopilot. |
Dalla versione 1.29 fino alla versione 1.29.4-gke.1427000, esclusa quest'ultima | Il modello di fatturazione dipende dai selettori di nodi specificati, come segue:
Puoi utilizzare funzionalità come le GPU a più istanze o la condivisione del tempo solo se
specifichi esplicitamente il selezionatore di nodi Per maggiori dettagli, consulta la sezione "Pod con requisiti hardware specifici" in Prezzi di Kubernetes Engine. |
Dalla versione 1.28.6-gke.1095000 alla versione 1.29, esclusa | Modello di fatturazione basato su nodi, indipendentemente dal fatto che tu specifichi o meno la classe di calcolo dell'acceleratore nei manifest dei pod. Puoi utilizzare funzionalità come le GPU a più istanze o la condivisione del tempo solo se
specifichi esplicitamente il selezionatore di nodi Per maggiori dettagli, consulta la sezione "Pod con requisiti hardware specifici" in Prezzi di Kubernetes Engine. |
Versioni precedenti a 1.28.6-gke.1095000 | Modello di fatturazione basato su pod. La fatturazione viene effettuata in base alle richieste di risorse del pod GPU. Per maggiori dettagli, consulta la sezione "Pod con requisiti hardware specifici" in Prezzi di Kubernetes Engine. |
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- 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
.
Assicurati di avere un cluster GKE Autopilot che esegue una delle seguenti versioni:
- Classe di calcolo dell'acceleratore: qualsiasi versione con patch della 1.28 a partire da
1.28.6-gke.1095000
- GPU NVIDIA H100 Mega (80 GB): 1.28.9-gke.1250000 o versioni successive e 1.29.4-gke.1542000 o versioni successive
- GPU NVIDIA H100 (80 GB): 1.28.6-gke.1369000 o versioni successive e 1.29.1-gke.1575000 o versioni successive
- Più pod GPU per VM: 1.29.2-gke.1355000 o versioni successive
Nessuna classe di calcolo selezionata:
- GPU NVIDIA L4: 1.28.3-gke.1203000 o versioni successive
- GPU NVIDIA A100 (80 GB): 1.27 o versioni successive
- Classe di calcolo dell'acceleratore: qualsiasi versione con patch della 1.28 a partire da
1.28.6-gke.1095000
Assicurati di disporre di quote GPU sufficienti nel progetto. Devi disporre di una quota GPU di Compute Engine sufficiente per i modelli di GPU che vuoi creare in ogni regione. Se hai bisogno di una quota di GPU aggiuntiva, richiedi una quota di GPU.
Limitazioni
- Le GPU con condivisione del tempo e le GPU multi-istanza sono disponibili con Autopilot su GKE versione 1.29.3-gke.1093000 e successive.
- La disponibilità delle GPU dipende dalla regione Google Cloud del tuo cluster Autopilot e dalla tua quota GPU. Per trovare un modello di GPU per regione o zona, consulta Disponibilità di regioni e zone per le GPU.
- Per le GPU NVIDIA A100 (80 GB), ti viene addebitato un prezzo fisso per le unità SSD locali collegate ai nodi, indipendentemente dal fatto che i pod utilizzino questa capacità.
- Per le versioni GKE precedenti alla 1.29.2-gke.1355000, se richiedi esplicitamente un nodo GPU esistente specifico per il tuo pod, il pod deve consumare tutte le risorse GPU sul nodo. Ad esempio, se il nodo esistente ha 8 GPU e i container del tuo pod richiedono un totale di 4 GPU, Autopilot rifiuta il pod.
- Per la versione GKE 1.29.2-gke.1355000 o successive, se vuoi che più pod GPU
si inseriscano in un singolo nodo, la somma delle richieste di GPU per questi pod deve essere inferiore o uguale al numero di risorse GPU collegate a quel nodo. Ad esempio, un nodo con un valore
gke-accelerator-count
pari a 4 può ospitare fino a quattro pod che richiedono ciascuno una GPU.
Il posizionamento di più pod su un singolo nodo GPU è utile in situazioni come le seguenti:
- Hai prenotazioni di capacità per tipi di macchine Accelerator di grandi dimensioni ed esegui carichi di lavoro a singola GPU, pertanto il deployment di un pod per nodo farebbe sprecare le altre GPU sulla macchina
- Hai carichi di lavoro GPU che devono essere eseguiti sullo stesso host
In queste situazioni, ti consigliamo di utilizzare tutte le GPU sul nodo assicurandoti che la somma delle richieste di risorse GPU del pod sul nodo sia uguale al numero di GPU collegate al nodo.
Richiedere GPU nei container
Per richiedere risorse GPU per i tuoi contenitori, aggiungi i seguenti campi alla specifica del pod.
A seconda dei requisiti del carico di lavoro, puoi omettere facoltativamente il selettorecloud.google.com/gke-accelerator-count
.
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
nodeSelector:
cloud.google.com/gke-accelerator: GPU_TYPE
cloud.google.com/gke-accelerator-count: GPU_COUNT
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: GPU_QUANTITY
Sostituisci quanto segue:
GPU_TYPE
: il tipo di hardware della GPU. I valori consentiti sono:nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
GPU_COUNT
: il numero totale di GPU disponibili da collegare al nodo. Deve essere maggiore o uguale aGPU_QUANTITY
e una quantità di GPU supportata per il tipo di GPU selezionato. Se ometti questo nodeSelector, Autopilot posiziona un pod su ogni nodo GPU.GPU_QUANTITY
: il numero di GPU da allocare al contenitore. Deve essere inferiore o uguale aGPU_COUNT
e una quantità di GPU supportata per il tipo di GPU selezionato.
Per informazioni dettagliate su come ti viene addebitato l'utilizzo dell'acceleratore in modalità Autopilot, consulta la sezione Prezzi.
Devi specificare sia il tipo di GPU sia la quantità di GPU nella specifica del pod. Se ometti uno di questi valori, Autopilot rifiuta il tuo pod.
Quando esegui il deployment di questo manifest, Autopilot installa automaticamente i driver NVIDIA predefiniti per la versione GKE del nodo. Nella versione 1.29.2-gke.1108000 e successive, se vuoi puoi scegliere di installare la versione più recente del driver per quella versione di GKE aggiungendo il seguente selettore di nodi 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
: la versione del driver più recente disponibile per la versione GKE del tuo nodo.
Richieste di CPU e memoria per i pod GPU Autopilot
Quando definisci i pod GPU, devi anche richiedere risorse CPU e memoria in modo che i container funzionino come previsto. Autopilot applica valori minimi, massimi e predefiniti specifici per CPU e memoria in base al tipo e alla quantità di GPU. Se esegui più pod GPU su un singolo nodo, specifica la CPU e la memoria, altrimenti viene utilizzata per impostazione predefinita l'intera capacità del nodo. Per maggiori dettagli, consulta Richieste di risorse in Autopilot.
La specifica del pod dovrebbe essere simile al seguente esempio, che richiede quattro GPU T4:
apiVersion: v1
kind: Pod
metadata:
name: t4-pod
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
containers:
- name: t4-container-1
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: 3
cpu: "54"
memory: "54Gi"
requests:
cpu: "54"
memory: "54Gi"
- name: t4-container-2
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: 1
cpu: "18"
memory: "18Gi"
requests:
cpu: "18"
memory: "18Gi"
Questo manifest specifica limits
per le risorse CPU e memoria. Se ometti limits
per la CPU o la memoria nella versione GKE 1.29.2-gke.1060000 e successive, GKE assegna ai pod la classe QoS Burstable
e consente ai pod di utilizzare risorse inutilizzate dalla somma delle richieste di risorse sul nodo. Per ulteriori informazioni, consulta la pagina Configurare l'esplosione dei pod in GKE.
Richieste di spazio di archiviazione temporaneo per i pod GPU Autopilot
Puoi anche richiedere spazio di archiviazione temporaneo nei pod che richiedono spazio di archiviazione di breve durata. Lo spazio di archiviazione temporaneo massimo disponibile e il tipo di hardware di archiviazione utilizzato dipendono dal tipo e dalla quantità di GPU richieste dal pod. Puoi utilizzare l'unità SSD locale per lo spazio di archiviazione temporaneo se utilizzi GPU NVIDIA L4, la classe di calcolo Accelerator e la patch GKE versione 1.28.6-gke.1369000 e successive o 1.29.1-gke.1575000 e successive.
Per utilizzare l'SSD locale per lo spazio di archiviazione temporaneo, aggiungi il nodeSelector cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
al manifest del tuo carico di lavoro. Consulta l'esempio di manifest in Utilizzare lo spazio di archiviazione temporaneo basato su SSD locali con i cluster Autopilot.
Le GPU NVIDIA H100 (80 GB) e NVIDIA A100 (80 GB) utilizzano sempre unità SSD locali per lo spazio di archiviazione temporaneo e non puoi specificare questo selettore di nodi per queste GPU.
Verificare l'allocazione della GPU
Per verificare che un carico di lavoro GPU di cui è stato eseguito il deployment disponga delle GPU richieste, esegui il seguente comando:
kubectl describe node NODE_NAME
Sostituisci NODE_NAME
con il nome del nodo su cui è stato pianificato il pod.
L'output è simile al seguente:
apiVersion: v1
kind: Node
metadata:
...
labels:
...
cloud.google.com/gke-accelerator: nvidia-tesla-t4
cloud.google.com/gke-accelerator-count: "1"
cloud.google.com/machine-family: custom-48
...
...
Controllare la versione del driver GPU
Nei cluster Autopilot, GKE installa automaticamente i driver dei dispositivi NVIDIA su tutti i nodi GPU. Per trovare la versione del driver installata da GKE nel cluster, esegui il seguente comando:
kubectl logs --selector=k8s-app=nvidia-gpu-device-plugin \
--container="nvidia-gpu-device-plugin" \
--tail=-1 \
--namespace=kube-system | grep Driver
L'output è simile al seguente:
I1206 18:37:08.251742 5851 metrics.go:144] nvml initialized successfully. Driver version: 535.104.12
Come funziona l'allocazione delle GPU in Autopilot
Dopo aver richiesto un tipo di GPU e una quantità per i container in un pod e aver eseguito il deployment del pod, si verifica quanto segue:
- Se non esiste un nodo GPU allocato, Autopilot esegue il provisioning di un nuovo nodo GPU per pianificare il pod. Autopilot installa automaticamente i driver di NVIDIA per semplificare l'hardware.
- Autopilot aggiunge incompatibilità dei nodi al nodo GPU e le tolleranze corrispondenti al pod. In questo modo, GKE non può pianificare altri pod sul nodo GPU.
Autopilot posiziona esattamente un pod GPU su ogni nodo GPU, nonché eventuali carichi di lavoro gestiti da GKE in esecuzione su tutti i nodi e eventuali DaemonSet configurati per tollerare tutti gli errori dei nodi.
Esegui i DaemonSet su ogni nodo
Potresti voler eseguire i DaemonSet su ogni nodo, anche su quelli con incompatibilità applicate. Ad esempio, alcuni agenti di monitoraggio e logging devono essere eseguiti su ogni nodo del cluster. Puoi configurare questi DaemonSet in modo da ignorare le incompatibilità dei nodi in modo che GKE posizioni questi workload su ogni nodo.
Per eseguire i DaemonSet su ogni nodo del cluster, inclusi i nodi GPU, aggiungi la seguente tolleranza alla specifica:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
Per eseguire i DaemonSet su nodi GPU specifici del cluster, aggiungi quanto segue alla specifica:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "GPU_TYPE"
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
Sostituisci GPU_TYPE
con il tipo di GPU nei nodi di destinazione. Può essere uno dei seguenti:
nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
Casi d'uso delle GPU in Autopilot
Puoi allocare GPU ai container nei pod Autopilot per semplificare i carichi di lavoro come i seguenti:
- Inferenza del machine learning (ML)
- Addestramento ML
- Rendering
Quantità di GPU supportate
Quando richiedi GPU nella specifica del pod, devi utilizzare le seguenti quantità in base al tipo di GPU:
Quantità di GPU | |
---|---|
NVIDIA L4nvidia-l4 |
1, 2, 4, 8 |
NVIDIA T4nvidia-tesla-t4 |
1, 2, 4 |
NVIDIA A100 (40GB)nvidia-tesla-a100 |
1, 2, 4, 8, 16 |
NVIDIA A100 (80GB)nvidia-a100-80gb |
1, 2, 4, 8 |
NVIDIA H100 (80GB)nvidia-h100-80gb |
8 |
NVIDIA H100 Mega (80GB)nvidia-h100-mega-80gb |
8 |
Se richiedi una quantità di GPU non supportata per quel tipo, Autopilot rifiuta il pod.
Monitorare le prestazioni del carico di lavoro del nodo GPU
Se nel tuo cluster GKE sono attivate le metriche di sistema, in Cloud Monitoring sono disponibili le seguenti metriche per monitorare le prestazioni del carico di lavoro GPU:
- Duty cycle (
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 della memoria (
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 le dashboard predefinite per monitorare i cluster con nodi GPU. Per ulteriori informazioni, consulta Visualizzare 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 workload
Puoi visualizzare le metriche sull'utilizzo della GPU del tuo carico di lavoro dalla dashboard Workload nella console Google Cloud.
Per visualizzare l'utilizzo della GPU del tuo carico di lavoro:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Vai a Carichi di lavoro- 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).
Passaggi successivi
- Scopri di più sul supporto delle GPU in GKE.
- Scopri come le classi di calcolo Autopilot sono ottimizzate per casi d'uso specializzati.
- Scopri di più sul deployment delle GPU per i carichi di lavoro batch con Dynamic Workload Scheduler.