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. Per eseguire carichi di lavoro dei container GPU, devi disporre di un cluster Kubernetes che supporti i dispositivi GPU. Il supporto GPU è abilitato per impostazione predefinita per i cluster Kubernetes per cui sono state sottoposte a provisioning macchine GPU.
Prima di iniziare
Per eseguire il deployment delle GPU nei container, devi disporre di quanto segue:
Un cluster Kubernetes con una classe di macchine GPU. Consulta la sezione Schede GPU supportate per scoprire le opzioni che puoi configurare per le macchine del cluster.
Il ruolo Visualizzatore nodi cluster utente (
user-cluster-node-viewer
) per controllare le GPU e il ruolo Amministratore spazio dei nomi (namespace-admin
) per eseguire il deployment dei carichi di lavoro GPU nello spazio dei nomi del progetto.Il percorso kubeconfig per il server API di gestione zonale che ospita il tuo cluster Kubernetes. Accedi e genera il file kubeconfig se non ne hai uno.
Il percorso kubeconfig per il cluster di infrastruttura dell'organizzazione nella zona destinata a ospitare le GPU. Accedi e genera il file kubeconfig se non ne hai uno.
Il nome del cluster Kubernetes. Se non le hai, chiedi queste informazioni all'amministratore della piattaforma.
Il percorso kubeconfig del cluster Kubernetes. Accedi e genera il file kubeconfig se non ne hai uno.
Configura un container per utilizzare le risorse GPU
Per utilizzare queste GPU in un container, completa i seguenti passaggi:
Verifica che il cluster Kubernetes disponga di node pool che supportano le GPU:
kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \ --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
L'output pertinente è simile al seguente snippet:
Spec: Machine Class Name: a2-ultragpu-1g-gdc Node Count: 2
Per un elenco completo dei tipi di macchine GPU supportati e dei profili GPU multi-istanza (MIG), consulta Tipi di macchine dei nodi del cluster.
Aggiungi i campi
.containers.resources.requests
e.containers.resources.limits
alla specifica del contenitore. Ogni nome di risorsa è diverso a seconda della classe della macchina. Controlla l'allocazione delle risorse GPU per trovare i nomi delle risorse GPU.Ad esempio, la seguente specifica del container richiede tre partizioni di una GPU da un nodo
a2-ultragpu-1g-gdc
:... containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 ...
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 KUBERNETES_CLUSTER_KUBECONFIG
Controlla l'allocazione delle risorse GPU
Per controllare l'allocazione delle risorse GPU, utilizza il seguente comando:
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/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
Prendi nota dei nomi delle risorse per le GPU. Devi specificarli quando configuri un container per utilizzare le risorse GPU.