Vereinfachte Konzepte für die automatische Skalierung von KI-/ML-Arbeitslasten in GKE

Dieses Dokument bietet einen Überblick über die Konzepte für das Autoscaling von KI-/ML-Arbeitslasten in Google Kubernetes Engine (GKE).

Dieses Dokument richtet sich an Entwickler von maschinellem Lernen (ML), die neu in GKE sind. Wir empfehlen Ihnen, die folgenden Dokumente der Reihe zu lesen, um sich mit der Verwendung von GKE für KI/ML-Arbeitslasten vertraut zu machen:

  1. Warum GKE für KI‑/ML-Inferenz verwenden?
  2. KI‑/ML-Modellinferenz in GKE
  3. Vereinfachte Autoscaling-Konzepte für KI-/ML-Arbeitslasten in GKE (dieses Dokument)

Hinweis

Sie sollten mit den folgenden Konzepten vertraut sein:

Die Herausforderung: Spitzenbedarf decken

Cymbal Shops, ein fiktiver Onlinehändler, bereitet sich auf das jährliche Verkaufsereignis vor. Das KI-basierte Empfehlungssystem des Geschäfts muss personalisierte Vorschläge in Echtzeit für eine große Anzahl von Onlinekäufern liefern.

Wenn die Empfehlungs-Engine langsamer wird, leidet die Nutzerfreundlichkeit und es gehen Umsätze verloren. Die Bereitstellung übermäßiger Serverkapazität ist jedoch in Zeiten normalen Traffics nicht kosteneffizient. Ziel ist es, dass Ressourcen automatisch an die Nachfrage angepasst werden. So wird für eine gute Nutzererfahrung gesorgt und gleichzeitig die Kosten im Rahmen gehalten.

Die Lösung: On-Demand-Autoscaling

GKE-Autoscaling-Funktionen sind vergleichbar mit einem Filialleiter, der sich auf einen Verkaufsanstieg vorbereitet. Anstatt ein riesiges Gebäude ständig mit Personal zu besetzen und mit Strom zu versorgen, passt der Manager die gesamte Kapazität des Geschäfts – Personal, Verkaufsfläche und Ausstattung – dynamisch an die Bedürfnisse der Kunden an.

GKE wendet dasselbe Prinzip an: Die Ressourcen, die Ihrer Anwendung zugewiesen sind (sowohl Arbeitslast als auch Infrastruktur), werden automatisch an den Echtzeitbedarf angepasst.

Geschäftliche Vorteile von GKE-Autoscaling

Durch die Kombination von horizontalen und vertikalen Skalierungsstrategien bietet GKE einen robusten Ansatz mit drei Hauptvorteilen:

  • Kostenoptimierung: Sie zahlen nur für die von Ihnen verwendeten Rechenressourcen und vermeiden die Kosten für eine Überbereitstellung. GKE-Autoscaling verhindert Verschwendung, indem die Größe Ihrer Anwendungen automatisch an die tatsächlichen CPU- und Arbeitsspeicheranforderungen angepasst wird. Außerdem kann teure, spezialisierte Hardware (z. B. GPUs) nur für die Momente bereitgestellt werden, in denen sie benötigt wird, und wird entfernt, wenn der Job abgeschlossen ist.
  • Höhere Zuverlässigkeit und Leistung: Ihre Anwendung kann automatisch horizontal skaliert werden (weitere Kopien hinzufügen), um plötzliche Traffic-Spitzen zu bewältigen. So wird die Stabilität für Ihre Nutzer gewährleistet. Gleichzeitig hilft das Autoscaling von GKE, häufige „Out of Memory“ (OOM)-Fehler zu vermeiden, die zum Absturz von Anwendungen führen können. Bei anspruchsvollen KI-/ML-Jobs trägt es dazu bei, dass die erforderliche leistungsstarke Hardware verfügbar ist, um die Jobs effizient und pünktlich auszuführen.
  • Geringerer operativer Aufwand: Die multidimensionale Autoscaling-Strategie von GKE vereinfacht die Ressourcenverwaltung erheblich. GKE automatisiert die komplexen Aufgaben der Anpassung von Ressourcenanfragen und der Verwaltung von spezialisierten Knotenpools für verschiedene Hardware. Durch diese Automatisierung können sich Ihre Entwicklungsteams auf die Anwendungsentwicklung konzentrieren, anstatt die Infrastruktur zu optimieren.

