GPUs in GKE


Auf dieser Seite werden GPUs in Google Kubernetes Engine (GKE) beschrieben, einschließlich Anwendungsfällen, unterstützten Features und GPU-Typen und den Unterschieden zwischen dem Autopilot- und dem Standardmodus. Eine 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.

GPU-Verfügbarkeit in GKE

In GKE 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. Sie können diese Beschleuniger für ressourcenintensive Aufgaben verwenden, z. B.:

  • Inferenz und Training für maschinelles Lernen (ML)
  • Datenverarbeitung in großem Maßstab

Die GPU-Hardware, die in GKE verwendet werden kann, ist eine Teilmenge der Compute Engine-GPUs für Compute-Arbeitslasten. GKE bietet einige GPU-spezifische Features wie Zeitfreigabe und GPUs mit mehreren Instanzen, die die Effizienz verbessern können, wie Ihre Arbeitslasten die GPU-Ressourcen auf Ihren Knoten verwenden.

Welche Hardware verfügbar ist, hängt von der Compute Engine-Region oder -Zone Ihres Clusters ab. Informationen zu bestimmten Verfügbarkeiten finden Sie unter GPU-Regionen und -Zonen.

GPU-Kontingent

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 Ihr Projekt ein ausreichendes GPU-Kontingent haben.

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, benötigt Ihr Projekt mindestens ein Kontingent von sechs GPUs.

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 in Autopilot und Standard

GPUs sind in Autopilot- und Standard-Clustern verfügbar. In der folgenden Tabelle werden die Unterschiede zwischen der Unterstützung von Autopilot- und Standard-GPUs beschrieben:

Beschreibung Autopilot Standard
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 eine 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.
  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. GPU-Treiber auf den Knoten manuell installieren, wenn Sie die automatische Installation nicht verwendet haben
  3. GPU-Mengen in Pod-Spezifikation anfordern

Eine Anleitung finden Sie unter GPUs in Standardknotenpools ausführen.

GPU-Auslastung verbessern
Sicherheit
Preise Autopilot GPU Pod-Preise Compute Engine-GPU-Preise

In Autopilot verwaltet GKE die Treiberinstallation, Knotenskalierung, Pod-Isolierung und Knotenbereitstellung. Wir empfehlen, für Ihre GPUs einen Clustermodus basierend auf der Flexibilität und der gewünschten Kontrolle Ihrer Knoten auszuwählen:

  • Wenn Sie sich auf die Bereitstellung Ihrer GPU-basierten Arbeitslasten konzentrieren möchten, ohne die Knoten verwalten zu müssen, und wenn die verfügbaren GPU-Typen Ihren Anforderungen entsprechen, verwenden Sie Autopilot.
  • Wenn Sie Ihre Knoten, die Skalierung, die Isolierung und zugrunde liegende Maschinen selbst verwalten möchten, verwenden Sie Standard.

GPU-Features in GKE

GKE bietet zusätzliche Features, mit denen Sie die Ressourcennutzung Ihrer GPU-Arbeitslasten optimieren können, sodass Sie keine GPU-Ressourcen auf Ihren Knoten verschwenden. Standardmäßig unterstützt Kubernetes die Zuweisung von GPUs als ganze Einheiten zu Containern, auch wenn ein Container nur einen Bruchteil der verfügbaren GPU benötigt oder wenn der Container nicht immer die Ressourcen verwendet.

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.

Informationen zu NVIDIA CUDA-X-Bibliotheken

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

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. Verwenden Sie eine der folgenden Methoden, um die NVIDIA CUDA-X-Bibliotheken hinzuzufügen:

  • 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 von Ihnen 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.

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.

Sie können vordefinierte Dashboards verwenden, um Ihre Cluster mit GPU-Knoten zu überwachen. Weitere Informationen finden Sie unter Beobachtbarkeitsmesswerte aufrufen. Allgemeine Informationen zum Überwachen 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

Mit Google Cloud Managed Service for Prometheus können Sie NVIDIA DCGM-Messwerte erfassen und visualisieren. Bei Standardclustern 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-Dokumentation zur Beobachtbarkeit 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. Sie können Unterbrechungen von Arbeitslasten reduzieren, die in GKE-Clustern ausgeführt werden, auf denen auf der Steuerungsebene Version 1.29.1-gke.1425000 und höher ausgeführt wird. GKE benachrichtigt die Knoten über ein bevorstehendes Herunterfahren. Dazu wird bis zu 60 Minuten vor der Bereinigung ein SIGTERM-Signal an den Knoten gesendet.

Sie können GKE so konfigurieren, dass Ihre Arbeitslasten ordnungsgemäß beendet werden. Legen Sie im Pod-Manifest das Feld spec.terminationGracePeriodSeconds auf einen Wert von maximal 3600 Sekunden (eine Stunde) fest. 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 finden Sie unter Ordnungsgemäße Beendigung von GPU-Knoten konfigurieren.

Nächste Schritte