Questa pagina mostra come richiedere vari tipi e quantità di hardware acceleratori (GPU) per i tuoi Carichi di lavoro Autopilot di Google Kubernetes Engine (GKE) e monitorerai le prestazioni.
Informazioni sulla selezione degli acceleratori nei pod
Autopilot usa la classe di calcolo Accelerator specializzata per eseguire di pod GPU. Con questa classe di computing, GKE posiziona i pod sui nodi GPU, fornendo ai pod l'accesso a funzionalità avanzate di una macchina virtuale (VM). Per utilizzare questa classe in un carico di lavoro GPU, devi eseguire una delle a seconda della versione di GKE:
- Versione 1.29.4-gke.1427000 e successive: richiedi le GPU nel carico di lavoro del file manifest. Puoi anche utilizzare funzionalità di condivisione della GPU, come la condivisione del tempo. GKE non modifica il 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 tuo pod e richiedere le GPU. Se specifichi questo selettore di nodi, puoi anche usano funzionalità di condivisione della GPU come la condivisione del tempo. - Versione 1.28.9-gke.1069000 fino alla versione 1.29 esclusa: specifica
il selettore di nodi
cloud.google.com/compute-class: Accelerator
nel tuo pod insieme ai selettori GPU. Se specifichi questo selettore di nodi, puoi anche usare funzionalità di condivisione della GPU, come la condivisione del tempo.
La classe di computing Accelerator non è supportata nelle versioni precedenti a 1.28.9-gke.1069000. I pod GPU in queste versioni vengono invece trattati in modo simile ad altri pod Autopilot e ti verranno addebitate le richieste di risorse. Per per i dettagli, consulta la sezione Prezzi.
Compatibilità con le funzionalità di GKE
La tabella seguente mostra le funzionalità di GKE compatibili per ogni metodo di selezione degli acceleratori in GKE Autopilot:
Accelerator classe di computing 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 dei modelli di fatturazione di GKE Autopilot, Prezzi di Autopilot.
Versione GKE | Prezzi |
---|---|
1.29.4-gke.1427000 e versioni successive | Modello di fatturazione basato su nodi. Tutti i pod GPU utilizzano l'acceleratore Compute Engine. Ti viene addebitato il L'hardware Compute Engine che esegue i carichi di lavoro GPU, più un Autopilot premium per la gestione e la scalabilità dei nodi. Per maggiori dettagli, vedi Prezzi della modalità Autopilot. |
Dalla versione 1.29 fino alla versione 1.29.4-gke.1427000 esclusa, inclusa | Il modello di fatturazione dipende dai selettori dei nodi specificati, che segue:
Puoi utilizzare funzionalità come GPU multi-istanza o la condivisione del tempo solo se
specifichi esplicitamente
Selettore 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 fino alla versione 1.29 esclusa | Modello di fatturazione basato su nodi, indipendentemente dal fatto che tu abbia specificato la classe di computing Accelerator nei manifest dei tuoi pod. Puoi utilizzare funzionalità come GPU multi-istanza o la condivisione del tempo solo se
specifichi esplicitamente
Selettore di nodi Per maggiori dettagli, consulta la sezione "Pod con requisiti hardware specifici" in Prezzi di Kubernetes Engine. |
Versioni precedenti alla 1.28.6-gke.1095000 | Modello di fatturazione basato su pod. Gli addebiti vengono effettuati in base al pod GPU richieste di risorse. 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 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
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
Assicurati di avere un cluster GKE Autopilot eseguire una delle seguenti versioni:
- Classe di calcolo dell'acceleratore: qualsiasi versione di patch 1.28 che inizia con
1.28.6-gke.1095000
- 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 di patch 1.28 che inizia con
1.28.6-gke.1095000
Assicurati di avere quote sufficienti per le GPU disponibili nel tuo progetto. Devi avere un numero sufficiente di video Quota GPU di Compute Engine per i modelli di GPU che vuoi creare in ogni regione. Se hai bisogno di una quota GPU aggiuntiva, richiedi la quota GPU.
Limitazioni
- GPU con condivisione del tempo e Sono disponibili GPU a più istanze con Autopilot su GKE versione 1.29.3-gke.1093000 e in un secondo momento.
- La disponibilità delle GPU dipende dalla regione Google Cloud della tua modalità Autopilot cluster e la tua quota di GPU. Per trovare un modello GPU per regione o zona, consulta Disponibilità di regioni e zone GPU.
- Per le GPU NVIDIA A100 (80 GB), viene addebitato un prezzo fisso per le unità SSD locali ai nodi, indipendentemente dal fatto che i pod utilizzino o meno quella capacità.
- Per le versioni GKE precedenti alla 1.29.2-gke.1355000, se richiedi esplicitamente un specifico esistente per il tuo pod, quest'ultimo deve consumare tutta la GPU risorse sul nodo. Ad esempio, se il nodo esistente ha 8 GPU e I container del pod richiedono un totale di 4 GPU; Autopilot rifiuta il pod.
- Per GKE versione 1.29.2-gke.1355000 o successive, se vuoi più pod GPU
per rientrare in un singolo nodo, la somma delle richieste GPU per i pod deve essere minore o uguale al numero di risorse GPU collegate a quel nodo. Ad esempio, un nodo con un valore
gke-accelerator-count
di 4 potrebbe ospitare fino a quattro pod che richiedono una GPU ciascuno.
Posizionare 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 con GPU singola, quindi il deployment di un pod per nodo sprecherebbe le altre GPU su quella macchina.
- Hai carichi di lavoro GPU che devono essere eseguiti sullo stesso host
In queste situazioni, consigliamo di utilizzare tutte le GPU sul nodo verificando che la somma delle richieste di risorse GPU dei pod sul nodo sia uguale al numero di GPU collegate al nodo.
Richiedi GPU nei container
Per richiedere risorse GPU per i container, aggiungi i seguenti campi alle
la specifica del pod.
A seconda dei requisiti del carico di lavoro, puoi omettere il campo
Selettore cloud.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 GPU. Valori consentiti sono le seguenti:nvidia-h100-80gb
: NVIDIA H100 (80 GB) (disponibile solo con la classe di calcolo Accelerator)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 per il collegamento al nodo. Deve essere maggiore o uguale aGPU_QUANTITY
e a quantità GPU supportata per il tipo di GPU selezionato. Se ometti questo nodeSelector, Autopilot inserisce un pod su ogni GPU nodo.GPU_QUANTITY
: il numero di GPU da al container. Deve essere minore o uguale aGPU_COUNT
e a quantità GPU supportata per il tipo di GPU selezionato.
Per dettagli su come ti viene addebitato l'utilizzo degli acceleratori in Autopilot consulta la sezione Prezzi.
Devi specificare sia il tipo di GPU e la quantità di GPU nel pod e la specifica del prodotto. Se ometti uno di questi valori, Autopilot rifiuta all'interno del pod.
Quando esegui il deployment di questo manifest, Autopilot installa automaticamente driver NVIDIA predefiniti per la versione GKE del nodo. Nella versione 1.29.2-gke.1108000 e successive, puoi scegliere di installare la versione del driver più recente Versione 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
: l'ultima versione del driver disponibile per la versione GKE del tuo nodo.
Richieste di CPU e memoria per i pod GPU Autopilot
Quando definisci i pod GPU, dovresti anche richiedere risorse di CPU e memoria in modo che che i container funzionino come previsto. Autopilot applica criteri I valori minimi, massimi e predefiniti di CPU e memoria si basano sul tipo di GPU e quantità. Se esegui più pod GPU su un singolo nodo, specifica la CPU e memoria, altrimenti il valore predefinito è l'intera capacità del nodo. Per maggiori dettagli, consulta Richieste di risorse in Autopilot.
La specifica del pod dovrebbe essere simile all'esempio seguente, 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 di CPU e memoria. Se ometti il parametro
limits
per CPU o memoria in GKE versione 1.29.2-gke.1060000 e
in seguito, GKE assegna ai pod la classe QoS Burstable
i tuoi pod eseguono burst su risorse inutilizzate dalla somma di richieste di risorse
nodo. Per ulteriori informazioni, vedi
Configura il bursting dei pod in GKE.
Richieste di archiviazione temporanea 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 dipende dal tipo e dalla quantità di GPU richieste dal pod. Puoi usare un SSD locale per l'archiviazione temporanea se si utilizzano GPU NVIDIA L4, la classe di calcolo Accelerator ed eseguire la patch GKE 1.28.6-gke.1369000 e successive 1.29.1-gke.1575000 e versioni successive.
Per utilizzare l'SSD locale per l'archiviazione temporanea, aggiungi
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
nodeSelettore al tuo
del carico di lavoro. Guarda il manifest di esempio in Utilizzare un ambiente temporaneo basato su SSD locali
spazio di archiviazione con Autopilot
cluster.
Le GPU NVIDIA H100 (80 GB) e NVIDIA A100 (80 GB) utilizzano sempre SSD locali
per l'archiviazione temporanea e non puoi specificare questo selettore di nodi per le GPU.
Verifica l'allocazione delle GPU
Per verificare che un carico di lavoro GPU di cui è stato eseguito il deployment disponga delle GPU richieste, esegui questo comando: :
kubectl describe node NODE_NAME
Sostituisci NODE_NAME
con il nome del nodo su cui viene eseguita
Il pod è stato pianificato.
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
...
...
Controlla la versione del driver GPU
Nei cluster Autopilot, GKE installa automaticamente NVIDIA su tutti i nodi GPU. Per trovare la versione del driver GKE installato nel cluster, esegui questo 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 il deployment del pod, si verifica quanto segue:
- Se non esiste alcun nodo GPU allocabile, Autopilot esegue il provisioning di una nuova GPU per pianificare il pod. Autopilot installa automaticamente per facilitare l'hardware.
- Aggiunte automaticamente da Autopilot incompatibilità dei nodi al nodo GPU e aggiunge le tolleranze corrispondenti al pod. In questo modo a GKE di pianificare altri pod sul nodo GPU.
Autopilot posiziona esattamente un pod GPU su ogni nodo GPU, nonché qualsiasi Carichi di lavoro gestiti da GKE in esecuzione su tutti i nodi e su qualsiasi DaemonSet configurato per tollerare tutte le incompatibilità dei nodi.
Esegui DaemonSet su ogni nodo
Potresti voler eseguire DaemonSet su ogni nodo, anche su quelli con incompatibilità applicate. Ad esempio, alcuni agenti di logging e monitoraggio devono essere eseguiti su ogni nodo in un cluster Kubernetes. Puoi configurare questi DaemonSet in modo da ignorare le incompatibilità dei nodi GKE posiziona questi carichi di lavoro su ogni nodo.
Per eseguire DaemonSet su ogni nodo nel tuo cluster, inclusi i nodi GPU, aggiungi la seguente tolleranza alla tua 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 DaemonSet su nodi GPU specifici nel tuo cluster, aggiungi quanto segue alla tua 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 nel target
nodi. Può corrispondere a uno dei seguenti:
nvidia-h100-80gb
: NVIDIA H100 (80 GB) (disponibile solo con la classe di calcolo Accelerator)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 le GPU ai container nei pod Autopilot per carichi di lavoro come:
- Inferenza del machine learning (ML)
- Addestramento ML
- Rendering
Quantità di GPU supportate
Quando richiedi GPU nella specifica dei pod, devi utilizzare quanto segue 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 |
Se richiedi una quantità di GPU non supportata per quel tipo, Autopilot rifiuta il pod.
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:
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, 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).
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 di GPU per carichi di lavoro batch con Dynamic Workload Scheduler.