GPU-Containerarbeitslasten bereitstellen

Auf dieser Seite wird beschrieben, wie Sie GPU-Containerarbeitslasten in der Google Distributed Cloud (GDC) Sandbox AI Optimized SKU bereitstellen.

GPU-Containerarbeitslasten bereitstellen

Die GDC Sandbox AI Optimized SKU enthält vier NVIDIA H100 80 GB HBM3-GPUs im Cluster der Organisation. Auf diese GPUs kann mit dem Ressourcennamen nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3 zugegriffen werden. In diesem Abschnitt wird beschrieben, wie Sie eine Containerkonfiguration aktualisieren, um diese GPUs zu verwenden.

Die GPUs in der GDC Sandbox AI Optimized SKU sind mit einem vorkonfigurierten Projekt verknüpft: "sandbox-gpu-project". Sie müssen Ihren Container mit diesem Projekt im Cluster org-1-infra bereitstellen, um die GPUs zu verwenden.

Hinweis

  • Wenn Sie Befehle für den Cluster der Organisation ausführen möchten, stellen Sie sicher, dass Sie die kubeconfig-Datei des Clusters org-1-infra haben, wie unter Mit Clustern arbeiten beschrieben:

    • Konfigurieren und authentifizieren Sie sich mit der gdcloud-Befehlszeile.
    • Generieren Sie die kubeconfig-Datei für den Cluster der Organisation und weisen Sie den Pfad der Umgebungsvariable KUBECONFIG zu.
  • Zum Ausführen der Arbeitslasten muss Ihnen die Rolle sandbox-gpu-admin zugewiesen sein. Standardmäßig ist die Rolle dem Nutzer platform-admin zugewiesen. Sie können die Rolle anderen Nutzern zuweisen, indem Sie sich als platform-admin anmelden und den folgenden Befehl ausführen:

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    
  • Damit Netzwerk-Traffic zu Ihrem Container zugelassen wird, benötigen Sie eine Netzwerkrichtlinie für das Projekt. Weitere Informationen finden Sie unter Netzwerkrichtlinie erstellen.

Container für die Verwendung von GPU-Ressourcen konfigurieren

  1. Fügen Sie der Containerspezifikation die Felder .containers.resources.requests und .containers.resources.limits hinzu, um GPUs für die Arbeitslast anzufordern. Alle Container im sandbox-gpu-project können insgesamt bis zu vier GPUs im gesamten Projekt anfordern. Im folgenden Beispiel wird eine GPU als Teil der Containerspezifikation angefordert.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
              requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
              limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
    
  1. Container benötigen außerdem zusätzliche Berechtigungen für den Zugriff auf GPUs. Fügen Sie für jeden Container, der GPUs anfordert, einen .containers.securityContext hinzu, der dem Container securityContext.seLinuxOptions vom Typ unconfined_t gewährt.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
              requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
              limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
            securityContext:
              seLinuxOptions:
                type: unconfined_t
    
  2. Wenden Sie die Container-Manifestdatei an:

    kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \
        -n sandbox-gpu-project \
        --kubeconfig ${KUBECONFIG}