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. 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 in Ihren Containern 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 an, je nachdem, welche Aufgabe Sie ausführen möchten:
- 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 den Namespace Ihres Projekts 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 den Namespace Ihres Projekts 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 IAM-Administrator des Projekts, 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 den Namespace Ihres Projekts 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 Datenebenen-APIs gewähren, die im Standardcluster gehostet werden. Diese Rolle ist an den Namespace Ihres Projekts 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 zu unterstützten 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 Infrastrukturcluster der Organisation 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 der Zielzone generiert haben, lesen Sie den Abschnitt 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. Die Namen der Ressourcen sind je nach Maschinenklasse unterschiedlich. Prüfen Sie die Zuweisung von GPU-Ressourcen, um die Namen der GPU-Ressourcen zu ermitteln.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 außerdem 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.
Zuweisung von GPU-Ressourcen prüfen
Verwenden Sie den folgenden Befehl, um die Zuweisung von GPU-Ressourcen 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.