Autoscaling von Arbeitslasten

Durch das automatische Skalieren von Arbeitslasten wird die Leistung Ihrer Anwendung automatisch an die Nachfrage angepasst. GKE verwendet ein zweistufiges Autoscaling-System, um die Ressourcen Ihrer Anwendung effizient zu verwalten.

Horizontales Pod-Autoscaling (HPA): Hinzufügen von Ressourcen

Der horizontale Pod-Autoscaler (HPA) überwacht die Ressourcenauslastung der Pods Ihrer Anwendung. In unserem Beispiel sind die Pods die „Sales Associates“ und der HPA ist der „Teammanager“, der beobachtet, wie beschäftigt die Sales Associates sind.

Wenn die Nachfrage nach den Pods steigt, stellt der HPA automatisch weitere Pods bereit, um die Last zu verteilen. Wenn die Nachfrage sinkt, beendet HPA inaktive Pods, um Ressourcen zu sparen.

Weitere Informationen finden Sie unter Horizontales Pod-Autoscaling.

Vertikales Pod-Autoscaling (VPA): Ressourcen leistungsfähiger machen

Bei der horizontalen Skalierung wird die Menge der Ressourcen erhöht, während bei der vertikalen Skalierung die Leistung der vorhandenen Ressourcen gesteigert wird. Im Kontext unseres Beispiels mit dem Ladengeschäft geht es nicht darum, mehr Personal einzustellen, sondern die Fähigkeiten des aktuellen Teams zu erweitern, um die individuelle Effizienz zu steigern.

Dieser Ansatz der vertikalen Skalierung auf Pod-Ebene wird vom vertikalen Pod-Autoscaler (VPA) verwaltet. Der VPA analysiert den Ressourcenverbrauch Ihrer Anwendung und passt die CPU- und Arbeitsspeicheranfragen des Pods nach oben oder unten an die tatsächliche Nutzung an.

Der VPA kann die Ressourcenanfragen und ‑limits eines Pods anpassen, indem er den Pod beispielsweise neu bereitstellt, um von 1 CPU und 16 GB auf 4 CPUs und 64 GB zu skalieren. Dabei wird der Pod mit seiner neuen, leistungsfähigeren Konfiguration neu gestartet, um seine Arbeitslast besser zu bewältigen.

Weitere Informationen finden Sie in den folgenden Ressourcen:

HPA und VPA ergänzen sich. HPA passt die Anzahl der Pods als Reaktion auf Änderungen im Traffic an und VPA sorgt dafür, dass jeder dieser Pods die richtige Größe für seine Aufgabe hat. Diese Skalierungsstrategien verhindern die Verschwendung von Ressourcen und unnötige Kosten und tragen dazu bei, dass Ihre App bei Traffic-Schwankungen reaktionsschnell und verfügbar bleibt. Sofern Sie nicht HPA-Rightsizing mit VPA (Vorabversion) für die CPU verwenden, sollten Sie HPA und VPA nicht für dieselben Messwerte (CPU und Arbeitsspeicher) verwenden, da sie in Konflikt geraten können. Weitere Informationen finden Sie unter Einschränkungen des horizontalen Pod-Autoscalings.

Autoscaling der Infrastruktur

Beim Infrastruktur-Autoscaling wird Hardware automatisch hinzugefügt oder entfernt, um den Anforderungen Ihrer Arbeitslasten gerecht zu werden.

Cluster Autoscaler: Der Gebäudemanager

Der Cluster-Autoscaler sorgt dafür, dass genügend zugrunde liegende Infrastruktur (VMs oder Knoten im Kontext von GKE) für die Pods vorhanden ist. Die Knoten können mit den „Etagen“ eines Geschäfts verglichen werden, wobei Cluster Autoscaler der „Gebäudemanager“ ist.

Wenn die HPA weitere Pods hinzufügen muss, die vorhandenen Knoten jedoch nicht genügend verfügbare Kapazität haben, stellt der Cluster-Autoscaler einen neuen Knoten bereit. Wenn ein Knoten nicht ausgelastet ist, verschiebt Cluster Autoscaler die Pods dieses Knotens auf andere Knoten und beendet den nun leeren Knoten.

Weitere Informationen finden Sie unter Cluster Autoscaler.

Automatisches Erstellen von Knotenpools: der Automatisierungsspezialist

