Auf dieser Seite werden die wichtigsten Konzepte, Vorteile und Schritte zum Ausführen von Arbeitslasten für die Inferenz generativer KI-/ML-Modelle in der Google Kubernetes Engine (GKE) mithilfe der GKE Gen AI-Funktionen beschrieben.
Das Abrufen von Inferenzen ist entscheidend, wenn Sie Ihre generativen KI-Modelle in realen Anwendungen einsetzen möchten. GKE bietet eine robuste und skalierbare Plattform für die Verwaltung Ihrer containerisierten Arbeitslasten. Daher ist sie eine gute Wahl für die Bereitstellung Ihrer Modelle in der Entwicklung oder Produktion. Mit GKE können Sie die Kubernetes-Funktionen für Orchestrierung, Skalierung und Hochverfügbarkeit nutzen, um Ihre Inferenzdienste effizient bereitzustellen und zu verwalten.
Aufgrund der spezifischen Anforderungen von KI-/ML-Inferenzen hat Google Cloud die GKE Gen AI-Funktionen eingeführt. Dabei handelt es sich um eine Reihe von Funktionen,die speziell zur Verbesserung und Optimierung der Inferenzausführung in GKE entwickelt wurden. Weitere Informationen zu bestimmten Funktionen finden Sie unter GKE-Funktionen für generative KI.
Erste Schritte mit der KI-/ML-Modellinferenz in GKE
Sie können in wenigen Minuten anfangen, KI/ML-Modellinferenzen in GKE kennenzulernen. Sie können die kostenlose Stufe von GKE verwenden, um mit Kubernetes zu beginnen, ohne dass Kosten für die Clusterverwaltung anfallen.
-
Rufen Sie in der Google Cloud Console die Seite „GKE AI/ML“ auf.
- Führen Sie die Schritte unter Modelle bereitstellen aus, um ein containerisiertes Modell und einen Modellserver bereitzustellen.
- Lesen Sie den Artikel Planung für die Inferenz, der Anleitungen und Ressourcen zum Planen und Ausführen Ihrer Inferenzarbeitslasten in GKE enthält.
Terminologie
Auf dieser Seite wird die folgende Terminologie in Bezug auf die Inferenz in GKE verwendet:
- Inferenz: Das Ausführen eines generativen KI-Modells, z. B. eines Large Language Model oder eines Diffusionsmodells, in einem GKE-Cluster, um Text, Einbettungen oder andere Ausgaben aus Eingabedaten zu generieren. Bei der Modellinferenz in GKE werden Accelerators eingesetzt, um komplexe Berechnungen für die Echtzeit- oder Batchverarbeitung effizient zu verarbeiten.
- Modell: Ein generatives KI-Modell, das Muster aus Daten gelernt hat und für Inferenzen verwendet wird. Die Modelle variieren in Größe und Architektur, von kleineren domänenspezifischen Modellen bis hin zu riesigen neuronalen Netzwerken mit Milliarden von Parametern, die für verschiedene Sprachaufgaben optimiert sind.
- Modellserver: Ein containerisierter Dienst, der für den Empfang von Inferenzanfragen und die Rückgabe von Vorhersagen verantwortlich ist. Dieser Dienst kann eine Python-Anwendung oder eine robustere Lösung wie vLLM, JetStream, TensorFlow Serving oder Triton Inference Server sein. Der Modellserver lädt Modelle in den Arbeitsspeicher und führt Berechnungen auf Beschleunigern aus, um Vorhersagen effizient zurückzugeben.
- Beschleuniger: Spezielle Hardware wie Grafikprozessoren (GPUs) von NVIDIA und Tensor Processing Units (TPUs) von Google, die an GKE-Knoten angeschlossen werden können, um Berechnungen zu beschleunigen, insbesondere für Trainings- und Inferenzaufgaben.
Vorteile von GKE für die Inferenz
Das Abrufen von Vorhersagen in GKE bietet mehrere Vorteile:
- Effiziente Preis-Leistungs-Relation:Sie erhalten ein gutes Preis-Leistungs-Verhältnis und eine hohe Geschwindigkeit für Ihre Anforderungen beim Abrufen von Inferenzen. Mit GKE können Sie aus einer Vielzahl leistungsstarker Beschleuniger (GPUs und TPUs) wählen und so nur für die benötigte Leistung bezahlen.
- Schnellere Bereitstellung: Mit den GKE-Gen AI-Funktionen können Sie die Markteinführungszeit verkürzen.
- Skalierbare Leistung: Skalieren Sie die Leistung mit vorkonfiguriertem Monitoring mithilfe des GKE Inference Gateway, horizontalem Pod-Autoscaling (HPA) und benutzerdefinierten Messwerten. Sie können eine Reihe von vortrainierten oder benutzerdefinierten Modellen mit 8 Milliarden bis 671 Milliarden Parametern ausführen.
- Vollständige Portabilität: Sie profitieren von vollständiger Portabilität mit offenen Standards. Google trägt zu wichtigen Kubernetes-APIs bei, darunter Gateway und LeaderWorkerSet. Alle APIs sind mit Kubernetes-Distributionen kompatibel.
- Ökosystemunterstützung: Sie können auf das robuste GKE-Ökosystem zurückgreifen, das Tools wie Kueue für die erweiterte Ressourcenauslieferung und Ray für verteiltes Computing unterstützt. So können Sie skalierbare und effiziente Modelltrainings und ‑inferenzen durchführen.
Funktionsweise der Inferenz in GKE
In diesem Abschnitt werden die Schritte zur Verwendung von GKE für den Inferenz-Ausführungsdienst allgemein beschrieben:
Modell containerisieren: Sie können ein Modell bereitstellen, indem Sie den Modellserver (z. B. vLLM) containerisieren und Modellgewichte aus Cloud Storage oder einem Repository wie Hugging Face laden. Wenn Sie die GKE-Kurzanleitung für die Inferenz verwenden, wird das containerisierte Image automatisch im Manifest verwaltet.
GKE-Cluster erstellen: Erstellen Sie einen GKE-Cluster, um Ihre Bereitstellung zu hosten. Wählen Sie „Autopilot“ für eine verwaltete Umgebung oder „Standard“ für die Anpassung aus. Konfigurieren Sie die Clustergröße, die Knotentypen und die Beschleuniger. Eine optimierte Konfiguration finden Sie in der Kurzanleitung für die Inference.
Modell als Kubernetes-Deployment bereitstellen: Erstellen Sie ein Kubernetes-Deployment, um Ihren Inferenzdienst zu verwalten. Ein Deployment ist ein Kubernetes API-Objekt, mit dem Sie mehrere Replikate von Pods ausführen können, die auf die Knoten in einem Cluster verteilt sind. Geben Sie das Docker-Image, die Repliken und die Einstellungen an. Kubernetes ruft das Image ab und führt Ihre Container auf den GKE-Clusterknoten aus. Konfigurieren Sie die Pods mit Ihrem Modellserver und Ihrem Modell, einschließlich LoRA-Adaptern, falls erforderlich.
Inferenzapp freigeben: Sie können Ihren Inferenzdienst freigeben, indem Sie einen Kubernetes-Dienst erstellen, um einen Netzwerkendpunkt für Ihre Bereitstellung bereitzustellen. Verwenden Sie das Inference Gateway für intelligentes Load Balancing und Routing, das speziell auf inferentielle Arbeitslasten mit generativer KI zugeschnitten ist.
Inferenzanfragen verarbeiten: Senden Sie Daten im erwarteten Format (JSON, gRPC) von Ihren Anwendungsclients an den Endpunkt Ihres Dienstes. Wenn Sie einen Load Balancer verwenden, verteilt er Anfragen an Modellrepliken. Der Modellserver verarbeitet die Anfrage, führt das Modell aus und gibt die Vorhersage zurück.
Inferenzausführung skalieren und überwachen: Skalieren Sie die Inferenz mit HPA, um Replikate automatisch anhand der CPU oder Latenz anzupassen. Mit der Kurzanleitung für die Inferenz erhalten Sie automatisch generierte Empfehlungen zur Skalierung. Verwenden Sie zum Überwachen der Leistung Cloud Monitoring und Cloud Logging mit vordefinierten Observability-Funktionen, einschließlich Dashboards für gängige Modellserver wie vLLM.
Ausführliche Beispiele für die Verwendung bestimmter Modelle, Modellserver und Accelerators finden Sie unter Beispiele für Inferenzen.
GKE-Gen AI-Funktionen
Sie können diese Funktionen zusammen oder einzeln verwenden, um wichtige Herausforderungen beim Bereitstellen von generativen KI-Modellen zu bewältigen und die Ressourcennutzung in Ihrer GKE-Umgebung ohne zusätzliche Kosten zu verbessern.
Name | Beschreibung | Vorteile |
---|---|---|
Kurzanleitung für GKE-Inferenzen (Vorabversion) |
Geben Sie Ihre Geschäftsanforderungen an und erhalten Sie individuelle Best Practices für die Kombination aus Beschleunigern, Skalierungskonfigurationen und Modellservern, die Ihren Anforderungen am besten entspricht. Sie können mit der gcloud CLI auf diesen Dienst zugreifen. Weitere Informationen finden Sie unter Best Practices für die Inferenz mit GKE Inference Quickstart-Rezepten ausführen. |
|
GKE Inference Gateway (Vorabversion) | Routing basierend auf Messwerten wie der KV-Cache-Auslastung für eine geringere Latenz Weitere Informationen finden Sie unter GKE Inference Gateway. |
|
Beschleuniger für das Laden von Modellgewichten | Mit Cloud Storage FUSE mit Caching und parallelen Downloads können Sie schnell auf Daten in Cloud Storage zugreifen. Für Inferenzarbeitslasten, die eine konsistente Skalierungsleistung erfordern, ist Google Cloud Hyperdisk ML ein netzgebundenes Laufwerk, das an bis zu 2.500 Pods angeschlossen werden kann. |
|
Inferenzen planen
In diesem Abschnitt werden einige der wichtigsten Aspekte beschrieben, die Sie bei Ihren Inferenzarbeitslasten in GKE berücksichtigen sollten.
Kosteneffizienz
Das Bereitstellen großer generativer KI-Modelle kann aufgrund der Verwendung von Beschleunigern teuer sein. Sie sollten daher auf eine effiziente Ressourcennutzung achten. Die Auswahl des richtigen Maschinentyps und Beschleunigers ist entscheidend, damit der Beschleunigerspeicher der Modellgröße und Quantisierungsebene entspricht. So können G2-Instanzen mit NVIDIA L4-GPUs für kleinere Modelle kostengünstig sein, während A3-Instanzen besser für größere Modelle geeignet sind.
Mit diesen Tipps und Empfehlungen können Sie die Kosteneffizienz maximieren:
- Mit dem Schnellstart für Inferenzen erhalten Sie die empfohlenen Beschleuniger basierend auf Ihren Leistungsanforderungen.
- Mithilfe von Techniken wie Quantisierung und Batching von Anfragen lässt sich die Bereitstellungseffizienz verbessern. Weitere Informationen finden Sie unter Best Practices für die Optimierung der Inferenz von Large Language Models mit GPUs.
Verwenden Sie Autoscaling, um Ressourcen dynamisch an die Nachfrage anzupassen. Das kann zu Kosteneinsparungen führen, insbesondere bei schwankenden Arbeitslasten. Weitere Informationen finden Sie in folgenden Anleitungen:
Leistung
Um die Inferenzleistung in GKE zu optimieren, konzentrieren Sie sich auf die folgenden Benchmark-Messwerte:
Benchmark-Indikatoren | Metrische Einheit | Beschreibung |
---|---|---|
Latenz | Zeit bis zum ersten Token (TTFT) (ms) | Die Zeit, die vergeht, bis das erste Token für eine Anfrage generiert wird. |
Normalisierte Zeit pro Ausgabetoken (NTPOT) (ms) | Anfragelatenz, normalisiert nach der Anzahl der Ausgabetokens, gemessen in request_latency / total_output_tokens . |
|
Zeit pro Ausgabetoken (TPOT) (ms) | Die Zeit, die zum Generieren eines Ausgabetokens benötigt wird, gemessen in (request_latency - time_to_first_token) / (total_output_tokens - 1) . |
|
Latenz zwischen den Tokens (ITL) (ms) | Misst die Latenz zwischen zwei Ausgabetokengenerationen. Im Gegensatz zu TPOT, bei dem die Latenz für die gesamte Anfrage gemessen wird, wird bei der ITL die Zeit gemessen, die zum Generieren jedes einzelnen Ausgabetokens benötigt wird. Diese einzelnen Messungen werden dann zusammengefasst, um Mittelwerte, Mediane und Perzentilwerte wie p90 zu erhalten. | |
Anfragelatenz (ms) | Die End-to-End-Zeit, die für die Bearbeitung einer Anfrage benötigt wird. | |
Durchsatz | Anfragen pro Sekunde | Die Gesamtzahl der Anfragen, die Sie pro Sekunde ausliefern. Dieser Messwert ist möglicherweise keine zuverlässige Methode, um den LLM-Durchsatz zu messen, da er bei unterschiedlichen Kontextlängen stark variieren kann. |
Ausgabetokens pro Sekunde | Ein gängiger Messwert, der als total_output_tokens_generated_by_server / elapsed_time_in_seconds gemessen wird. |
|
Eingabetokens pro Sekunde | Gemessen als total_input_tokens_generated_by_server / elapsed_time_in_seconds . |
|
Tokens pro Sekunde | Gemessen als total_tokens_generated_by_server / elapsed_time_in_seconds . Bei diesem Messwert werden sowohl Eingabe- als auch Ausgabetokens gezählt. So können Sie Arbeitslasten mit hohen Prefill- und Dekodierungszeiten vergleichen. |
Folgen Sie der Anleitung unter KI-Hypercomputer/Inferenz-Benchmark, um ein Leistungsbenchmarking Ihrer Arbeitslasten durchzuführen.
Beachten Sie auch die folgenden Tipps und Empfehlungen zur Leistung:
- Die empfohlenen Beschleuniger für Ihre Leistungsanforderungen finden Sie in der Kurzanleitung für die Inference.
- Um die Leistung zu steigern, können Sie Techniken zur Modellserveroptimierung wie Batching und PagedAttention verwenden. Weitere Informationen finden Sie in unserem Leitfaden mit Best Practices. Außerdem sollten Sie eine effiziente Speicherverwaltung und Aufmerksamkeitsberechnung priorisieren, um konstant niedrige Latenzen zwischen den Tokens zu erreichen.
- Verwenden Sie standardisierte Messwerte für alle Modellserver (z. B. Hugging Face TGI, vLLM oder NVIDIA Triton), um das Autoscaling und das Load Balancing zu verbessern. So lässt sich bei der ausgewählten Latenz ein höherer Durchsatz erzielen. GKE bietet automatische Anwendungsüberwachung für mehrere Modellserver.
- Verwenden Sie GKE-Netzwerkinfrastrukturfunktionen wie das Inference Gateway, um die Latenz zu minimieren.
Verwenden Sie Cloud Storage FUSE mit parallelen Downloads und Caching oder Hyperdisk ML, um das Laden von Modellgewichten aus dem nichtflüchtigen Speicher zu beschleunigen.
Verwenden Sie Pathways für umfangreiches Training oder Inferenz. Mit Pathways können Sie umfangreiche ML-Berechnungen vereinfachen, da ein einzelner JAX-Client Arbeitslasten über mehrere große TPU-Slices hinweg orchestrieren kann. Weitere Informationen finden Sie unter Pfade.
Erreichbarkeit
Die Verfügbarkeit von Ressourcen (CPUs, GPUs und TPUs) ist entscheidend für die Leistung, Verfügbarkeit und Kosteneffizienz Ihrer Inferenzarbeitslasten. Inferenzarbeitslasten weisen oft spitzenlastige und unvorhersehbare Verkehrsmuster auf, die die Hardwarekapazität beeinträchtigen können. GKE löst diese Herausforderungen mithilfe von Features wie den folgenden:
- Optionen zur Ressourcennutzung: Wählen Sie aus Optionen wie Reservierungen für eine garantierte Kapazität, kosteneffizienter Skalierung, Dynamic Workload Scheduler und Spot-VMs für die Kostenoptimierung und den On-Demand-Zugriff für sofortige Verfügbarkeit.
- Ressourcenoptimierung: Google Cloud bietet beispielsweise kleinere A3 High-VMs mit NVIDIA H100-GPUs (1 GB, 2 GB oder 4 GB) für eine kostengünstige Skalierung der generativen KI-Inferenz, die Spot-VMs unterstützt.
- Compute-Klassen für Accelerators: Mit benutzerdefinierten Compute-Klassen können Sie die Ressourcenbereitstellung genauer steuern, eine Überprovisionierung verhindern und die Ressourcenverfügbarkeit mit automatischen Fallback-Optionen maximieren.
Knotenupgrades
GKE automatisiert einen Großteil des Upgradeprozesses. Sie müssen jedoch Upgradestrategien berücksichtigen, insbesondere in Bezug auf Kompatibilität und Tests. Bei manuellen Upgrades können Sie je nach Toleranz Ihrer Inferenzarbeitslast gegenüber Unterbrechungen zwischen Surge- oder Blau/Grün-Upgrades wählen. Diese Upgrades sind schnell, können aber kurzzeitig Auswirkungen auf die Dienste haben. Blau/Grün-Upgrades bieten praktisch keine Ausfallzeiten, was für Echtzeit-Inferenzen entscheidend ist. Weitere Informationen finden Sie unter Strategien für das Knotenupgrade.
GPUs und TPUs unterstützen keine Live-Migration. Für die Wartung müssen daher Pods neu gestartet werden. Mit GKE-Benachrichtigungen auf Störungen vorbereiten Wir empfehlen die Verwendung von Budgets für Pod-Störungen, damit immer eine Mindestanzahl von Pods verfügbar ist. Achten Sie darauf, dass Ihre Pods eine ordnungsgemäße Beendigung verarbeiten können. TPU-Slices können durch Ereignisse auf einem einzelnen Host beeinträchtigt werden. Planen Sie daher für Redundanz. Weitere Best Practices finden Sie unter GKE-Knotenunterbrechungen für GPUs und TPUs verwalten.
Beispiele für Inferenzen ausprobieren
GKE-Beispiele für die Bereitstellung von generativen KI-Modellen, Acceleratoren und Modellservern Wenn Sie gerade erst mit der Arbeit beginnen, empfehlen wir Ihnen die Anleitung Offene Gemma-Modelle mit GPUs in GKE mit vLLM bereitstellen.
Du kannst auch nach einem bestimmten Begriff suchen:
Nächste Schritte
- Im Portal zur KI-/ML-Orchestrierung in GKE finden Sie unsere offiziellen Anleitungen, Tutorials und Anwendungsfälle für die Ausführung von KI-/ML-Arbeitslasten in GKE.
- Weitere Informationen zur Optimierung der Modellbereitstellung finden Sie unter Best Practices für die Optimierung der Inferenz von Large Language Models mit GPUs. Es werden Best Practices für die Bereitstellung von LLMs mit GPUs in GKE behandelt, z. B. Quantisierung, Tensorparallelität und Arbeitsspeicherverwaltung.
- Weitere Beispiele, Best Practices und Tools finden Sie im GitHub-Repository „ai-on-gke“.