Sie können Grafikprozessoren (Graphics Processing Units, GPUs) in Ihren Containern aktivieren und verwalten. Möglicherweise möchten Sie beispielsweise Notebooks für künstliche Intelligenz (KI) und maschinelles Lernen (ML) in einer GPU-Umgebung ausführen. Die GPU-Unterstützung ist in der Google Distributed Cloud (GDC) mit Air Gap standardmäßig aktiviert.
Hinweis
Zum Ausführen der Aufgaben in diesem Dokument müssen Sie die erforderlichen Berechtigungen anfordern und Ihre Umgebung vorbereiten.
IAM-Rollen anfordern
Wenn Sie die Ressourcen in einem Kubernetes-Cluster erstellen, löschen, bearbeiten oder ansehen möchten, bitten Sie den IAM-Administrator Ihrer Organisation, Ihnen die Rolle Namespace-Administrator (namespace-admin) in Ihrem Projekt-Namespace zuzuweisen. Mit dieser Rolle können Sie GPU-Arbeitslasten in Ihrem Projekt-Namespace bereitstellen.
Umgebung vorbereiten
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Bare-Metal-Kubernetes-Cluster.
Ersetzen Sie in dieser Anleitung
CLUSTER_KUBECONFIGdurch den kubeconfig-Pfad des Kubernetes-Clusters.
Container für die Verwendung von GPU-Ressourcen konfigurieren
So verwenden Sie GPUs in einem Container:
Prüfen Sie, ob die Knoten Ihres Kubernetes-Clusters die Zuweisung von GPU-Ressourcen unterstützen:
kubectl describe nodes NODE_NAMEErsetzen Sie
NODE_NAMEdurch den Knoten, der die GPUs verwaltet, die Sie prüfen möchten.Die relevante Ausgabe sieht etwa so aus:
Capacity: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Allocatable: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1Fügen Sie der Containerspezifikation die Felder
.containers.resources.requestsund.containers.resources.limitshinzu. Da Ihr Kubernetes-Cluster mit GPU-Maschinen vorkonfiguriert ist, ist die Konfiguration für alle Arbeitslasten gleich:... containers: - name: CONTAINER_NAME image: CONTAINER_IMAGE resources: requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 ...Ersetzen Sie Folgendes:
CONTAINER_NAME: Der Name des Containers.CONTAINER_IMAGE: Das Container-Image für den Zugriff auf die GPU-Maschinen. Sie müssen den Container Registry-Pfad und die Version des Images angeben, z. B.REGISTRY_PATH/hello-app:1.0.
Container benötigen auch zusätzliche Berechtigungen für den Zugriff auf GPUs. Fügen Sie für jeden Container, der GPUs anfordert, der Containerspezifikation die folgenden Berechtigungen hinzu:
... securityContext: seLinuxOptions: type: unconfined_t ...Wenden Sie die Container-Manifestdatei an:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIGErsetzen Sie Folgendes:
CONTAINER_MANIFEST_FILE: Die YAML-Datei für die benutzerdefinierte Ressource der Containerarbeitslast.NAMESPACE: Der Projekt-Namespace, in dem die Containerarbeitslasten bereitgestellt werden sollen.CLUSTER_KUBECONFIG: Die kubeconfig-Datei für den Bare-Metal-Kubernetes-Cluster, in dem Sie Containerarbeitslasten bereitstellen.
Prüfen Sie, ob Ihre Pods ausgeführt werden und die GPUs verwenden:
kubectl get pods -A | grep CONTAINER_NAME \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIGDie relevante Ausgabe sieht etwa so aus:
Port: 80/TCP Host Port: 0/TCP State: Running Ready: True Restart Count: 0 Limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1