Mit der Bring Your Own Node-Funktion der Distributed Cloud-Software nur für Bare Metal können Sie Ihre fortschrittliche Hardware, einschließlich Maschinen mit GPUs, nutzen, um die beste Leistung und Flexibilität für Ihre Cluster zu erzielen.
In diesem Dokument wird beschrieben, wie Sie den NVIDIA GPU Operator installieren und verwenden, um mit Google Distributed Cloud erstellte Bare-Metal-Cluster für die Verwendung mit NVIDIA-GPUs einzurichten.
Der NVIDIA GPU-Operator verwendet das Operator Framework, um die NVIDIA-Softwarekomponenten zu verwalten, die zum Bereitstellen und Verwalten von GPU-Geräten erforderlich sind. Wir empfehlen die Verwendung des NVIDIA GPU-Operators aus folgenden Gründen:
Auswahl des GPU-Typs: Die Distributed Cloud-Software ist nur mit einer Vielzahl von GPU-Typen kompatibel, die vom neuesten NVIDIA GPU Operator unterstützt werden.
Auswahl des unterstützten Betriebssystems: Für Cluster-Worker-Knoten kann jedes unterstützte Betriebssystem mit NVIDIA-GPUs verwendet werden. Sie haben die Möglichkeit, vorinstallierte GPU-Treiber oder die dynamische Treiberinstallation mit dem NVIDIA GPU Operator zu verwenden.
Auswahl von Bereitstellungsmodellen: Sie können NVIDIA-GPUs in jedem Clustertyp mit Worker-Knoten verwenden: Nutzercluster, Standalone-Cluster oder Hybridcluster.
Diese Seite richtet sich an IT-Administratoren und ‑Betreiber, die den Lebenszyklus der zugrunde liegenden technischen Infrastruktur verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Hinweis
Bevor Sie die Schritte in den folgenden Abschnitten ausführen, müssen Sie die folgenden Voraussetzungen erfüllen:
Betriebscluster: Sie benötigen einen funktionsfähigen Bare-Metal-Cluster, der mit Google Distributed Cloud erstellt wurde.
NVIDIA-GPUs: Prüfen Sie, ob die NVIDIA-GPUs auf den Worker-Knoten Ihres Clusters installiert sind. Der folgende Abschnitt zur Installation des NVIDIA GPU-Operators enthält Schritte, mit denen Sie prüfen können, ob die GPUs richtig installiert sind und von Ihrem Betriebssystem erkannt werden.
Kompatible NVIDIA-Treiberversion: Die von Ihnen verwendete NVIDIA-Treiberversion muss mit Ihrer GPU, Ihrem Betriebssystem und der CUDA-Version kompatibel sein, die von Ihren Anwendungen verwendet wird. Sie haben die folgenden Optionen für die Installation von NVIDIA-Treibern:
Verwenden Sie den NVIDIA GPU Operator, um die richtige Version des NVIDIA GPU-Treibers zu installieren, wie in den folgenden Abschnitten beschrieben.
Verwenden Sie den NVIDIA-Treiber, der in Ihrem Betriebssystem-Image vorinstalliert ist.
Folgen Sie der Anleitung im NVIDIA Driver Installation Quickstart Guide, um den NVIDIA-Treiber manuell zu installieren.
Helm-Version 3.0.0 oder höher: Installieren Sie die Helm-Befehlszeile für die Paketverwaltung auf Ihrer Administrator-Workstation. Sie verwenden Helm, um den NVIDIA GPU-Operator zu installieren. Mit den folgenden Befehlen können Sie das Helm-Befehlszeilentool herunterladen und installieren:
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
NVIDIA GPU-Operator installieren und überprüfen
Die folgenden Schritte führen Sie durch die Installation des NVIDIA GPU-Operators auf Ihrem Bare-Metal-Cluster und helfen Ihnen, zu bestätigen, dass er mit Ihren GPUs funktioniert:
Führen Sie für GPU-Geräte, die über Peripheral Component Interconnect Express (PCIe) verbunden sind, den folgenden Befehl aus, um eine Liste der System-PCI-Busse mit „NVIDIA“ im Namen zu erhalten:
sudo lspci | grep NVIDIADie Ausgabe sieht etwa so aus:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)Mit dem Befehlszeilentool
nvidia-smi(NVIDIA System Management Interface) können Sie auf einem bestimmten Knoten detailliertere Informationen zu den GPU-Geräten abrufen:nvidia-smiDie Ausgabe sieht etwa so aus:
+---------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------+Fügen Sie das NVIDIA Helm-Repository auf der Administrator-Workstation hinzu:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo updateInstallieren Sie den NVIDIA GPU-Operator.
Wenn Sie den NVIDIA GPU-Operator installieren, gibt es drei grundlegende Befehlsvariationen:
Installieren Sie den NVIDIA GPU-Operator mit der Standardkonfiguration:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=trueMit dem Flag
--setkönnen Sie ein durch Kommas getrenntes Set von Schlüssel/Wert-Paaren übergeben, um Konfigurationsoptionen anzugeben: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_VALUEEine detaillierte Liste der Konfigurationsoptionen finden Sie in der NVIDIA-Dokumentation unter Common Chart Customization Options. Informationen zur Logistik der Verwendung des Flags
--setfinden Sie in der Helm-Dokumentation unter The Format and Limitations of--set.Deaktivieren Sie die Treiberinstallation, wenn Sie den NVIDIA-GPU-Treiber bereits auf Ihren Knoten installiert haben:
Standardmäßig stellt der NVIDIA GPU Operator den neuesten oder angegebenen GPU-Treiber auf allen GPU-Worker-Knoten im Cluster bereit. Dazu müssen alle Worker-Knoten mit GPUs dieselbe Betriebssystemversion ausführen, um den NVIDIA-GPU-Treibercontainer verwenden zu können. Um dieses Problem zu umgehen, können Sie GPU-Treiber manuell auf Knoten installieren und den Befehl
helm installmit--set driver.enabled=falseausführen, um zu verhindern, dass der NVIDIA GPU-Operator Treiber bereitstellt.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
Häufige Bereitstellungsszenarien und Beispielbefehle finden Sie in der NVIDIA-Dokumentation unter Common Deployment Scenarios.
GPU-Ressourcenexport prüfen:
Nachdem der NVIDIA GPU Operator mit einem GPU-Treiber und Geräte-Plug-in installiert wurde und ordnungsgemäß ausgeführt wird, sollte die GPU-Anzahl im Feld
Allocatablefür die Knotenressource richtig konfiguriert sein.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Ersetzen Sie
GPU_NODE_NAMEdurch den Namen des Knotencomputers mit der GPU, die Sie testen.Die Ausgabe sieht etwa so aus:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250Führen Sie den folgenden GPU-Beispieljob aus, um zu prüfen, ob die GPUs funktionieren. Dabei wird der Befehl
nvidia-smiausgeführt: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 EOFErsetzen Sie
CLUSTER_KUBECONFIGdurch den Pfad der kubeconfig-Datei des Clusters.Prüfen Sie die Logs für die Beispieljobausgabe:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIGDie Ausgabe sieht etwa so aus:
+---------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------+
Beschränkungen
Die folgenden Einschränkungen gelten, wenn Sie den NVIDIA GPU-Operator mit Clustern verwenden, die mit Google Distributed Cloud erstellt wurden:
Wenn Sie eine aktuelle Version von NVIDIA GPU Operator installieren, werden die vom Operator angewendeten containerd-Konfigurationen möglicherweise bei Cluster- oder Knotenpool-Updates oder ‑Upgrades überschrieben.
Verwenden Sie das Container Device Interface (CDI) für GPU-Arbeitslasten. Bei früheren Versionen von Google Distributed Cloud, in denen containerd 1.6 verwendet wird, sind einige CDI-Funktionen möglicherweise nicht verfügbar.
Für Load Balancer-Knotenpools wird automatisch alle 7 Tage ein Update-Job ausgeführt. Mit diesem Job werden containerd-Konfigurationen überschrieben, einschließlich der vom NVIDIA GPU Operator hinzugefügten.
Best Practices
Um Konflikte und Probleme mit Ihren NVIDIA-Konfigurationen zu minimieren, empfehlen wir Ihnen, die folgenden Vorsichtsmaßnahmen zu ergreifen:
Sichern Sie die containerd-Konfigurationsdatei
/etc/containerd/config.toml, bevor Sie den Cluster oder die Knotenpools aktualisieren oder upgraden. Diese Datei enthält dienvidia-Laufzeitkonfiguration. Stellen Sie die Dateiconfig.tomlnach dem erfolgreichen Upgrade oder Update wieder her und starten Sie containerd neu, damit alle Konfigurationsänderungen wirksam werden.Um potenzielle Konflikte oder Probleme mit der containerd-Konfiguration zu vermeiden, sollten Sie GPU-Knoten nicht als Load-Balancer-Knoten (
loadBalancer.nodePoolSpec) verwenden.
Support anfragen
Wenn Sie weitere Unterstützung bei der Verwendung von GPUs mit Google Distributed Cloud benötigen, wenden Sie sich an den Cloud Customer Care.
Bei Problemen mit der Einrichtung oder Verwendung von GPU-Hardware auf Ihrem Betriebssystem wenden Sie sich bitte an Ihren Hardwareanbieter oder gegebenenfalls direkt an den NVIDIA-Support.
Wir wissen Ihr Feedback sehr zu schätzen.