GPU-Containerarbeitslasten bereitstellen

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

GPU-Containerarbeitslasten bereitstellen

Die für KI optimierte GDC Sandbox-SKU umfasst vier NVIDIA H100 80 GB HBM3-GPUs im org-infra-Cluster. Auf diese GPUs kann über den 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 KI-optimierten SKU für GDC Sandbox sind mit einem vorkonfigurierten Projekt verknüpft: sandbox-gpu-project. Sie müssen Ihren Container mit diesem Projekt bereitstellen, um die GPUs nutzen zu können.

Hinweise

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

    • Konfigurieren und authentifizieren Sie sich mit der gdcloud-Befehlszeile.
    • Generieren Sie die kubeconfig-Datei für den Infrastrukturcluster der Organisation und weisen Sie ihren 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
    

Container für die Nutzung 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-Projekt können insgesamt bis zu 4 GPUs für das gesamte 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. 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
    
  2. Wenden Sie die Container-Manifestdatei an:

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