Der Cluster Autoscaler fügt Knoten zu vorhandenen Knotenpools hinzu. Die automatische Erstellung von Knotenpools erweitert die Funktionen des Cluster Autoscaler, da er automatisch neue Knotenpools erstellen kann, die den spezifischen Anforderungen Ihrer Pods entsprechen.

Für bestimmte KI-/ML-Arbeitslasten ist spezielle Hochleistungshardware wie GPUs oder TPUs erforderlich, die in Knotenpools für allgemeine Zwecke nicht verfügbar sind. Durch die automatische Erstellung von Knotenpools wird die Bereitstellung dieser speziellen Hardware vollständig automatisiert, wenn Ihre Arbeitslasten sie erfordern. So wird sichergestellt, dass auch die rechenintensivsten Aufgaben die benötigte Hardware erhalten, wenn sie sie benötigen.

Weitere Informationen finden Sie unter Automatische Erstellung von Knotenpools.

Informationen zu den in GKE verfügbaren Beschleunigern finden Sie unter:

ComputeClasses: der Trigger für das automatische Erstellen von Knotenpools

Die automatische Erstellung von Knotenpools kann zwar durch die Anfrage eines Pods nach einem bestimmten Hardwaretyp (z. B. nvidia-l4-vws) ausgelöst werden, die Verwendung einer ComputeClass ist jedoch die robustere und modernere Methode. Eine ComputeClass ist eine GKE-Ressource, die Sie definieren und die auf einer Reihe von Regeln basiert, um das Autoscaling Ihrer Hardware zu steuern und anzupassen. Es ist zwar kein Autoscaler, funktioniert aber mit dem Cluster Autoscaler.

Wenn wir das Beispiel weiterführen, können Sie sich ComputeClasses als „intelligentes Anforderungsformular“ für die Ausrüstung Ihres Geschäfts vorstellen.

Anstatt dass ein Verkäufer (Ihr Pod) eine bestimmte, starre Hardware anfordert (z. B. „Ich brauche die Kasse Modell 500 von Marke X“), wird über das Anforderungsformular eine Funktion angefordert (z. B. „Ich brauche eine Hochgeschwindigkeitskasse“). Das Formular – die Compute-Klasse – enthält eine Reihe von Regeln für das Einkaufsteam (GKE), wie diese Bestellung ausgeführt werden soll.

Compute-Klassen trennen die Hardwareanforderung Ihres Pods von der Bereitstellung durch GKE. Anstatt eine bestimmte Maschine (z. B. a3-highgpu-8g) anzufordern, kann Ihr Pod eine Compute-Klasse anfordern. Die ComputeClass selbst definiert die „smarte“ Logik, eine priorisierte Liste von Regeln, die GKE mitteilt, wie die Anfrage erfüllt werden soll.

Weitere Informationen finden Sie unter GKE ComputeClasses.

Einen detaillierten Überblick über Compute-Klassen mit Praxisbeispielen und YAML-Konfigurationen finden Sie im technischen Leitfaden GKE-Arbeitslasten mit benutzerdefinierten Compute-Klassen optimieren.

Wichtige Messwerte und Trigger für Autoscaling

Um fundierte Skalierungsentscheidungen treffen zu können, überwachen die Autoscaling-Komponenten verschiedene Signale. In der folgenden Tabelle sehen Sie einen Vergleich der Messwert-basierten Autoscaling-Trigger.

Komponente Reagiert auf Signalquelle Denkprozess GKE-Aktion
HPA Aktuelle Last Echtzeitverbrauch, z. B. die CPU-Auslastung liegt derzeit bei 90 %. „Die aktuellen Pods sind überlastet. Wir müssen diesen Traffic sofort verteilen.“ Skaliert horizontal: Ändert die Anzahl der Pod-Replikate, um die Nachfrage zu decken.
VPA Effizienz der Größenanpassung Bisheriger Verbrauch, z. B. durchschnittliche RAM-Nutzung in den letzten 24 Stunden. „Der Ressourcenbedarf dieses Pods hat sich geändert oder unsere ursprünglichen Schätzungen waren falsch. Wir müssen die Ressourcenzuweisung an die tatsächliche Nutzung anpassen.“ Hoch- oder Herunterskalieren: Ändert die Größe (CPU- oder RAM-Limits) des Pods, um ihn richtig zu dimensionieren.
Automatisches Erstellen von Knotenpools Verfügbarkeit von Hardware Nicht erfüllte Anfragen, z. B. wenn sich der Pod im Status „Pending“ (Ausstehend) befindet, weil keine GPU-Knoten vorhanden sind. „Dieser Pod kann nicht gestartet werden, da die angeforderte physische Hardware fehlt.“ Stellt die Infrastruktur bereit: Erstellt neue Knotenpools mit der angegebenen Hardware.

