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_NAMESostituisci
NODE_NAMEcon 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: 1Aggiungi i campi
.containers.resources.requestse.containers.resources.limitsalla 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_KUBECONFIGSostituisci 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_KUBECONFIGL'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