Sie können Grafikprozessor-Ressourcen (GPU) in Ihren Containern aktivieren und verwalten. Beispielsweise möchten Sie Notebooks für künstliche Intelligenz (KI) und maschinelles Lernen (ML) möglicherweise 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 Sie zum Bereitstellen von GPUs in Ihren Containern benötigen. Welche Rollen Sie benötigen, hängt davon ab, ob Sie in einem freigegebenen Cluster auf Organisationsebene oder in einem Standardcluster auf Projektebene arbeiten. Weitere Informationen finden Sie unter Kubernetes-Clusterkonfigurationen.
Freigegebene Clusterrollen
Wenn Sie GPU-unterstützte Knotenpools prüfen und GPU-Arbeitslasten in einem freigegebenen Cluster bereitstellen möchten, fordern Sie die folgenden Rollen an, je nachdem, welche Aufgabe ausgeführt werden soll:
- Nutzercluster-Administrator (
user-cluster-admin): Erstellen, Löschen, Bearbeiten oder Aufrufen der Ressourcen eines freigegebenen Clusters, der auf dem Verwaltungs-API-Server 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 Aufrufen 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.
Standardclusterrollen
Bitten Sie Ihren IAM-Projektadministrator, Ihnen die folgenden Rollen zuzuweisen, um GPU-unterstützte Knotenpools zu prüfen und GPU-Arbeitslasten in einem Standardcluster bereitzustellen:
- Standardcluster-Administrator (
standard-cluster-admin): Erstellen, Löschen, Bearbeiten oder Aufrufen der Ressourcen eines Standardclusters, der auf dem Management API-Server gehostet wird. Mit dieser Rolle können Sie GPUs im freigegebenen Cluster prüfen. Sie ist an Ihren Projekt-Namespace gebunden. - Cluster-Entwickler (
cluster-developer): Standardcluster erstellen, löschen, bearbeiten oder ansehen. Mit dieser Rolle können Sie GPU-Arbeitslasten in einem Standardcluster bereitstellen, indem Sie Zugriff auf die im Standardcluster gehosteten APIs der Datenebene gewähren. 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:
Ein 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 Plattformadministratorgruppe nach dem Clusternamen.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Kubernetes-Cluster.
Ersetzen Sie
KUBERNETES_CLUSTER_KUBECONFIGin dieser Anleitung durch den kubeconfig-Pfad des Kubernetes-Clusters.Melden Sie sich an und generieren Sie die kubeconfig-Datei für den zonalen Verwaltungs-API-Server, der Ihren Kubernetes-Cluster hostet. Verwenden Sie diesen Pfad, um
MANAGEMENT_API_SERVERin dieser Anleitung zu ersetzen.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
Führen Sie die folgenden Schritte aus, um diese GPUs in einem Container zu verwenden:
Prüfen Sie, ob Ihr Kubernetes-Cluster Knotenpools hat, die GPUs unterstützen:
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 den Abschnitt Anmelden.
Die relevante Ausgabe sieht in 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 Ihrer Containerspezifikation die Felder
.containers.resources.requestsund.containers.resources.limitshinzu. Jeder Ressourcenname unterscheidet sich je nach Maschinenklasse. Prüfen Sie die GPU-Ressourcenzuweisung, um die Namen Ihrer GPU-Ressourcen zu ermitteln.In der folgenden Containerspezifikation werden beispielsweise drei Partitionen einer GPU von einem
a2-ultragpu-1g-gdc-Knoten angefordert:# 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 für jeden Container, der GPUs anfordert, die folgenden Berechtigungen zur Containerspezifikation 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-Ressourcenzuweisung prüfen
Verwenden Sie den folgenden Befehl, um die GPU-Ressourcenzuweisung zu prüfen:
kubectl describe nodes NODE_NAME --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGErsetzen Sie Folgendes:
NODE_NAME: der Knoten, der die GPUs verwaltet, die Sie prüfen möchten.KUBERNETES_CLUSTER_KUBECONFIG: der kubeconfig-Pfad des Clusters.
Die relevante Ausgabe sieht in 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.