GPU-Arbeitslasten in Autopilot bereitstellen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite erfahren Sie, wie Sie Hardwarebeschleuniger (GPUs) in Ihren Autopilot-Arbeitslasten (Google Kubernetes Engine) anfordern.

Preise

Preisinformationen für die GPU, die bei Autopilot verfügbar ist, finden Sie auf der GKE-Preisseite. Sie können GPUs in Spot Pods anfordern.

GPUs in regulären Autopilot-Pods sind für Rabatte für zugesicherte Nutzung (CUDs) berechtigt.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren.

Beschränkungen

  • Sie können Autoshare-GPUs und GPUs mit mehreren Instanzen nicht mit Autopilot verwenden.
  • Die GPU-Verfügbarkeit hängt von der Google Cloud-Region Ihres Autopilot-Clusters und Ihrem GPU-Kontingent ab.
  • Wenn Sie explizit einen bestimmten vorhandenen GPU-Knoten für Ihren Pod anfordern, muss der Pod alle GPU-Ressourcen auf dem Knoten nutzen. Wenn der vorhandene Knoten beispielsweise acht GPUs hat und die Container Ihres Pods insgesamt vier GPUs anfordern, lehnt Autopilot den Pod ab.

GPUs in Containern anfordern

Fügen Sie der Pod-Spezifikation die folgenden Felder hinzu, um GPU-Ressourcen für Ihre Container anzufordern:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: GPU_TYPE
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
        nvidia.com/gpu: GPU_QUANTITY

Dabei gilt:

  • GPU_TYPE: Der Typ der GPU-Hardware. Zulässige Werte:
    • nvidia-tesla-t4
    • nvidia-tesla-a100
  • GPU_QUANTITY: Die Anzahl der GPUs, die dem Container zugewiesen werden sollen. Muss eine unterstützte GPU-Menge für den ausgewählten GPU-Typ sein.

Sie müssen den GPU-Typ und die GPU-Anzahl in Ihrer Pod-Spezifikation angeben. Wenn Sie keinen dieser Werte weglassen, lehnt Autopilot Ihren Pod ab.

CPU- und Speicheranforderungen für Autopilot-GPU-Pods

Wenn Sie Ihre GPU-Pods definieren, sollten Sie auch CPU- und Speicherressourcen anfordern, damit Ihre Container wie erwartet funktionieren. Autopilot erzwingt bestimmte CPU- und Arbeitsspeicher-Minimal- und Maximalwerte sowie Standardwerte basierend auf dem GPU-Typ und der Menge. Weitere Informationen finden Sie unter Ressourcenanfragen in Autopilot.

Ihre Pod-Spezifikation sollte ähnlich wie im folgenden Beispiel aussehen, in dem vier T4-GPUs angefordert werden:

apiVersion: v1
kind: Pod
metadata:
  name: t4-pod
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
  containers:
  - name: t4-container-1
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
        nvidia.com/gpu: 3
      requests:
        cpu: "54"
        memory: "54Gi"
  - name: t4-container-2
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
        nvidia.com/gpu: 1
      requests:
        cpu: "18"
        memory: "18Gi"

GPU-Zuweisung prüfen

Führen Sie den folgenden Befehl aus, um zu prüfen, ob eine bereitgestellte GPU-Arbeitslast die angeforderten GPUs enthält:

kubectl describe node NODE_NAME

Ersetzen Sie NODE_NAME durch den Namen des Knotens, auf dem der Pod geplant wurde.

Die Ausgabe sieht etwa so aus:


apiVersion: v1
kind: Node
metadata:
...
  labels:
    ...
    cloud.google.com/gke-accelerator: nvidia-tesla-t4
    cloud.google.com/gke-accelerator-count: "1"
    cloud.google.com/machine-family: custom-48
    ...
...

Funktionsweise der GPU-Zuordnung in Autopilot

Nachdem Sie einen GPU-Typ und eine Menge für die Container in einem Pod angefordert und den Pod bereitgestellt haben, geschieht Folgendes:

  1. Wenn kein zuweisbarer GPU-Knoten vorhanden ist, stellt Autopilot einen neuen GPU-Knoten bereit, um den Pod zu planen. Autopilot installiert automatisch die NVIDIA-Treiber, um die Hardware zu vereinfachen.
  2. Autopilot fügt dem GPU-Knoten die Knotenmarkierungen und die entsprechenden Toleranzen für den Pod hinzu. Dadurch wird verhindert, dass GKE andere Pods auf dem GPU-Knoten plant.

