GPUs in Google Kubernetes Engine (GKE)


Auf dieser Seite erfahren Sie, wie Sie GPUs in Google Kubernetes Engine (GKE) anfordern, darunter:

In GKE hängt die Anfrage von GPU-Hardware davon ab, ob Sie Autopilot oder Standard verwenden. In Autopilot fordern Sie GPU-Hardware an, indem Sie GPU-Ressourcen in Ihren Arbeitslasten angeben. In GKE Standard können Sie GPU-Hardware an Knoten in Ihren Clustern anhängen und dann GPU-Ressourcen zu containerisierten Arbeitslasten zuweisen, die auf diesen Knoten ausgeführt werden. Eine detaillierte Anleitung zum Anhängen und Verwenden von GPUs in Ihren Arbeitslasten finden Sie unter GPU-Arbeitslasten auf Autopilot bereitstellen oder GPUs in Standardknotenpools ausführen.

Die in GKE verfügbare GPU-Hardware ist eine Teilmenge der Compute Engine-GPUs für Compute-Arbeitslasten. Die spezifische Hardware, die verfügbar ist, hängt von der Compute Engine-Region oder -Zone Ihres Clusters ab. Informationen zur spezifischen Verfügbarkeit finden Sie unter GPU-Regionen und -Zonen.

GKE bietet einige GPU-spezifische Features zur Verbesserung der effizienten GPU-Ressourcennutzung von Arbeitslasten, die auf Ihren Knoten ausgeführt werden, darunter Zeitfreigabe, GPUs mit mehreren Instanzen und GPUs mit mehreren Instanzen GPUs mit NVIDIA MPS.

GPU-Kontingent planen

Ihr GPU-Kontingent entspricht der maximalen Zahl der GPUs, die in Ihrem Google Cloud-Projekt ausgeführt werden können. Damit Sie GPUs in Ihren GKE-Clustern verwenden können, muss in Ihrem Projekt ein ausreichend hohes GPU-Kontingent vorhanden sein.

Ihr GPU-Kontingent sollte mindestens der Gesamtzahl der GPUs entsprechen, die Sie in Ihrem Cluster ausführen möchten. Wenn Sie Cluster-Autoscaling aktivieren, sollte das angeforderte GPU-Kontingent mindestens der maximalen Anzahl von Knoten in Ihrem Cluster multipliziert mit der Anzahl von GPUs pro Knoten entsprechen.

Wenn Sie beispielsweise drei Knoten mit jeweils zwei GPUs verwenden möchten, ist das für Ihr Projekt erforderliche GPU-Kontingent sechs.

Folgen Sie der Anleitung unter Höheres Kontingentlimit anfordern, um ein höheres GPU-Kontingent anzufordern. Verwenden Sie dabei gpus als Messwert.

GPU-Unterstützung mit Autopilot oder Standard auswählen

GPUs sind in Autopilot- und Standard-Clustern verfügbar. Wir empfehlen die Verwendung von Autopilot-Clustern für eine vollständig verwaltete Kubernetes-Umgebung. In Autopilot verwaltet GKE die Treiberinstallation, Knotenskalierung, Pod-Isolierung und Knotenbereitstellung.

Die folgende Tabelle bietet einen Überblick über die Unterschiede zwischen der Unterstützung von Autopilot- und Standard-GPUs:

Beschreibung Autopilot Standard
GPU-Hardware anfordern Geben Sie GPU-Ressourcen in Ihren Arbeitslasten an. Hängen Sie GPU-Hardware an Knoten in Ihren Clustern an und weisen Sie dann GPU-Ressourcen den containerisierten Arbeitslasten zu, die auf diesen Knoten ausgeführt werden.
GPU-Hardwareverfügbarkeit
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40 GB
  • NVIDIA A100 80 GB
  • NVIDIA H100 80 GB