HPA-Trigger (Horizontal Pod Autoscaler): Reaktion auf die Last

Die HPA skaliert die Anzahl der Pods (hoch- oder herunterskalieren) anhand von Echtzeit-Leistungsmesswerten. Beispielsweise sind CPU- und Arbeitsspeicherauslastung, die grundlegenden Messwerte, die die Verarbeitungslast für Ihre Pods angeben, sofort für HPA verfügbar.

Für einige Messwerte sind jedoch explizite Konfigurationen erforderlich, z. B.:

  • Load-Balancer-Messwerte (Anfragen pro Sekunde): ein direkter Messwert für den Anwendungs-Traffic, der schnellere Skalierungsreaktionen ermöglicht. Informationen zur Verwendung dieses Messwerts finden Sie unter Auslastungsbasiertes Load-Balancing und Performance-HPA-Profil aktivieren.
  • Benutzerdefinierte Messwerte: Konfigurieren Sie das Autoscaling anhand benutzerdefinierter Unternehmensmesswerte wie „Anzahl der aktiven Nutzer“, um Ressourcen proaktiv auf der Grundlage der erwarteten Nachfrage zu verwalten. Wenn Sie benutzerdefinierte Messwerte verwenden möchten, müssen Sie eine Messwertpipeline einrichten, um sie für die HPA verfügbar zu machen. Weitere Informationen finden Sie unter Google Cloud Managed Service for Prometheus.

VPA-Trigger (Vertical Pod Autoscaler): Reaktion auf Ressourcenanforderungen

Der VPA skaliert die Größe Ihres Pods (hoch oder runter), indem er den bisherigen Ressourcenverbrauch beobachtet:

  • CPU- und Arbeitsspeichernutzung: Der VPA analysiert die bisherige Nutzung eines Pods, um festzustellen, ob die Ressourcenanfrage korrekt ist. Das Hauptziel von VPA ist es, Ressourcenkonflikte zu verhindern, indem die Arbeitsspeicher- und CPU-Anforderungen eines Pods an seinen tatsächlichen Bedarf angepasst werden.

Trigger für die automatische Erstellung von Knotenpools: Reagieren auf Hardwareanforderungen

Bei der automatischen Erstellung von Knotenpools werden neue Knotenpools mit spezialisierter Hardware bereitgestellt. Sie wird nicht durch Leistungsmesswerte wie die CPU-Auslastung ausgelöst. Stattdessen wird sie durch die Ressourcenanfrage eines Pods ausgelöst:

  • Nicht planbare Ressourcenanfrage: ein wichtiger Trigger. Wenn ein Pod erstellt wird, fordert er bestimmte Hardware an. Wenn der Cluster diese Anfrage nicht erfüllen kann, weil kein vorhandener Knoten diese Hardware hat, wird die automatische Erstellung von Knotenpools ausgelöst.
  • ComputeClass-Anfrage: Ein Pod fordert eine ComputeClass an, z. B. cloud.google.com/compute-class: premium-gpu. Wenn kein Knoten im Cluster die Funktionen von „premium-gpu“ bereitstellen kann, wird durch die automatische Erstellung von Knotenpools automatisch ein neuer Knotenpool erstellt, der diese Funktionen bereitstellen kann.

Informationen zum Verwenden von benutzerdefinierten, Prometheus- und externen Messwerten für das Autoscaling finden Sie unter Autoscaling von Arbeitslasten anhand von Messwerten.

Fazit

Mit diesen Autoscaling-Strategien können Sie schwankende KI-/ML-Arbeitslasten effektiv verwalten. So wie der Filialleiter von Cymbal Shops sein umsatzstärkstes Ereignis durch flexibles Verwalten seiner Ressourcen bewältigt hat, können Sie mit GKE-Autoscaling Ihre Infrastruktur- und Arbeitslastressourcen automatisch erweitern und reduzieren. So bleiben Ihre Modelle bei Traffic-Spitzen leistungsstark und in ruhigen Phasen kosteneffizient. Ihre Umgebung ist also immer optimal dimensioniert.

Nächste Schritte