Autopilot platziert genau einen GPU-Pod auf jedem GPU-Knoten sowie alle von GKE verwalteten Arbeitslasten, die auf allen Knoten ausgeführt werden, und alle DaemonSets, die Sie so konfigurieren, dass alle Knotenmarkierungen toleriert werden.

DaemonSets auf jedem Knoten ausführen

Möglicherweise möchten Sie DaemonSets auf jedem Knoten ausführen, auch auf Knoten mit angewendeten Markierungen. Beispielsweise müssen einige Logging- und Monitoring-Agents auf jedem Knoten im Cluster ausgeführt werden. Sie können diese DaemonSets so konfigurieren, dass Knotenmarkierungen ignoriert werden, damit GKE diese Arbeitslasten auf jedem Knoten platziert.

Wenn Sie DaemonSets auf jedem Knoten im Cluster ausführen möchten, einschließlich GPU-Knoten, fügen Sie der Spezifikation die folgende Toleranz hinzu:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: logging-agent
spec:
  tolerations:
  - key: ""
    operator: "Exists"
    effect: ""
  containers:
  - name: logging-agent-v1
    image: IMAGE_PATH

Fügen Sie Ihrer Spezifikation Folgendes hinzu, um DaemonSets auf bestimmten GPU-Knoten in Ihrem Cluster auszuführen:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: logging-agent
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: "GPU_TYPE"
  tolerations:
  - key: ""
    operator: "Exists"
    effect: ""
  containers:
  - name: logging-agent-v1
    image: IMAGE_PATH

Ersetzen Sie GPU_TYPE durch den GPU-Typ in Ihren Zielknoten. Kann entweder nvidia-tesla-t4 oder nvidia-tesla-a100 sein.

GPU-Anwendungsfälle in Autopilot

Sie können Containern in Autopilot-Pods GPUs zuweisen, um Arbeitslasten wie die folgenden zu vereinfachen:

  • Inferenz für maschinelles Lernen (ML)
  • ML-Training
  • Rendering

Unterstützte GPU-Mengen

Wenn Sie GPUs in Ihrer Pod-Spezifikation anfordern, müssen Sie die folgenden Mengen basierend auf dem GPU-Typ verwenden:

GPU-Mengen
NVIDIA T4
nvidia-tesla-t4
1, 2, 4
NVIDIA A100
nvidia-tesla-a100
1, 2, 4, 8, 16

Wenn Sie eine GPU-Menge anfordern, die für diesen Typ nicht unterstützt wird, lehnt Autopilot Ihren Pod ab.

GPU-Knoten überwachen

Wenn für Ihren GKE-Cluster Systemmesswerte aktiviert sind, stehen in Cloud Monitoring die folgenden Messwerte zur Überwachung der GPU-Arbeitslastleistung zur Verfügung:

  • Arbeitszyklus (container/accelerator/duty_cycle): Prozentsatz der Zeit im vergangenen Beispielzeitraum (10 Sekunden), während dessen der Beschleuniger aktiv verarbeitet wurde. Liegt zwischen 1 und 100.
  • Arbeitsspeichernutzung (container/accelerator/memory_used): Menge des dem Beschleuniger zugeteilten Arbeitsspeichers in Byte.
  • Speicherkapazität (container/accelerator/memory_total): Gesamter Arbeitsspeicher des Beschleunigers in Byte.

Weitere Informationen zum Überwachen Ihrer Cluster und der zugehörigen Ressourcen finden Sie unter Monitoring.

Nutzungsmesswerte ansehen

Sie können Ihre GPU-Nutzungsmesswerte für Arbeitslasten im Dashboard Arbeitslasten der Google Cloud Console aufrufen.

Gehen Sie zum Abrufen der GPU-Nutzung Ihrer Arbeitslast so vor:

  1. Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf.

    Zu Arbeitslasten
  2. Wählen Sie eine Arbeitslast aus.

Im Dashboard „Arbeitslasten” werden die Arbeitsspeichernutzung und -kapazität der GPUs sowie der GPU-Arbeitszyklus in Form von Diagrammen angezeigt.

Nächste Schritte