Alle von Compute Engine unterstützten GPU-Typen
GPU auswählen Sie fordern GPU-Menge und -Typ in Ihrer Arbeitslastspezifikation an. Standardmäßig installiert Autopilot den Standardtreiber für diese GKE-Version und verwaltet Ihre Knoten. Informationen zum Auswählen einer bestimmten Treiberversion in Autopilot finden Sie unter NVIDIA-Treiberauswahl für Autopilot-GPU-Pods. Führen Sie die unter GPUs in Standardknotenpools ausführen beschriebenen Schritte aus:
  1. Erstellen Sie einen Knotenpool mit dem spezifischen GPU-Typ und dem entsprechenden Compute Engine-Maschinentyp und wählen Sie einen Treiber zur Installation aus.
  2. Installieren Sie GPU-Treiber manuell auf den Knoten, falls Sie die automatische Installation nicht verwendet haben.
  3. Fordern Sie GPU-Mengen in der Pod-Spezifikation an.
GPU-Auslastung verbessern
Sicherheit GPUs mit GKE Sandbox GPUs mit GKE Sandbox
Preise Autopilot GPU Pod-Preise Compute Engine-GPU-Preise

Informationen zum Auswählen des GKE-Betriebsmodus, der für Ihre Arbeitslasten am besten geeignet ist, finden Sie unter GKE-Betriebsmodus auswählen.

Ressourcennutzung mithilfe von GPU-Features in GKE optimieren

Standardmäßig unterstützt Kubernetes die Zuweisung von GPUs als ganze Einheiten nur für Container. GKE bietet jedoch zusätzliche Features, mit denen Sie die Ressourcennutzung Ihrer GPU-Arbeitslasten optimieren können.

Die folgenden Features sind in GKE verfügbar, um die Menge der nicht ausgelasteten GPU-Ressourcen zu reduzieren:

GPU-Features
GPUs mit mehreren Instanzen

Verfügbar auf: Autopilot und Standard

Teilen Sie eine einzelne GPU in bis zu sieben hardwaregetrennte Instanzen auf, die sich Containern auf einem Knoten als einzelne GPUs zuweisen lassen. Jeder zugewiesene Container erhält die für diese Instanz verfügbaren Ressourcen.

GPUs mit Zeitfreigabe

Verfügbar auf: Autopilot und Standard

Eine einzelne GPU als mehrere Einheiten für mehrere Container auf einem Knoten darstellen. Der GPU-Treiberkontext wechselt und weist jedem zugewiesenen Container nach Bedarf die vollständigen GPU-Ressourcen zu.

NVIDIA MPS

Verfügbar auf: Standard

Nutzen Sie eine einzelne physische NVIDIA-GPU für mehrere Container. NVIDIA MPS ist eine alternative, binär kompatible Implementierung der CUDA API, die dafür entwickelt wurde, kooperative Multiprozess-CUDA-Anwendungen transparent für die gleichzeitige Ausführung auf einem einzelnen GPU-Gerät zu ermöglichen.

Auf NVIDIA CUDA-X-Bibliotheken für CUDA-Anwendungen zugreifen

CUDA® ist die NVIDIA-Plattform für paralleles Computing und das Programmiermodell für GPUs. Zur Verwendung von CUDA-Anwendungen muss das verwendete Image die Bibliotheken haben. Zum Hinzufügen der NVIDIA CUDA-X-Bibliotheken verwenden Sie eine der folgenden Methoden:

  • Empfohlen: Verwenden Sie ein Image mit den vorinstallierten NVIDIA CUDA-X-Bibliotheken. Sie können beispielsweise Deep Learning Container verwenden. In diesen Containern werden die wichtigsten Data-Science-Frameworks, die NVIDIA CUDA-X-Bibliotheken und die Tools vorinstalliert. Alternativ enthält das NVIDIA CUDA-Image nur die NVIDIA CUDA-X-Bibliotheken.
  • Erstellen und verwenden Sie ein eigenes Image. Fügen Sie in diesem Fall folgende Werte in die LD_LIBRARY_PATH-Umgebungsvariable in Ihrer Containerspezifikation ein:
    1. /usr/local/cuda-CUDA_VERSION/lib64: Der Speicherort der NVIDIA CUDA-X-Bibliotheken auf dem Knoten. Ersetzen Sie CUDA_VERSION durch die verwendete CUDA-X-Image-Version. Einige Versionen enthalten auch Dienstprogramme zur Fehlerbehebung in /usr/local/nvidia/bin. Weitere Informationen finden Sie im NVIDIA CUDA-Image auf DockerHub.
    2. /usr/local/nvidia/lib64: Der Speicherort der NVIDIA-Gerätetreiber.

