L'aspetto Bring Your Own Node di Google Distributed Cloud (solo software) su bare metal ti consente di sfruttare l'hardware avanzato, incluse le macchine con GPU, per ottenere le migliori prestazioni e flessibilità per i tuoi cluster.
Questo documento descrive come installare e utilizzare NVIDIA GPU Operator per configurare i cluster bare metal creati con Google Distributed Cloud per l'utilizzo con le GPU NVIDIA.
L'operatore GPU NVIDIA utilizza Operator Framework per gestire i componenti software NVIDIA necessari per il provisioning e la gestione dei dispositivi GPU. Ti consigliamo di utilizzare l'operatore GPU NVIDIA per la seguente flessibilità e vantaggi:
Scelta del tipo di GPU: la versione solo software di Google Distributed Cloud è compatibile con un'ampia gamma di tipi di GPU supportati dall'operatore GPU NVIDIA più recente.
Scelta del sistema operativo supportato: i nodi worker del cluster possono utilizzare qualsiasi sistema operativo (OS) supportato con GPU NVIDIA e hai la possibilità di utilizzare i driver GPU preinstallati o l'installazione dinamica dei driver con l'operatore GPU NVIDIA.
Scelta dei modelli di deployment: puoi utilizzare le GPU NVIDIA su qualsiasi tipo di cluster con nodi worker: cluster utente, cluster autonomi o cluster ibride.
Questa pagina è rivolta agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica di base. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività comuni degli utenti di GKE Enterprise.
Prima di iniziare
Prima di eseguire i passaggi descritti nelle sezioni seguenti, assicurati di soddisfare i seguenti requisiti:
Cluster operativo: assicurati di avere un cluster bare metal funzionale creato con Google Distributed Cloud.
GPU NVIDIA: assicurati che le GPU NVIDIA siano installate sui nodi worker del cluster. La sezione seguente sull'installazione di NVIDIA GPU Operator include i passaggi per verificare che le GPU siano installate correttamente e riconosciute dal sistema operativo.
Versione del driver NVIDIA compatibile: la versione del driver NVIDIA in uso deve essere compatibile con la GPU, il sistema operativo e la versione CUDA utilizzata dalle applicazioni. Hai a disposizione le seguenti opzioni di installazione del driver NVIDIA:
Utilizza l'operatore GPU NVIDIA per installare la versione corretta del driver GPU NVIDIA come descritto nelle sezioni seguenti.
Utilizza il driver NVIDIA preinstallato nell'immagine del sistema operativo.
Segui le istruzioni riportate nella Guida di avvio rapido all'installazione del driver NVIDIA per installare manualmente il driver NVIDIA.
Helm versione 3.0.0 o successiva: installa l'interfaccia a riga di comando di Helm per la gestione dei pacchetti sulla workstation di amministrazione. Utilizza Helm per installare l'operatore GPU NVIDIA. Per scaricare e installare lo strumento a riga di comando Helm, puoi eseguire i seguenti comandi:
curl -fsSL -o get_helm.sh \ https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh \ ./get_helm.sh
Installa e verifica l'operatore GPU NVIDIA
I passaggi che seguono illustrano la procedura di installazione di NVIDIA GPU Operator sul tuo cluster bare metal e ti aiutano a verificare che funzioni con le tue GPU:
Per i dispositivi GPU collegati tramite Peripheral Component Interconnect Express (PCIe), esegui il seguente comando per ottenere un elenco dei bus PCI di sistema con "NVIDIA" nel nome:
sudo lspci | grep NVIDIA
L'output è simile al seguente:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
Puoi utilizzare lo strumento a riga di comando NVIDIA System Management Interface (
nvidia-smi
) su un determinato nodo per ottenere informazioni più dettagliate sui dispositivi GPU:nvidia-smi
L'output è simile al seguente:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Aggiungi il repository Helm di NVIDIA sulla workstation di amministrazione:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Installa l'operatore GPU NVIDIA.
Quando installi l'operatore GPU NVIDIA, sono disponibili tre varianti di comando di base:
Installa l'operatore GPU NVIDIA con la configurazione predefinita:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator
Utilizza il flag
--set
per passare un insieme di coppie chiave-valore separate da virgole per specificare le opzioni di configurazione:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUE
Per un elenco dettagliato delle opzioni di configurazione, consulta Opzioni di personalizzazione dei grafici comuni nella documentazione di NVIDIA. Per informazioni sulla gestione dell'
--set
, consulta Formato e limitazioni di--set
nella documentazione di Helm.Disattiva l'installazione del driver se hai già installato il driver GPU NVIDIA sui tuoi nodi:
Per impostazione predefinita, l'operatore GPU NVIDIA esegue il deployment del driver GPU più recente o specificato su tutti i nodi worker GPU del cluster. Per utilizzare il contenitore del driver GPU NVIDIA, è necessario che tutti i nodi worker con GPU eseguano la stessa versione del sistema operativo. Per aggirare il problema, puoi installare manualmente i driver GPU sui nodi ed eseguire il comando
helm install
con--set driver.enabled=false
per impedire a NVIDIA GPU Operator di eseguire il deployment dei driver.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set driver.enabled=false
Per scenari di deployment comuni e comandi di esempio, consulta Scenari di deployment comuni nella documentazione NVIDIA.
Verifica l'esportazione delle risorse GPU:
Dopo aver installato l'operatore GPU NVIDIA con un driver GPU e un plug-in del dispositivo in esecuzione correttamente, dovresti vedere che il conteggio delle GPU è configurato correttamente nel campo
Allocatable
per la risorsa del nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Sostituisci
GPU_NODE_NAME
con il nome della macchina del nodo con la GPU che stai testando.L'output è simile al seguente:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250
Per verificare che le GPU funzionino, esegui il seguente job GPU di esempio, che esegue il comando
nvidia-smi
:export NODE_NAME=GPU_NODE_NAME cat <<EOF | kubectl create --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: batch/v1 kind: Job metadata: name: test-job-gpu spec: template: spec: runtimeClassName: nvidia containers: - name: nvidia-test image: nvidia/cuda:12.0.0-base-ubuntu22.04 command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1 nodeSelector: kubernetes.io/hostname: ${NODE_NAME} restartPolicy: Never EOF
Sostituisci
CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster.Controlla i log per l'output del job di esempio:
kubectl logs job/test-job-gpu –kubeconfig=CLUSTER_KUBECONFIG
L'output è simile al seguente:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Limitazioni
Quando utilizzi NVIDIA GPU Operator con i cluster creati con Google Distributed Cloud, si applicano le seguenti limitazioni:
Se installi una versione recente di NVIDIA GPU Operator, le configurazioni di containerd applicate dall'operatore potrebbero essere sovrascritte durante gli aggiornamenti o gli upgrade del cluster o del pool di nodi.
Le versioni supportate di Google Distributed Cloud installano la release LTS di containerd 1.6, che non abilita l'interfaccia CDI (Container Device Interface). Se segui le istruzioni riportate in Supporto per l'interfaccia del dispositivo del contenitore nella documentazione di NVIDIA, il runtime
nvidia-cdi
potrebbe non funzionare. Il cluster dovrebbe comunque funzionare come previsto, ma alcune funzionalità CDI potrebbero non essere disponibile.I node pool del bilanciatore del carico eseguono automaticamente un job di aggiornamento ogni 7 giorni. Questo job sovrascrive le configurazioni di containerd, incluse quelle aggiunte dall'operatore GPU NVIDIA.
Best practice
Per ridurre al minimo i conflitti e i problemi con le configurazioni NVIDIA, ti consigliamo di seguire le seguenti precauzioni:
Esegui il backup del file di configurazione containerd,
/etc/containerd/config.toml
, prima di eseguire l'upgrade o l'aggiornamento del cluster o dei node pool. Questo file contiene la configurazione di runtime dinvidia
. Ripristina il fileconfig.toml
dopo il completamento dell'upgrade o dell'aggiornamento e riavvia containerd affinché le modifiche alla configurazione vengano applicate.Per evitare potenziali conflitti o problemi con la configurazione di containerd, non utilizzare i nodi GPU come nodi del bilanciatore del carico (
loadBalancer.nodePoolSpec
).
Richiedi assistenza
Se hai bisogno di ulteriore assistenza per l'utilizzo delle GPU con Google Distributed Cloud, contatta l'assistenza clienti Google Cloud.
Per problemi relativi alla configurazione o all'utilizzo dell'hardware GPU sul sistema operativo, consulta il tuo fornitore di hardware o, se applicabile, contatta direttamente l'assistenza NVIDIA.
Il tuo feedback è molto importante per noi.