Puoi attivare e gestire le risorse dell'unità di elaborazione grafica (GPU) sui tuoi container. Ad esempio, potresti preferire eseguire notebook di intelligenza artificiale (AI) e machine learning (ML) in un ambiente GPU. Il supporto GPU è abilitato per impostazione predefinita nell'appliance con air gap di Google Distributed Cloud (GDC).
Prima di iniziare
Per eseguire il deployment delle GPU nei container, devi disporre di quanto segue:
Il ruolo Amministratore spazio dei nomi (
namespace-admin
) per il deployment dei carichi di lavoro GPU nello spazio dei nomi del progetto.Il percorso kubeconfig per il cluster Kubernetes bare metal. Accedi e genera il file kubeconfig se non ne hai uno.
Configura un container per utilizzare le risorse GPU
Per utilizzare le GPU in un container, completa i seguenti passaggi:
Verifica che i nodi del cluster Kubernetes supportino l'allocazione delle risorse GPU:
kubectl describe nodes NODE_NAME
Sostituisci
NODE_NAME
con il nodo che gestisce le GPU che vuoi esaminare.L'output pertinente è simile al seguente snippet:
Capacity: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Allocatable: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
Aggiungi i campi
.containers.resources.requests
e.containers.resources.limits
alla specifica del container. Poiché il cluster Kubernetes è preconfigurato con macchine GPU, la configurazione è la stessa per tutti i carichi di lavoro:... containers: - name: CONTAINER_NAME image: CONTAINER_IMAGE resources: requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 ...
Sostituisci quanto segue:
CONTAINER_NAME
: il nome del container.CONTAINER_IMAGE
: l'immagine container per accedere alle macchine GPU. Devi includere il percorso e la versione del registro container dell'immagine, ad esempioREGISTRY_PATH/hello-app:1.0
.
I container richiedono anche autorizzazioni aggiuntive per accedere alle GPU. Per ogni container che richiede GPU, aggiungi le seguenti autorizzazioni alla specifica del container:
... securityContext: seLinuxOptions: type: unconfined_t ...
Applica il file manifest del contenitore:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG
Sostituisci quanto segue:
CONTAINER_MANIFEST_FILE
: il file YAML per la risorsa personalizzata del carico di lavoro del container.NAMESPACE
: lo spazio dei nomi del progetto in cui deployare i carichi di lavoro dei container.CLUSTER_KUBECONFIG
: il file kubeconfig per il cluster Kubernetes bare metal in cui stai eseguendo il deployment dei carichi di lavoro dei container.
Verifica che i pod siano in esecuzione e utilizzino le GPU:
kubectl get pods -A | grep CONTAINER_NAME \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG
L'output pertinente è simile al seguente snippet:
Port: 80/TCP Host Port: 0/TCP State: Running Ready: True Restart Count: 0 Limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1