GPU-Container-Arbeitslasten verwalten

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. Wenn Sie GPU-Containerarbeitslasten ausführen möchten, 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.

Hinweise

Damit Sie GPUs für Ihre Container bereitstellen können, benötigen Sie Folgendes:

  • Ein Kubernetes-Cluster mit einer GPU-Maschinenklasse. Im Abschnitt Unterstützte GPU-Karten finden Sie Optionen für die Konfiguration Ihrer Clustermaschinen.

  • Die Rolle „User Cluster Node Viewer“ (user-cluster-node-viewer) zum Prüfen von GPUs und die Rolle „Namespace Admin“ (namespace-admin) zum Bereitstellen von GPU-Arbeitslasten im Namespace Ihres Projekts.

  • Der kubeconfig-Pfad für den zonalen Management-API-Server, auf dem Ihr Kubernetes-Cluster gehostet wird. Melden Sie sich an und generieren Sie die kubeconfig-Datei, falls Sie noch keine haben.

  • Der kubeconfig-Pfad für den Infrastrukturcluster der Organisation in der Zone, in der Ihre GPUs gehostet werden sollen. Melden Sie sich an und generieren Sie die kubeconfig-Datei, falls Sie noch keine haben.

  • Der Name des Kubernetes-Clusters. Wenn Sie diese Informationen nicht haben, fragen Sie Ihren Plattformadministrator.

  • Der kubeconfig-Pfad des Kubernetes-Clusters. 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 diese GPUs in einem Container zu verwenden:

  1. Prüfen Sie, ob Ihr Kubernetes-Cluster Knotenpools mit GPU-Unterstützung hat:

    kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
    

    Die relevante Ausgabe sieht etwa so aus:

    Spec:
      Machine Class Name:  a2-ultragpu-1g-gdc
      Node Count:          2
    

    Eine vollständige Liste der unterstützten GPU-Maschinentypen und MIG-Profile (Multi-Instance GPU) finden Sie unter Maschinentypen für Clusternknoten.

  2. Fügen Sie die Felder .containers.resources.requests und .containers.resources.limits zur Containerspezifikation hinzu. Jeder Ressourcenname ist je nach Maschinenklasse unterschiedlich. Prüfen Sie die Zuweisung Ihrer GPU-Ressourcen, um die Namen Ihrer GPU-Ressourcen zu ermitteln.

    Die folgende Containerspezifikation fordert beispielsweise drei Partitionen einer GPU von einem a2-ultragpu-1g-gdc-Knoten an:

     ...
     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
     ...
    
  3. 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
    ...
    
  4. Wenden Sie die Container-Manifestdatei an:

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

GPU-Ressourcenzuordnung prüfen

  • Verwenden Sie den folgenden Befehl, um die Zuweisung von GPU-Ressourcen zu prüfen:

    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/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    

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.