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 i cluster bare metal creati con Google Distributed Cloud per l'utilizzo con le GPU NVIDIA.
L'operatore GPU NVIDIA utilizza l'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: il software 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 supportato con le 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 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 Google Cloud contenuti, consulta Ruoli e attività utente GKE comuni.
Prima di iniziare
Prima di eseguire i passaggi nelle sezioni seguenti, assicurati di avere a disposizione 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 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 CUDA utilizzata dalle applicazioni. Sono disponibili le seguenti opzioni di installazione dei 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 di sistema del tuo sistema operativo.
Utilizza le istruzioni nella Guida rapida all'installazione dei 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. Utilizza Helm per installare l'operatore GPU NVIDIA. Puoi eseguire i seguenti comandi per scaricare e installare lo strumento a riga di comando di 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
Installare e verificare l'operatore GPU NVIDIA
I seguenti passaggi ti guidano nell'installazione dell'operatore GPU NVIDIA sul cluster bare metal e ti aiutano a verificare che funzioni con le GPU:
Per i dispositivi GPU collegati 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 NVIDIAL'output è simile al seguente:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)Puoi utilizzare lo strumento a riga di comando dell'interfaccia di gestione del sistema NVIDIA (
nvidia-smi) su un determinato nodo per ottenere informazioni più dettagliate sui dispositivi GPU:nvidia-smiL'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 updateInstalla 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 \ --set cdi.enabled=true \ --set cdi.default=trueUtilizza il flag
--setper passare un insieme di coppie chiave-valore delimitate da virgole per specificare le opzioni di configurazione:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=true \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUEPer un elenco dettagliato delle opzioni di configurazione, consulta Opzioni di personalizzazione dei grafici comuni nella documentazione NVIDIA. Per informazioni sulla logistica dell'utilizzo del flag
--set, consulta Formato e limitazioni di--setnella documentazione di Helm.Disattiva l'installazione dei 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 ovviare a questo problema, puoi installare manualmente i driver GPU sui nodi ed eseguire il comando
helm installcon--set driver.enabled=falseper 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 cdi.enabled=true \ --set cdi.default=true \ --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
Allocatableper la risorsa nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Sostituisci
GPU_NODE_NAMEcon 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: 250Per 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 EOFSostituisci
CLUSTER_KUBECONFIGcon 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_KUBECONFIGL'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 l'operatore GPU NVIDIA con i cluster creati con Google Distributed Cloud, si applicano le seguenti limitazioni:
Se installi una versione recente dell'operatore GPU NVIDIA, le configurazioni di containerd applicate dall'operatore potrebbero essere sovrascritte durante gli aggiornamenti o gli upgrade del cluster o del pool di nodi.
Utilizza la Container Device Interface (CDI) per i carichi di lavoro GPU. Per le versioni precedenti di Google Distributed Cloud che utilizzano containerd 1.6, 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 dall'operatore GPU NVIDIA.
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 del runtimenvidia. Ripristina il fileconfig.tomldopo 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 per l'utilizzo delle GPU con Google Distributed Cloud, contatta l'assistenza clienti Google Cloud.
Per i 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.
La tua opinione è molto importante per noi.