Mit der Funktion Bring Your Own Node von Google Distributed Cloud (nur Software) auf 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: Google Distributed Cloud (nur Software) ist 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 für jeden Clustertyp mit Worker-Knoten verwenden: Nutzercluster, eigenständige 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.
Hinweise
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 in 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 NVIDIA
Die 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-smi
Die 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 update
Installieren Sie den NVIDIA GPU-Operator.
Bei der Installation des NVIDIA GPU Operator 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
Mit dem Flag
--set
können Sie eine durch Kommas getrennte Gruppe von Schlüssel/Wert-Paaren übergeben, um Konfigurationsoptionen anzugeben: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
Eine detaillierte Liste der Konfigurationsoptionen finden Sie in der NVIDIA-Dokumentation unter Common Chart Customization Options (Häufige Optionen zur Diagrammanpassung). Informationen zur Logistik der Verwendung des Flags
--set
finden 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-Treiber-Container verwenden zu können. Um dieses Problem zu umgehen, können Sie GPU-Treiber manuell auf Knoten installieren und den Befehl
helm install
mit--set driver.enabled=false
ausfü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 driver.enabled=false
Häufige Bereitstellungsszenarien und Beispielbefehle finden Sie in der NVIDIA-Dokumentation unter Common Deployment Scenarios.
Export von GPU-Ressourcen prüfen:
Nachdem der NVIDIA GPU Operator mit einem GPU-Treiber und einem Geräte-Plug-in installiert wurde und ordnungsgemäß ausgeführt wird, sollte die GPU-Anzahl im Feld
Allocatable
für die Knotenressource richtig konfiguriert sein.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Ersetzen Sie
GPU_NODE_NAME
durch 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: 250
Führen Sie den folgenden GPU-Beispieljob aus, um zu prüfen, ob die GPUs funktionieren. Dabei wird der Befehl
nvidia-smi
ausgefü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 EOF
Ersetzen Sie
CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Clusters.Prüfen Sie die Logs auf die Ausgabe des Beispieljobs:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIG
Die 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
Wenn Sie den NVIDIA GPU-Operator mit Clustern verwenden, die mit Google Distributed Cloud erstellt wurden, gelten die folgenden Einschränkungen:
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.
In unterstützten Versionen von Google Distributed Cloud wird die LTS-Version 1.6 von containerd installiert, in der das Container Device Interface (CDI) nicht aktiviert ist. Wenn Sie der Anleitung unter Support for Container Device Interface in der NVIDIA-Dokumentation folgen, funktioniert die
nvidia-cdi
-Laufzeit möglicherweise nicht. Der Cluster sollte weiterhin wie erwartet funktionieren, aber einige CDI-Funktionen sind möglicherweise nicht verfügbar.Für Load Balancer-Knotenpools wird automatisch alle 7 Tage ein Updatejob ausgeführt. Bei 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 upgraden oder aktualisieren. Diese Datei enthält dienvidia
-Laufzeitkonfiguration. Stellen Sie die Dateiconfig.toml
wieder her, nachdem das Upgrade oder Update erfolgreich abgeschlossen wurde, 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 im Zusammenhang mit der Einrichtung oder Verwendung von GPU-Hardware in Ihrem Betriebssystem wenden Sie sich an Ihren Hardwareanbieter oder gegebenenfalls direkt an den NVIDIA-Support.
Wir wissen Ihr Feedback sehr zu schätzen.