Sie können Grafikprozessoreinheiten (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. Zum Ausführen von GPU-Containerarbeitslasten benötigen Sie einen Kubernetes-Cluster, der GPU-Geräte unterstützt. Die GPU-Unterstützung ist standardmäßig für Kubernetes-Cluster aktiviert, für die GPU-Maschinen bereitgestellt wurden.
Dieses Dokument richtet sich an Anwendungsentwickler in der Gruppe der Anwendungsoperatoren, die für die Erstellung von Anwendungsarbeitslasten für ihre Organisation verantwortlich sind. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.
Hinweis
Zum Ausführen der Aufgaben in diesem Dokument müssen Sie die erforderlichen Berechtigungen anfordern und Ihre Umgebung vorbereiten.
IAM-Rollen anfordern
Sie benötigen bestimmte Rollen, um die Berechtigungen zu erhalten, die zum Bereitstellen von GPUs für Ihre Container erforderlich sind. Die erforderlichen Rollen hängen davon ab, ob Sie in einem freigegebenen Cluster mit Organisationsbereich oder in einem Standardcluster mit Projektbereich arbeiten. Weitere Informationen finden Sie unter Kubernetes-Cluster konfigurationen.
Rollen für freigegebene Cluster
Wenn Sie GPU-fähige Knotenpools prüfen und GPU-Arbeitslasten in einem freigegebenen Cluster bereitstellen möchten, fordern Sie die folgenden Rollen basierend auf der auszuführenden Aufgabe an:
- Administrator des Nutzerclusters (
user-cluster-admin): Erstellen, löschen, bearbeiten oder ansehen der Ressourcen eines freigegebenen Clusters, der auf dem API-Server der Verwaltung gehostet wird. Mit dieser Rolle können Sie GPUs im freigegebenen Cluster prüfen. Sie ist nicht an Ihren Projekt-Namespace gebunden. - Namespace-Administrator (
namespace-admin): Erstellen, löschen, bearbeiten oder ansehen der Ressourcen eines freigegebenen Clusters, der im Projekt gehostet wird. Mit dieser Rolle können Sie GPU-Arbeitslasten in einem Standardcluster bereitstellen. Sie ist an Ihren Projekt-Namespace gebunden.
Rollen für Standardcluster
Wenn Sie GPU-fähige Knotenpools prüfen und GPU-Arbeitslasten in einem Standardcluster bereitstellen möchten, bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die folgenden Rollen zuzuweisen:
- Administrator des Standardclusters (
standard-cluster-admin): Erstellen, löschen, bearbeiten oder ansehen der Ressourcen eines Standardclusters, der auf dem API-Server der Verwaltung gehostet wird. Mit dieser Rolle können Sie GPUs im freigegebenen Cluster prüfen. Sie ist an Ihren Projekt-Namespace gebunden. - Clusterentwickler (
cluster-developer): Erstellen, löschen, bearbeiten oder ansehen eines Standardclusters. Mit dieser Rolle können Sie GPU-Arbeitslasten in einem Standardcluster bereitstellen, indem Sie Zugriff auf die Data-Plane-APIs gewähren, die im Standardcluster gehostet werden. Diese Rolle ist an Ihren Projekt-Namespace gebunden.
Umgebung vorbereiten
Wenn Sie einen Container für die Verwendung von GPU-Ressourcen konfigurieren möchten, benötigen Sie die folgenden Ressourcen:
Einen Kubernetes-Cluster mit einer GPU-Maschinenklasse. Weitere Informationen finden Sie im Abschnitt Unterstützte GPU-Karten.
Suchen Sie den Namen des Kubernetes-Clusters oder fragen Sie ein Mitglied der Gruppe der Plattformadministratoren nach dem Clusternamen.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Kubernetes-Cluster.
Ersetzen Sie in dieser Anleitung
KUBERNETES_CLUSTER_KUBECONFIGdurch den kubeconfig-Pfad des Kubernetes-Clusters.Melden Sie sich an und generieren Sie die kubeconfig-Datei für den zonalen API-Server der Verwaltung, auf dem Ihr Kubernetes-Cluster gehostet wird. Ersetzen Sie in dieser Anleitung
MANAGEMENT_API_SERVERdurch diesen Pfad.Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Cluster der Organisationsinfrastruktur in der Zone, in der Ihre GPUs gehostet werden sollen.
Container für die Verwendung von GPU-Ressourcen konfigurieren
So verwenden Sie diese GPUs in einem Container:
Prüfen Sie, ob Ihr Kubernetes-Cluster Knotenpools mit GPU-Unterstützung hat:
kubectl describe clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERErsetzen Sie Folgendes:
KUBERNETES_CLUSTER_NAME: der Name des Clusters.KUBERNETES_CLUSTER_NAMESPACE: der Namespace des Clusters. Verwenden Sie für freigegebene Cluster den Namespaceplatform. Verwenden Sie für Standardcluster den Projekt-Namespace des Clusters.MANAGEMENT_API_SERVER: der kubeconfig-Pfad des zonalen API-Servers, auf dem der Kubernetes-Cluster gehostet wird. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, lesen Sie Anmelden.
Die relevante Ausgabe sieht etwa so aus:
# Several lines of code are omitted here. spec: nodePools: - machineTypeName: a2-ultragpu-1g-gdc nodeCount: 2 # Several lines of code are omitted here.Eine vollständige Liste der unterstützten GPU-Maschinentypen und MIG-Profile (Multi-Instance GPU) finden Sie unter Maschinentypen für Clusterknoten.
Fügen Sie der Containerspezifikation die Felder
.containers.resources.requestsund.containers.resources.limitshinzu. Jeder Ressourcenname ist je nach Maschinenklasse unterschiedlich. Prüfen Sie die GPU-Ressourcenzuordnung, um die Namen der GPU-Ressourcen zu finden.Die folgende Containerspezifikation fordert beispielsweise drei Partitionen einer GPU von einem
a2-ultragpu-1g-gdc-Knoten an:# Several lines of code are omitted here. containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 # Several lines of code are omitted here.Container benötigen auch zusätzliche Berechtigungen für den Zugriff auf GPUs. Fügen Sie der Containerspezifikation für jeden Container, der GPUs anfordert, die folgenden Berechtigungen hinzu:
# Several lines of code are omitted here. securityContext: seLinuxOptions: type: unconfined_t # Several lines of code are omitted here.Wenden Sie die Container-Manifestdatei an:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGErsetzen Sie Folgendes:
CONTAINER_MANIFEST_FILE: die YAML-Manifestdatei für Ihre Containerarbeitslast.KUBERNETES_CLUSTER_NAMESPACE: der Namespace des Clusters. Verwenden Sie für freigegebene Cluster den Namespaceplatform. Verwenden Sie für Standardcluster den Projekt-Namespace des Clusters.KUBERNETES_CLUSTER_KUBECONFIG: der kubeconfig-Pfad des Clusters.
GPU-Ressourcenzuordnung prüfen
Verwenden Sie den folgenden Befehl, um die GPU-Ressourcenzuordnung zu prüfen:
kubectl describe nodes NODE_NAME --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGErsetzen Sie Folgendes:
NODE_NAME: der Knoten, der die zu prüfenden GPUs verwaltet.KUBERNETES_CLUSTER_KUBECONFIG: der kubeconfig-Pfad des Clusters.
Die relevante Ausgabe sieht etwa so aus:
# Several lines of code are omitted here. Capacity: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 # Several lines of code are omitted here.
Notieren Sie sich die Ressourcennamen für Ihre GPUs. Sie müssen sie angeben, wenn Sie einen Container für die Verwendung von GPU-Ressourcen konfigurieren.