Mit dem Bring-your-own-Node-Ansatz 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, da er folgende Vorteile bietet:
Auswahl des GPU-Typs: Die reine Software von Google Distributed Cloud 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-Arbeitsknoten 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 der Bereitstellungsmodelle: Sie können NVIDIA-GPUs in jedem 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 Enterprise-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: Achten Sie darauf, dass die NVIDIA-GPUs auf Ihren Cluster-Arbeitsknoten installiert sind. Im folgenden Abschnitt zur Installation des NVIDIA GPU-Betriebssystems finden Sie Schritte, mit denen Sie prüfen können, ob die GPUs ordnungsgemäß installiert sind und von Ihrem Betriebssystem erkannt werden.
Kompatible NVIDIA-Treiberversion: Die verwendete NVIDIA-Treiberversion muss mit Ihrer GPU, Ihrem Betriebssystem und der CUDA-Version Ihrer Anwendungen kompatibel sein. Sie haben folgende Möglichkeiten, den NVIDIA-Treiber zu installieren:
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 in Ihrem Betriebssystem-Image vorinstallierten NVIDIA-Treiber.
Folgen Sie der Anleitung im Schnellstartleitfaden zur Installation von NVIDIA-Treibern, 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. Sie können die folgenden Befehle ausführen, um das Helm-Befehlszeilentool herunterzuladen und zu 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 prüfen
In den folgenden Schritten erfahren Sie, wie Sie den NVIDIA GPU Operator auf Ihrem Bare-Metal-Cluster installieren und prüfen, ob er mit Ihren GPUs funktioniert:
Führen Sie für GPU-Geräte, die über PCIe (Peripheral Component Interconnect Express) verbunden sind, den folgenden Befehl aus, um eine Liste der System-PCI-Busse mit dem Namen „NVIDIA“ zu erhalten:
sudo lspci | grep NVIDIA
Die Ausgabe sieht in etwa so aus:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
Mit dem Befehlszeilentool „NVIDIA System Management Interface“ (
nvidia-smi
) auf einem bestimmten Knoten können Sie detailliertere Informationen zu den GPU-Geräten abrufen:nvidia-smi
Die Ausgabe sieht in 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.
Wenn Sie den NVIDIA GPU-Operator installieren, gibt es drei grundlegende Befehlsvarianten:
Installieren Sie den NVIDIA GPU-Operator mit der Standardkonfiguration:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator
Verwenden Sie das Flag
--set
, um ein kommagetrenntes Set von Schlüssel/Wert-Paaren zur Angabe von Konfigurationsoptionen zu übergeben: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 (Gängige Optionen zur Diagrammpersonalisierung). Informationen zur Verwendung des
--set
-Flags finden Sie in der Helm-Dokumentation unter Format und Einschränkungen von--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-Arbeitsknoten im Cluster bereit. Dazu muss auf allen Worker-Knoten mit GPUs dieselbe Betriebssystemversion ausgeführt werden, um den NVIDIA-GPU-Treibercontainer verwenden zu können. Sie können dieses Problem umgehen, indem 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
Gängige Bereitstellungsszenarien und Beispielbefehle finden Sie in der NVIDIA-Dokumentation unter Common Deployment Scenarios (Gängige Bereitstellungsszenarien).
Prüfen Sie den Export von GPU-Ressourcen:
Nachdem der NVIDIA GPU-Operator mit einem GPU-Treiber installiert und das Geräte-Plug-in ordnungsgemäß funktioniert, sollte die GPU-Anzahl im Feld
Allocatable
für die Knotenressource korrekt konfiguriert sein.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Ersetzen Sie
GPU_NODE_NAME
durch den Namen des Knotens, auf dem sich die getestete GPU befindet.Die Ausgabe sieht in 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 Beispiel-GPU-Job 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 Beispieljobausgabe:
kubectl logs job/test-job-gpu –kubeconfig=CLUSTER_KUBECONFIG
Die Ausgabe sieht in 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 des NVIDIA GPU-Betriebssystems installieren, werden die vom Operator angewendeten Containerd-Konfigurationen möglicherweise bei Aktualisierungen oder Upgrades von Clustern oder Knotenpools überschrieben.
In unterstützten Versionen von Google Distributed Cloud wird die LTS-Version 1.6 von containerd installiert, bei der die Container Device Interface (CDI) nicht aktiviert ist. Wenn Sie der Anleitung unter Support for Container Device Interface (Unterstützung für die Container-Geräteschnittstelle) in der NVIDIA-Dokumentation folgen, funktioniert die
nvidia-cdi
-Laufzeit möglicherweise nicht. Der Cluster sollte weiterhin wie erwartet funktionieren, einige CDI-Funktionen sind jedoch möglicherweise nicht verfügbar.In Load Balancer-Knotenpools wird alle sieben Tage automatisch ein Aktualisierungsjob ausgeführt. Dieser Job überschreibt Containerd-Konfigurationen, einschließlich der vom NVIDIA GPU Operator hinzugefügten.
Best Practices
Um Konflikte und Probleme mit Ihren NVIDIA-Konfigurationen zu minimieren, empfehlen wir die folgenden Vorsichtsmaßnahmen:
Sichern Sie die Containerd-Konfigurationsdatei
/etc/containerd/config.toml
, bevor Sie den Cluster oder die Knotenpools aktualisieren. Diese Datei enthält dienvidia
-Laufzeitkonfiguration. Stellen Sie die Dateiconfig.toml
wieder her, nachdem das Upgrade oder Update abgeschlossen ist, und starten Sie containerd neu, damit alle Konfigurationsänderungen wirksam werden.Verwenden Sie keine GPU-Knoten als Load Balancer-Knoten (
loadBalancer.nodePoolSpec
), um potenzielle Konflikte oder Probleme mit der containerd-Konfiguration zu vermeiden.
Support anfragen
Wenn Sie weitere Unterstützung bei der Verwendung von GPUs mit der Google Distributed Cloud benötigen, wenden Sie sich an den Cloud Customer Care.
Bei Problemen mit der Einrichtung oder Verwendung von GPU-Hardware in Ihrem Betriebssystem wenden Sie sich an Ihren Hardwareanbieter oder gegebenenfalls direkt an den NVIDIA-Support.
Vielen Dank für Ihr Feedback.