Informationen zum Prüfen der für Ihre CUDA-Version erforderlichen Mindest-GPU-Treiberversion finden Sie unter CUDA-Toolkit und kompatible Treiberversionen. Prüfen Sie, ob die auf den Knoten ausgeführte GKE-Patchversion eine GPU-Treiberversion enthält, die mit der ausgewählten CUDA-Version kompatibel ist. Eine Liste der GPU-Treiberversionen, die mit der GKE-Version verknüpft sind, finden Sie auf der entsprechenden Seite von Container-Optimized OS, die in der Tabelle der aktuellen GKE-Versionen verknüpft ist.

In Autopilot-Clustern verwaltet GKE die Auswahl und Installation der Treiberversion.

GPU-Knoten überwachen

Wenn für Ihren GKE-Cluster Systemmesswerte aktiviert sind, stehen in Cloud Monitoring folgende 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.

Sie können vordefinierte Dashboards verwenden, um Ihre Cluster mit GPU-Knoten zu überwachen. Weitere Informationen finden Sie unter Beobachtbarkeitsmesswerte aufrufen. Allgemeine Informationen zum Monitoring Ihrer Cluster und der zugehörigen Ressourcen finden Sie unter Beobachtbarkeit für GKE.

Nutzungsmesswerte für Arbeitslasten 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.

NVIDIA Data Center GPU Manager-Messwerte (DCGM) ansehen

Sie können NVIDIA DCGM-Messwerte mit Google Cloud Managed Service for Prometheus erfassen und visualisieren. Für Standardcluster müssen Sie die NVIDIA-Treiber installieren. Für Autopilot-Cluster installiert GKE die Treiber.

Eine Anleitung zum Bereitstellen von DCGM und dem Prometheus DCGM-Exporter finden Sie in der Google Cloud Observability-Dokumentation unter NVIDIA Data Center GPU Manager (DCGM).

Störungen aufgrund von Knotenwartungen verarbeiten

Die GKE-Knoten, auf denen die GPUs gehostet werden, unterliegen Wartungsereignissen oder anderen Störungen, die zum Herunterfahren des Knotens führen können.

In GKE-Clustern auf deren Steuerungsebene, die Version 1.29.1-gke.1425000 oder höher ausgeführt wird, können Sie die Unterbrechung von Arbeitslasten reduzieren. Konfigurieren Sie dazu GKE so, dass Ihre Arbeitslasten ordnungsgemäß beendet werden.

Sie können GKE so konfigurieren, dass ein SIGTERM-Signal an Pods auf Knoten gesendet wird, die bald heruntergefahren werden. Dadurch haben sie einen Kulanzzeitraum, um alle laufenden Arbeiten vor der Bereinigung abzuschließen. Geben Sie im Feld spec.terminationGracePeriodSeconds des Pod-Manifests die Anzahl der Sekunden bis zu maximal 3600 Sekunden (eine Stunde) an. GKE unternimmt alles, um diese Pods ordnungsgemäß zu beenden und die von Ihnen definierte Beendigungsaktion auszuführen, z. B. das Speichern eines Trainingsstatus.

GKE berücksichtigt jede Konfiguration von bis zu 60 Minuten für die Einstellungen PodDisruptionBudget oder terminationGracePeriodSeconds. Weitere Informationen, einschließlich der Interaktion dieser beiden Einstellungen, finden Sie unter Ordnungsgemäße Beendigung von GPU-Knoten konfigurieren.

Nächste Schritte