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 l'operatore GPU NVIDIA per configurare 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 i seguenti vantaggi:
Scelta del tipo di GPU: Google Distributed Cloud solo software è compatibile con un'ampia gamma di tipi di GPU supportati dall'ultimo operatore GPU NVIDIA.
Scelta del sistema operativo supportato: i nodi worker del cluster possono utilizzare qualsiasi sistema operativo (SO) supportato con GPU NVIDIA e puoi utilizzare driver GPU preinstallati o l'installazione dinamica dei driver con NVIDIA GPU Operator.
Scelta dei modelli di deployment: puoi utilizzare le GPU NVIDIA su qualsiasi tipo di cluster con nodi worker: cluster utente, cluster autonomi o cluster ibridi.
Questa pagina è rivolta agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. 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 GKE.
Prima di iniziare
Prima di eseguire i passaggi nelle sezioni seguenti, assicurati di avere a portata di mano i seguenti requisiti:
Cluster operativo: assicurati di aver creato un cluster bare metal funzionale con Google Distributed Cloud.
GPU NVIDIA: assicurati che le GPU NVIDIA siano installate sui nodi worker del cluster. La seguente sezione per l'installazione dell'operatore GPU NVIDIA 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 che utilizzi deve essere compatibile con la GPU, il sistema operativo e la versione di CUDA utilizzata dalle tue 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 della guida rapida all'installazione del driver NVIDIA per installare manualmente il driver NVIDIA.
Helm versione 3.0.0 o successive: installa l'interfaccia a riga di comando di Helm per la gestione dei pacchetti sulla workstation di amministrazione. Utilizzi Helm per installare l'operatore GPU NVIDIA. Puoi eseguire i seguenti comandi per scaricare e installare lo strumento a riga di comando Helm:
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 seguenti passaggi ti guidano nell'installazione dell'operatore GPU NVIDIA sul tuo cluster bare metal e ti aiutano a verificare che funzioni con le tue GPU:
Per i dispositivi GPU connessi tramite Peripheral Component Interconnect Express (PCIe), esegui il seguente comando per ottenere un elenco di 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 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, esistono 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 trasmettere 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, vedi Opzioni comuni di personalizzazione dei grafici nella documentazione NVIDIA. Per informazioni sulla logistica dell'utilizzo del flag
--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 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 container del driver GPU NVIDIA, tutti i nodi worker con GPU devono eseguire la stessa versione del sistema operativo. Per risolvere il problema, puoi installare manualmente i driver GPU sui nodi ed eseguire il comando
helm install
con--set driver.enabled=false
per impedire all'operatore GPU NVIDIA 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, vedi Common Deployment Scenarios nella documentazione di NVIDIA.
Verifica l'esportazione delle risorse GPU:
Dopo l'installazione di NVIDIA GPU Operator 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 nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Sostituisci
GPU_NODE_NAME
con il nome della macchina 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 dell'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 dell'installazione di Google Distributed Cloud contengono la release LTS di containerd 1.6, che non attiva Container Device Interface (CDI). Se segui le istruzioni riportate in Supporto dell'interfaccia del dispositivo container nella documentazione NVIDIA, il runtime
nvidia-cdi
potrebbe non funzionare. Il cluster dovrebbe comunque funzionare come previsto, ma alcune funzionalità CDI potrebbero non essere disponibili.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 da NVIDIA GPU Operator.
Best practice
Per ridurre al minimo i conflitti e i problemi con le configurazioni NVIDIA, ti consigliamo di adottare le seguenti precauzioni:
Esegui il backup del file di configurazione di 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 diventino effettive.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 in merito all'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, rivolgiti al fornitore dell'hardware o, se applicabile, direttamente all'assistenza NVIDIA.
Il tuo feedback è molto importante per noi.