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_NAME
Ersetzen Sie
NODE_NAME
durch 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: 1
Fügen Sie der Containerspezifikation die Felder
.containers.resources.requests
und.containers.resources.limits
hinzu. 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_KUBECONFIG
Ersetzen 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_KUBECONFIG
Die 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