Sie können GPU-Ressourcen (Graphics Processing Unit) für Ihre Container aktivieren und verwalten. Möglicherweise bevorzugen Sie es, Notebooks für künstliche Intelligenz (KI) und maschinelles Lernen (ML) in einer GPU-Umgebung auszuführen. Die GPU-Unterstützung ist in der GDC-Appliance (Google Distributed Cloud) mit Air Gap standardmäßig aktiviert.
Hinweise
Damit Sie GPUs für Ihre Container bereitstellen können, benötigen Sie Folgendes:
Die Rolle „Namespace-Administrator“ (
namespace-admin) zum Bereitstellen von GPU-Arbeitslasten in Ihrem Projekt-Namespace.Der kubeconfig-Pfad für den Bare-Metal-Kubernetes-Cluster. Melden Sie sich an und generieren Sie die kubeconfig-Datei, falls Sie noch keine haben.
Container für die Nutzung von GPU-Ressourcen konfigurieren
Führen Sie die folgenden Schritte aus, um GPUs in einem Container zu verwenden:
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.
Für Container sind außerdem zusätzliche Berechtigungen für den Zugriff auf GPUs erforderlich. 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 Ihrer 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 Container-Workloads 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