Dieses Dokument im Google Cloud Well-Architected Framework: AI & ML perspective enthält Prinzipien und Empfehlungen zur Optimierung der Leistung Ihrer KI- und ML-Arbeitslasten auf Google Cloud. Die Empfehlungen in diesem Dokument entsprechen der Säule zur Leistungsoptimierung des Well-Architected Framework.
KI- und ML-Systeme ermöglichen Ihrem Unternehmen fortschrittliche Automatisierungs- und Entscheidungsfindungsfunktionen. Die Leistung dieser Systeme kann sich direkt auf wichtige Geschäftstreiber wie Umsatz, Kosten und Kundenzufriedenheit auswirken. Damit Sie das volle Potenzial von KI- und ML-Systemen ausschöpfen können, müssen Sie ihre Leistung auf Grundlage Ihrer Geschäftsziele und technischen Anforderungen optimieren. Bei der Leistungsoptimierung müssen oft Kompromisse eingegangen werden. Eine Designentscheidung, die die erforderliche Leistung bietet, kann beispielsweise zu höheren Kosten führen. Bei den Empfehlungen in diesem Dokument wird die Leistung gegenüber anderen Aspekten priorisiert.
Um die Leistung von KI und ML zu optimieren, müssen Sie Entscheidungen in Bezug auf Faktoren wie die Modellarchitektur, Parameter und Trainingsstrategie treffen. Berücksichtigen Sie bei diesen Entscheidungen den gesamten Lebenszyklus der KI- und ML-Systeme und ihre Bereitstellungsumgebung. Sehr große LLMs können beispielsweise auf einer umfangreichen Trainingsinfrastruktur sehr leistungsstark sein, in Umgebungen mit begrenzter Kapazität wie Mobilgeräten jedoch nicht.
Die Empfehlungen in diesem Dokument sind den folgenden Grundsätzen zugeordnet:
- Leistungsziele und Analysemethoden festlegen
- Häufige Tests durchführen und nachverfolgen
- Trainings- und Bereitstellungsinfrastruktur erstellen und automatisieren
- Designentscheidungen an Leistungsanforderungen anpassen
- Leistungsmesswerte mit Design- und Konfigurationsentscheidungen verknüpfen
Leistungsziele und Analysemethoden festlegen
Ihre Geschäftsstrategie und Ihre Ziele sind die Grundlage für den Einsatz von KI- und ML-Technologien. Geschäftsziele in messbare Leistungskennzahlen (KPIs) umwandeln Beispiele für KPIs sind Gesamtumsatz, Kosten, Conversion-Rate, Kundenbindungs- oder ‑abwanderungsrate, Kundenzufriedenheit und Mitarbeiterzufriedenheit.
Realistische Ziele definieren
Gemäß den Best Practices für Site Reliability Engineering (SRE) müssen die Ziele eines Dienstes ein Leistungsniveau widerspiegeln, das die Anforderungen typischer Kunden erfüllt. Das bedeutet, dass die Serviceziele in Bezug auf Umfang und Leistung der Funktionen realistisch sein müssen.
Unrealistische Ziele können dazu führen, dass Ressourcen für minimale Leistungssteigerungen verschwendet werden. Modelle mit der höchsten Leistung führen möglicherweise nicht zu optimalen Geschäftsergebnissen. Das Training und die Ausführung solcher Modelle können mehr Zeit und Kosten in Anspruch nehmen.
Wenn Sie Zielvorhaben definieren, sollten Sie zwischen Qualitäts- und Leistungszielvorhaben unterscheiden und diese priorisieren:
- Qualität bezieht sich auf die inhärenten Merkmale, die den Wert einer Einheit bestimmen. So können Sie beurteilen, ob die Rechtspersönlichkeit oder Entität Ihren Erwartungen und Standards entspricht.
- Leistung bezieht sich darauf, wie effizient und effektiv eine Einheit funktioniert oder ihren beabsichtigten Zweck erfüllt.
ML-Entwickler können die Leistungsmesswerte eines Modells während des Trainingsprozesses verbessern. Vertex AI bietet einen Bewertungsdienst, mit dem ML-Ingenieure die standardisierte und wiederholbare Erfassung von Qualitätsmesswerten implementieren können. Die Vorhersageeffizienz eines Modells gibt an, wie gut ein Modell in der Produktion oder zur Inferenzzeit abschneidet. Verwenden Sie Cloud Monitoring und Vertex AI Model Monitoring, um die Leistung zu überwachen. Um geeignete Modelle auszuwählen und zu entscheiden, wie sie trainiert werden sollen, müssen Sie Geschäftsziele in technische Anforderungen übersetzen, die Qualitäts- und Leistungsmesswerte bestimmen.
Um zu verstehen, wie Sie realistische Ziele festlegen und geeignete Leistungsmesswerte ermitteln, sehen Sie sich das folgende Beispiel für ein KI-basiertes System zur Betrugserkennung an:
- Geschäftsziel: Für ein System zur Betrugserkennung wäre es ein unrealistisches Geschäftsziel, 100% der betrügerischen Transaktionen bei einem Spitzenverkehr von 100 Milliarden Transaktionen pro Sekunde innerhalb einer Nanosekunde genau zu erkennen. Ein realistischeres Ziel ist es, betrügerische Transaktionen mit einer Genauigkeit von 95% in 100 Millisekunden für 90% der Onlinevorhersagen während der US-Arbeitszeiten bei einem Spitzenvolumen von einer Million Transaktionen pro Sekunde zu erkennen.
- Leistungsmesswerte: Das Erkennen von Betrug ist ein Klassifizierungsproblem. Sie können die Qualität eines Systems zur Betrugserkennung anhand von Messwerten wie Recall, F1-Wert und Accuracy messen. Um die Systemleistung oder ‑geschwindigkeit zu erfassen, können Sie die Inferenzlatenz messen. Das Erkennen potenziell betrügerischer Transaktionen ist möglicherweise wichtiger als die Genauigkeit. Ein realistisches Ziel könnte daher ein hoher Recall mit einer P90-Latenz von weniger als 100 Millisekunden sein.
Leistung in allen Phasen des Modelllebenszyklus im Blick behalten
Behalten Sie während der Tests und des Trainings sowie nach der Bereitstellung des Modells Ihre KPIs im Blick und achten Sie auf Abweichungen von den Geschäftszielen. Eine umfassende Monitoringstrategie hilft Ihnen, wichtige Entscheidungen zur Modellqualität und Ressourcennutzung zu treffen, z. B.
- Entscheiden, wann ein Trainingsjob beendet werden soll
- Feststellen, ob die Leistung eines Modells in der Produktion nachlässt.
- Kosten und Markteinführungszeit für neue Modelle verbessern
Monitoring während Tests und Training
Ziel der Experimentierphase ist es, den optimalen Gesamtansatz, die optimale Modellarchitektur und die optimalen Hyperparameter für eine bestimmte Aufgabe zu finden. Mithilfe von Tests können Sie iterativ die Konfiguration ermitteln, die eine optimale Leistung bietet, und festlegen, wie das Modell trainiert werden soll. Mithilfe von Monitoring können Sie potenzielle Bereiche mit Verbesserungspotenzial effizient identifizieren.
Um die Qualität und Trainingseffizienz eines Modells zu überwachen, müssen ML-Engineers Folgendes tun:
- Messwerte für Modellqualität und ‑leistung für jeden Test visualisieren
- Modelldiagramme und ‑messwerte wie Histogramme von Gewichten und Bias visualisieren.
- Trainingsdaten visuell darstellen
- Trainingsalgorithmen auf verschiedenen Hardwaretypen profilieren
Beachten Sie die folgenden Empfehlungen, um Tests und Training zu überwachen:
| Monitoring-Aspekt | Empfehlung |
|---|---|
| Modellqualität | Mit TensorBoard können Sie Testmesswerte wie die Genauigkeit visualisieren und verfolgen sowie die Modellarchitektur oder Trainingsdaten visualisieren. TensorBoard ist eine Open-Source-Suite von Tools, die mit ML-Frameworks wie den folgenden kompatibel ist:
|
| Tracking von Tests | Vertex AI Experiments wird in verwaltete Vertex AI TensorBoard-Instanzen auf Unternehmensniveau eingebunden, um das Tracking von Tests zu unterstützen. Diese Integration ermöglicht die zuverlässige Speicherung und Weitergabe von Logs und Messwerten. Damit mehrere Teams und Einzelpersonen Tests nachverfolgen können, empfehlen wir, das Prinzip der geringsten Berechtigung anzuwenden. |
| Effizienz von Training und Tests | Vertex AI exportiert Messwerte in Monitoring und erfasst Telemetriedaten und Logs mithilfe eines Observability-Agents. Sie können die Messwerte in der Google Cloud Console visualisieren. Alternativ können Sie mit Monitoring Dashboards oder Benachrichtigungen auf Grundlage dieser Messwerte erstellen. Weitere Informationen finden Sie unter Monitoring-Messwerte für Vertex AI. |
| NVIDIA-GPUs | Der Ops-Agent ermöglicht die GPU-Überwachung für Compute Engine und für andere Produkte, die vom Ops-Agent unterstützt werden. Sie können auch den NVIDIA Data Center GPU Manager (DCGM) verwenden, eine Reihe von Tools zum Verwalten und Überwachen von NVIDIA-GPUs in Clusterumgebungen. Das Monitoring von NVIDIA-GPUs ist besonders nützlich für das Training und die Bereitstellung von Deep-Learning-Modellen. |
| Detailliertes Debugging | Wenn Sie Probleme mit dem Trainingscode oder der Konfiguration eines Vertex AI Training-Jobs beheben möchten, können Sie den Trainingscontainer mit einer interaktiven Shell-Sitzung prüfen. |
Monitoring während der Bereitstellung: Streamingvorhersage
Nachdem Sie ein Modell trainiert und in die Vertex AI Model Registry exportiert haben, können Sie einen Vertex AI-Endpunkt erstellen. Dieser Endpunkt stellt einen HTTP-Endpunkt für das Modell bereit.
Mit Modellmonitoring können Sie große Änderungen in der Verteilung von Eingabe- oder Ausgabefeatures erkennen. Sie können auch Feature-Attributionen in der Produktion im Vergleich zu einer Baseline-Verteilung überwachen. Die Baseline-Verteilung kann der Trainingsdatensatz sein oder auf früheren Verteilungen von Produktionszugriffen basieren. Eine Änderung der Bereitstellungsverteilung kann zu einer geringeren Vorhersageleistung im Vergleich zum Training führen.
- Monitoring-Ziel auswählen: Je nach Sensibilität eines Anwendungsfalls für Änderungen an den Daten, die dem Modell bereitgestellt werden, können Sie verschiedene Arten von Zielen überwachen: Drift von Eingabe-Features, Drift von Ausgaben und Feature-Attribution. Mit Model Monitoring v2 können Sie Modelle überwachen, die Sie auf einer verwalteten Bereitstellungsplattform wie Vertex AI und auch auf selbst gehosteten Diensten wie Google Kubernetes Engine (GKE) bereitstellen. Außerdem können Sie zur detaillierten Leistungsanalyse Parameter auf Modellebene anstelle eines Endpunkts überwachen.
- Bereitstellung generativer KI-Modelle überwachen: Um Stabilität zu gewährleisten und die Latenz zu minimieren, insbesondere für LLM-Endpunkte, sollten Sie einen robusten Monitoring-Stack einrichten. Gemini-Modelle bieten integrierte Messwerte wie die Zeit bis zum ersten Token (Time to First Token, TTFT), auf die Sie direkt im Metrics Explorer zugreifen können. Wenn Sie Durchsatz, Latenz und Fehlerraten für alleGoogle Cloud -Modelle überwachen möchten, verwenden Sie das Dashboard für die Beobachtbarkeit von Modellen.
Monitoring während der Bereitstellung: Batchvorhersage
Um Batchvorhersagen zu überwachen, können Sie Standardbewertungsjobs im Vertex AI Evaluation Service ausführen. Model Monitoring unterstützt das Monitoring von Batchinferenzen. Wenn Sie Batch verwenden, um Ihre Serving-Arbeitslast auszuführen, können Sie den Ressourcenverbrauch mit den Messwerten im Metrics Explorer überwachen.
Bewertung für Reproduzierbarkeit und Standardisierung automatisieren
Um Modelle von Prototypen zu zuverlässigen Produktionssystemen zu machen, benötigen Sie einen standardisierten Bewertungsprozess. So können Sie den Fortschritt über Iterationen hinweg verfolgen, verschiedene Modelle vergleichen, Verzerrungen erkennen und reduzieren und dafür sorgen, dass Sie die behördlichen Anforderungen erfüllen. Um Reproduzierbarkeit und Skalierbarkeit zu gewährleisten, müssen Sie den Bewertungsprozess automatisieren.
So standardisieren und automatisieren Sie den Bewertungsprozess für die ML-Leistung:
- Quantitative und qualitative Indikatoren definieren
- Wählen Sie geeignete Datenquellen und Techniken aus.
- Bewertungspipeline standardisieren
Diese Schritte werden in den folgenden Abschnitten beschrieben.
1. Quantitative und qualitative Indikatoren definieren
Berechnungsbasierte Messwerte werden mithilfe numerischer Formeln berechnet. Trainingsverlust-Messwerte können sich von den Bewertungs-Messwerten unterscheiden, die für Geschäftsziele relevant sind. Ein Modell, das für die überwachte Betrugserkennung verwendet wird, kann beispielsweise den Cross-Entropy-Verlust für das Training verwenden. Um die Leistung der Inferenz zu bewerten, ist jedoch möglicherweise ein relevanterer Messwert erforderlich, nämlich die Trefferquote, die angibt, wie viele betrügerische Transaktionen erkannt wurden. Vertex AI bietet einen Bewertungsdienst für Messwerte wie Recall, Precision und Fläche unter der Precision-Recall-Kurve (AuPRC). Weitere Informationen finden Sie unter Modellbewertung in Vertex AI.
Qualitative Indikatoren wie die Flüssigkeit oder der Unterhaltungswert generierter Inhalte können nicht objektiv berechnet werden. Um diese Indikatoren zu bewerten, können Sie die Strategie LLM-as-a-judge oder menschliche Labeling-Dienste wie Labelbox verwenden.
2. Geeignete Datenquellen und Techniken auswählen
Eine Auswertung ist statistisch signifikant, wenn sie auf einer bestimmten Mindestmenge an unterschiedlichen Beispielen basiert. Wählen Sie die Datasets und Techniken aus, die Sie für die Auswertungen verwenden, indem Sie beispielsweise so vorgehen:
- Golden Dataset: Verwenden Sie vertrauenswürdige, konsistente und genaue Datenstichproben, die die Wahrscheinlichkeitsverteilung eines Modells in der Produktion widerspiegeln.
- LLM-as-a-judge: Die Ausgabe eines generativen Modells mit einem LLM bewerten. Dieser Ansatz ist nur für Aufgaben relevant, bei denen ein LLM ein Modell bewerten kann.
- Nutzerfeedback: Erfassen Sie direktes Nutzerfeedback als Teil des Produktionsverkehrs, um zukünftige Verbesserungen zu ermöglichen.
Je nach Bewertungsmethode, Größe und Art der Bewertungsdaten sowie Häufigkeit der Bewertung können Sie BigQuery oder Cloud Storage als Datenquellen verwenden, auch für den Vertex AI-Bewertungsdienst.
- Mit BigQuery können Sie SQL-Befehle verwenden, um Inferenzaufgaben wie die Verarbeitung natürlicher Sprache und die maschinelle Übersetzung auszuführen. Weitere Informationen finden Sie unter Aufgabenspezifische Lösungen – Übersicht.
- Cloud Storage bietet eine kostengünstige Speicherlösung für große Datasets.
3. Bewertungspipeline standardisieren
Um den Bewertungsprozess zu automatisieren, können Sie die folgenden Dienste und Tools in Betracht ziehen:
- Vertex AI Evaluation Service: Bietet sofort einsatzbereite Primitiven, um die Modellleistung als Teil des ML-Lebenszyklus in Vertex AI zu verfolgen.
- Gen AI Evaluation Service: Damit können Sie jedes generative Modell oder jede generative Anwendung bewerten und die Bewertungsergebnisse anhand Ihrer eigenen Bewertungskriterien mit Ihrem eigenen Urteil vergleichen. Dieser Dienst unterstützt Sie auch bei der Ausführung spezieller Aufgaben wie Prompt Engineering, Retrieval-Augmented Generation (RAG) und KI-Agentenoptimierung.
- Vertex AI AutoSxS-Tool: Unterstützt die paarweise modellbasierte Bewertung.
- Kubeflow: Bietet spezielle Komponenten zum Ausführen von Modellbewertungen.
Häufige Tests ausführen und verfolgen
Um die ML-Leistung effektiv zu optimieren, benötigen Sie eine spezielle, leistungsstarke und interaktive Plattform für Tests. Die Plattform muss die folgenden Funktionen bieten:
- Ermöglichen Sie eine iterative Entwicklung, damit Teams schnell, zuverlässig und in großem Umfang von der Idee zu validierten Ergebnissen gelangen können.
- Teams können effizient optimale Konfigurationen ermitteln, mit denen sie Trainingsjobs auslösen können.
- Kontrollierten Zugriff auf relevante Daten, Funktionen und Tools für die Durchführung und Analyse von Tests ermöglichen.
- Reproduzierbarkeit und Data Lineage-Tracking unterstützen.
Daten als Dienst behandeln
Isolieren Sie experimentelle Arbeitslasten von Produktionssystemen und richten Sie geeignete Sicherheitskontrollen für Ihre Datenassets ein. Verwenden Sie dazu die folgenden Techniken:
| Verfahren | Beschreibung | Vorteile |
|---|---|---|
| Ressourcenisolation | Ressourcen für verschiedene Umgebungen in separaten Google Cloud Projekten isolieren Stellen Sie beispielsweise die Ressourcen für Entwicklungs-, Staging- und Produktionsumgebungen in separaten Projekten wie ml-dev, ml-staging und ml-prod bereit. |
Durch die Ressourcenisolation wird verhindert, dass experimentelle Arbeitslasten Ressourcen verbrauchen, die für Produktionssysteme benötigt werden. Wenn Sie beispielsweise ein einzelnes Projekt für Experimente und die Produktion verwenden, kann ein Experiment alle verfügbaren NVIDIA A100-GPUs für Vertex AI Training belegen. Dies kann zu Unterbrechungen beim erneuten Trainieren eines wichtigen Produktionsmodells führen. |
| Identitäts- und Zugriffssteuerung | Wenden Sie die Grundsätze von Zero Trust und geringster Berechtigung an und verwenden Sie arbeitslastspezifische Dienstkonten. Gewähren Sie Zugriff über vordefinierte IAM-Rollen wie Vertex AI-Nutzer (roles/aiplatform.user). |
So lassen sich versehentliche oder böswillige Aktionen verhindern, die sich negativ auf Ihre Tests auswirken könnten. |
| Netzwerksicherheit | Isolieren Sie den Netzwerkverkehr mit VPC-Netzwerken (Virtual Private Cloud) und erzwingen Sie Sicherheitsgrenzen mit VPC Service Controls. | Dieser Ansatz trägt dazu bei, sensible Daten zu schützen und zu verhindern, dass sich Testdaten auf Produktionsdienste auswirken. |
| Datenisolation | Speichern Sie Testdaten in separaten Cloud Storage-Buckets und BigQuery-Datasets. | Durch die Datenisolation wird verhindert, dass Produktionsdaten versehentlich geändert werden. Ohne Datenisolation kann es beispielsweise passieren, dass durch einen Test versehentlich die Feature-Werte in einer freigegebenen BigQuery-Tabelle geändert werden, was zu einer erheblichen Beeinträchtigung der Modellgenauigkeit in der Produktionsumgebung führen kann. |
Teams mit geeigneten Tools ausstatten
Um eine kuratierte Reihe von Tools zu erstellen, mit denen der gesamte Experimentierzyklus beschleunigt werden kann – von der Datenexploration über das Modelltraining bis hin zur Analyse –, verwenden Sie die folgenden Techniken:
- Interaktives Prototyping: Für die schnelle Datenanalyse, das Testen von Hypothesen und das Prototyping von Code können Sie Colab Enterprise oder verwaltete JupyterLab-Instanzen in Vertex AI Workbench verwenden. Weitere Informationen finden Sie unter Notebooklösung auswählen.
- Skalierbares Modelltraining: Führen Sie Trainingsjobs für einen verwalteten Dienst aus, der verteiltes Training und skalierbare Rechenressourcen wie GPUs und TPUs unterstützt. So lässt sich die Trainingszeit von Tagen auf Stunden verkürzen und es können mehr parallele Tests durchgeführt werden. Weitere Informationen finden Sie unter Spezialisierte Komponenten für das Training verwenden.
- In-Database ML: Modelle direkt in BigQuery ML mit SQL trainieren. Mit dieser Technik wird die Datenübertragung vermieden und die Durchführung von Tests für Analysten und SQL-orientierte Nutzer beschleunigt.
- Tests verfolgen: Erstellen Sie einen durchsuchbaren und vergleichbaren Verlauf von Testdaten, indem Sie Parameter, Messwerte und Artefakte für jeden Testlauf protokollieren. Weitere Informationen finden Sie unter System zur Nachvollziehbarkeit von Daten und Modellen erstellen.
- Generative KI optimieren: Um die Leistung von generativen KI-Anwendungen zu optimieren, müssen Sie mit Prompts, der Modellauswahl und der Feinabstimmung experimentieren. Für schnelles Prompt Engineering verwenden Sie Vertex AI Studio. Mit Model Garden können Sie mit Foundation Models wie Gemini experimentieren und ein Modell finden, das für Ihren Anwendungsfall und Ihre Geschäftsziele geeignet ist.
Standardisieren für Reproduzierbarkeit und Effizienz
Damit Ressourcen in Tests effizient genutzt werden und konsistente und zuverlässige Ergebnisse erzielt werden, sollten Sie Tests standardisieren und automatisieren. Verwenden Sie dazu die folgenden Ansätze:
- Für konsistente Umgebungen sorgen, indem Container verwendet werden: Verpacken Sie Ihren Trainingscode und Ihre Abhängigkeiten als Docker-Container. Verwalten und stellen Sie die Container mit Artifact Registry bereit. Mit diesem Ansatz können Sie Probleme auf verschiedenen Computern reproduzieren, indem Sie Experimente in identischen Umgebungen wiederholen. Vertex AI bietet vordefinierte Container für serverloses Training.
- ML-Workflows als Pipelines automatisieren: Orchestrieren Sie den End-to-End-ML-Workflow als codifizierte Pipeline mit Vertex AI Pipelines. Dieser Ansatz trägt dazu bei, die Konsistenz zu erzwingen, die Reproduzierbarkeit zu gewährleisten und alle Artefakte und Metadaten automatisch in Vertex ML Metadata zu erfassen.
- Bereitstellung mit Infrastructure as Code (IaC) automatisieren: Definieren und stellen Sie standardisierte Testumgebungen mit IaC-Tools wie Terraform bereit. Verwenden Sie Terraform-Module, um sicherzustellen, dass jedes Projekt eine standardisierte Reihe von Konfigurationen für Sicherheit, Netzwerk und Governance einhält.
Training und Bereitstellungsinfrastruktur erstellen und automatisieren
Um KI-Modelle zu trainieren und bereitzustellen, müssen Sie eine robuste Plattform einrichten, die eine effiziente und zuverlässige Entwicklung, Bereitstellung und Bereitstellung unterstützt. Mit dieser Plattform können Ihre Teams die Qualität und Leistung von Training und Bereitstellung langfristig effizient verbessern.
Spezialisierte Komponenten für das Training verwenden
Eine zuverlässige Trainingsplattform trägt dazu bei, die Leistung zu steigern, und bietet einen standardisierten Ansatz, um wiederholbare Aufgaben im ML-Lebenszyklus zu automatisieren – von der Datenvorbereitung bis zur Modellvalidierung.
Datenerhebung und -vorbereitung: Für ein effektives Modelltraining müssen Sie die Daten erheben und vorbereiten, die für das Training, das Testen und die Validierung erforderlich sind. Die Daten können aus verschiedenen Quellen stammen und unterschiedliche Datentypen haben. Außerdem müssen Sie relevante Daten aus verschiedenen Trainingsläufen wiederverwenden und Funktionen teamübergreifend nutzen. Um die Wiederholbarkeit der Datenerhebung und ‑vorbereitung zu verbessern, sollten Sie die folgenden Empfehlungen berücksichtigen:
- Die Auffindbarkeit von Daten mit dem Dataplex Universal Catalog verbessern
- Feature-Engineering im Vertex AI Feature Store zentralisieren
- Daten mit Dataflow vorverarbeiten
Training: Wenn Sie ein Modell trainieren, verwenden Sie Daten, um ein Modellobjekt zu erstellen. Dazu müssen Sie die erforderliche Infrastruktur und die Abhängigkeiten des Trainingscodes einrichten. Außerdem müssen Sie entscheiden, wie Sie die Trainingsmodelle beibehalten, den Trainingsfortschritt verfolgen, das Modell bewerten und die Ergebnisse präsentieren. Zur Verbesserung der Wiederholbarkeit des Trainings sollten Sie die folgenden Empfehlungen berücksichtigen:
- Halten Sie sich an die Richtlinien unter Bewertung zur Reproduzierbarkeit und Standardisierung automatisieren.
- Wenn Sie Trainingsjobs auf einem oder mehreren Worker-Knoten ausführen möchten, ohne die zugrunde liegende Infrastrukturbereitstellung oder Abhängigkeiten verwalten zu müssen, verwenden Sie die
CustomJob-Ressource in Vertex AI Training. Sie können dieCustomJob-Ressource auch für Hyperparameter-Abstimmungsjobs verwenden. - Scheduling-Goodput optimieren mit dem Dynamic Workload Scheduler oder Reservierungen für Vertex AI Training.
- Registrieren Sie Ihre Modelle in der Vertex AI Model Registry.
Orchestrierung des Trainings: Stellen Sie Trainingsarbeitslasten als Phasen einer Pipeline mit Vertex AI Pipelines bereit. Dieser Dienst bietet verwaltete Kubeflow- und TFX-Dienste. Definieren Sie jeden Schritt der Pipeline als Komponente, die in einem Container ausgeführt wird. Jede Komponente funktioniert wie eine Funktion mit Eingabeparametern und Ausgabeartefakten, die zu Eingaben für die nachfolgenden Komponenten in der Pipeline werden. Um die Effizienz Ihrer Pipeline zu optimieren, sollten Sie die Empfehlungen in der folgenden Tabelle berücksichtigen:
Ziel Empfehlungen Implementieren Sie die Kernautomatisierung. - Kubeflow Pipelines-Komponenten verwenden.
- Verwenden Sie Kontrollflüsse für erweiterte Pipeline-Designs, z. B. bedingte Gates.
- Binden Sie die Pipeline-Kompilierung in Ihren CI/CD-Ablauf ein.
- Führen Sie die Pipeline mit Cloud Scheduler aus.
Schneller und kosteneffizienter arbeiten - Um die Geschwindigkeit von Iterationen zu erhöhen und die Kosten zu senken, können Sie den Ausführungscache von Vertex AI Pipelines verwenden.
- Geben Sie die Maschinenkonfiguration für jede Komponente basierend auf den Ressourcenanforderungen der einzelnen Schritte an.
Robustheit erhöhen - Wenn Sie die Robustheit gegenüber vorübergehenden Problemen erhöhen möchten, ohne dass manuelle Eingriffe erforderlich sind, konfigurieren Sie Wiederholungsversuche.
- Um schnell Fehler zu erkennen und effizient zu iterieren, konfigurieren Sie eine Fehlerrichtlinie.
- Um Fehler zu beheben, konfigurieren Sie E-Mail-Benachrichtigungen.
Governance und Tracking implementieren - Wenn Sie verschiedene Modellkonfigurationen oder Trainingskonfigurationen testen möchten, fügen Sie Tests Pipelineausführungen hinzu.
- Protokolle und Messwerte für Vertex AI Pipelines überwachen.
- Folgen Sie den Empfehlungen unter Leistung in allen Phasen des Modelllebenszyklus im Blick behalten.
Spezialisierte Infrastruktur für Vorhersagen verwenden
Um den Aufwand für die Verwaltung von Infrastruktur und Modellbereitstellungen zu verringern, sollten Sie wiederholbare Aufgabenabläufe automatisieren. Mit einem serviceorientierten Ansatz können Sie sich auf Geschwindigkeit und eine schnellere Amortisierung konzentrieren. Beachten Sie die folgenden Empfehlungen:
| Empfehlung | Techniken |
|---|---|
| Automatische Bereitstellung implementieren |
|
| Verwenden Sie Funktionen für die verwaltete Skalierung. |
|
| Latenz und Durchsatz an Vertex AI-Endpunkten optimieren |
|
| Ressourcennutzung optimieren. |
|
| Modellbereitstellung optimieren |
|
| Leistung beobachten |
|
Designentscheidungen an Leistungsanforderungen anpassen
Wenn Sie Designentscheidungen treffen, um die Leistung zu verbessern, sollten Sie prüfen, ob diese Entscheidungen Ihre geschäftlichen Anforderungen unterstützen oder verschwenderisch und kontraproduktiv sind. Um die richtige Infrastruktur, die richtigen Modelle und Konfigurationen auszuwählen, müssen Sie Leistungsengpässe identifizieren und bewerten, wie sie mit Leistungsmesswerten zusammenhängen. Selbst bei sehr leistungsstarken GPU-Beschleunigern kann es beispielsweise bei Trainingsaufgaben zu Leistungsengpässen kommen. Diese Engpässe können durch Probleme bei der Daten-E/A in der Speicherebene oder durch Leistungseinschränkungen des Modells verursacht werden.
Ganzheitliche Leistung des ML-Ablaufs im Blick behalten
Wenn die Trainingsanforderungen in Bezug auf Modellgröße und Clustergröße steigen, können sich die Fehlerrate und die Infrastrukturkosten erhöhen. Die Kosten für einen Fehler können daher quadratisch steigen. Sie können sich nicht nur auf herkömmliche Messwerte für die Ressourceneffizienz wie die FLOP-Auslastung des Modells (MFU) verlassen. Um zu verstehen, warum MFU möglicherweise kein ausreichender Indikator für die Gesamtleistung des Trainings ist, sehen Sie sich den Lebenszyklus eines typischen Trainingsjobs an. Der Lebenszyklus besteht aus dem folgenden zyklischen Ablauf:
- Clustererstellung: Worker-Knoten werden bereitgestellt.
- Initialisierung: Das Training wird auf den Worker-Knoten initialisiert.
- Trainingsausführung: Ressourcen werden für die Vorwärts- oder Rückwärtsweitergabe verwendet.
- Unterbrechung: Der Trainingsprozess wird während der Modell-Checkpointing-Phase oder aufgrund von Worker-Knoten-Preemptions unterbrochen.
Nach jeder Unterbrechung wird der vorherige Ablauf wiederholt.
Der Schritt zur Ausführung des Trainings macht nur einen Teil des Lebenszyklus eines ML-Jobs aus. Die Auslastung von Worker-Knoten für den Trainingsausführungsschritt gibt daher nicht die Gesamteffizienz des Jobs an. Selbst wenn der Trainingsausführungsschritt beispielsweise mit 100% Effizienz ausgeführt wird, kann die Gesamteffizienz niedrig sein, wenn häufig Unterbrechungen auftreten oder es lange dauert, bis das Training nach Unterbrechungen fortgesetzt wird.
Goodput-Messwerte einführen und erfassen
Um eine ganzheitliche Leistungsmessung und ‑optimierung zu ermöglichen, sollten Sie sich nicht mehr auf herkömmliche Kennzahlen für die Ressourceneffizienz wie die MFU konzentrieren, sondern auf den effektiven Durchsatz. Der Goodput berücksichtigt die Verfügbarkeit und Nutzung Ihrer Cluster und Rechenressourcen und hilft, die Ressourceneffizienz über mehrere Ebenen hinweg zu messen.
Der Fokus von Goodput-Messwerten liegt auf dem Gesamtfortschritt eines Jobs und nicht darauf, ob der Job beschäftigt zu sein scheint. Mit Goodput-Messwerten können Sie Trainingsjobs optimieren, um die Produktivität und Leistung insgesamt zu steigern.
Mit Goodput erhalten Sie anhand der folgenden Messwerte einen detaillierten Überblick über potenzielle Effizienzverluste:
- Der Planungs-Goodput ist der Bruchteil der Zeit, in der alle für das Training oder die Bereitstellung erforderlichen Ressourcen verfügbar sind.
- Der Laufzeit-Goodput gibt den Anteil der nützlichen Trainingsschritte an, die in einem bestimmten Zeitraum abgeschlossen werden.
- Der Programm-Goodput ist die maximale Hardwareleistung oder MFU, die ein Trainingsjob vom Beschleuniger abrufen kann. Das hängt von der effizienten Nutzung der zugrunde liegenden Rechenressourcen während des Trainings ab.
Planungs-Goodput optimieren
Um den Scheduling-Goodput für eine Arbeitslast zu optimieren, müssen Sie die spezifischen Infrastrukturanforderungen der Arbeitslast ermitteln. Für Batch-Inferenz, Streaming-Inferenz und Training gelten beispielsweise unterschiedliche Anforderungen:
- Bei Batch-Inferenz-Arbeitslasten sind möglicherweise einige Unterbrechungen und Verzögerungen bei der Ressourcenverfügbarkeit möglich.
- Für Streaming-Inferenzarbeitslasten ist eine zustandslose Infrastruktur erforderlich.
- Für Trainingsarbeitslasten sind langfristige Infrastrukturzusagen erforderlich.
Geeignete Zugänglichkeitsmodi auswählen
Im Cloud-Computing ist Verfügbarkeit die Möglichkeit, Ressourcen bereitzustellen, wenn sie benötigt werden. Google Cloud bietet die folgenden Verfügbarkeitsmodi:
- On-Demand-VMs: Sie stellen Compute Engine-VMs bereit, wenn sie benötigt werden, und führen Ihre Arbeitslasten auf den VMs aus. Die Bereitstellungsanfrage unterliegt der Verfügbarkeit von Ressourcen wie GPUs. Wenn nicht genügend Ressourcen des angeforderten Typs verfügbar sind, schlägt die Anfrage fehl.
- Spot-VMs: Sie erstellen VMs mit ungenutzter Rechenkapazität. Spot-VMs werden im Vergleich zu On-Demand-VMs zu einem ermäßigten Preis abgerechnet, aberGoogle Cloud kannvorzeitig beendet werden. Wir empfehlen, Spot-VMs für zustandslose Arbeitslasten zu verwenden, die bei der Unterbrechung der Host-VMs ordnungsgemäß fehlschlagen können.
- Reservierungen: Sie reservieren Kapazität als Pool von VMs. Reservierungen sind ideal für Arbeitslasten, die eine Kapazitätsgarantie erfordern. Mit Reservierungen können Sie den Scheduling-Goodput maximieren, da Ressourcen bei Bedarf verfügbar sind.
Dynamic Workload Scheduler: Bei diesem Bereitstellungsmechanismus werden Anfragen für GPU-basierte VMs in einem dedizierten Pool in die Warteschlange gestellt. Mit dem Dynamic Workload Scheduler können Sie die Einschränkungen der anderen Modi für die Verfügbarkeit umgehen:
- Situationen, in denen Artikel im On-Demand-Modus nicht vorrätig sind.
- Einschränkung der Statusfreiheit und Risiko des vorzeitigen Beendens von Spot-VMs.
- Auswirkungen von Reservierungen auf Kosten und Verfügbarkeit.
In der folgenden Tabelle sind die Verfügbarkeitsmodi für Google Cloud-Dienste zusammengefasst. Außerdem finden Sie Links zur relevanten Dokumentation:
| Produkt | On-Demand-VMs | Spot-VMs | Reservierungen | Dynamic Workload Scheduler |
|---|---|---|---|---|
| Compute Engine | Compute Engine-Instanz erstellen und starten | Informationen zu Spot-VMs | Reservierungen | MIG mit GPU-VMs erstellen |
| GKE | Knotenpools hinzufügen und verwalten | Spot-VMs in GKE | Reservierte zonale Ressourcen nutzen | GPU-, TPU- und H4D-Nutzung mit dem Bereitstellungsmodus „Flex-Start“ |
| Cloud Batch | Job erstellen und ausführen | Batchjob mit Spot-VMs | Ressourcenverfügbarkeit mit VM-Reservierungen sicherstellen | GPUs und Flex-Start-VMs verwenden |
| Vertex AI Training | Serverlosen Trainingsjob erstellen | Spot-VMs für Trainingsjobs verwenden | Reservierungen für Trainingsjobs verwenden | Trainingsjobs basierend auf der Ressourcenverfügbarkeit planen |
| Vertex AI | Batchinferenzen und Onlineinferenzen aus benutzerdefinierten trainierten Modellen abrufen. | Spot-VMs für die Inferenz verwenden | Reservierungen für die Onlineinferenz verwenden | Flex-Start-VMs für die Inferenz verwenden |
Wartungsereignisse planen
Sie können den Scheduling-Goodput verbessern, indem Sie Infrastrukturwartung und ‑upgrades vorhersagen und planen.
Mit GKE können Sie steuern, wann automatische Clusterwartungen für Ihre Cluster durchgeführt werden dürfen. Weitere Informationen finden Sie unter Wartungsfenster und ‑ausschlüsse.
Compute Engine bietet die folgenden Funktionen:
- Damit eine Instanz während eines Hostereignisses, z. B. einer geplanten Wartung der zugrunde liegenden Hardware, weiter ausgeführt wird, führt Compute Engine eine Live-Migration der Instanz zu einem anderen Host in derselben Zone aus. Weitere Informationen finden Sie unter Live-Migrationsprozess während Wartungsereignissen.
- Sie können eine Hostwartungsrichtlinie für die Instanz festlegen, um zu steuern, wie eine Instanz reagiert, wenn der zugrunde liegende Host gewartet werden muss oder ein Fehler auftritt.
Informationen zum Planen von Hostereignissen, die sich auf große Trainingscluster in AI Hypercomputer beziehen, finden Sie unter Hostereignisse für Compute-Instanzen verwalten.
Goodput der Laufzeit optimieren
Der Modelltrainingsprozess wird häufig durch Ereignisse wie das Speichern von Modellprüfpunkten und die Ressourcenunterbrechung unterbrochen. Um den Laufzeit-Goodput zu optimieren, müssen Sie dafür sorgen, dass das System das Training und die Inferenz effizient fortsetzt, nachdem die erforderliche Infrastruktur bereit ist und nach jeder Unterbrechung.
Beim Modelltraining verwenden KI-Forscher Checkpointing, um den Fortschritt zu verfolgen und den Lernverlust aufgrund von Ressourcenunterbrechungen zu minimieren. Bei größeren Modellen dauert das Speichern von Checkpoints länger, was sich zusätzlich auf die Gesamteffizienz auswirkt. Nach Unterbrechungen muss die Trainingsanwendung auf jedem Knoten im Cluster neu gestartet werden. Diese Neustarts können einige Zeit in Anspruch nehmen, da die erforderlichen Artefakte neu geladen werden müssen.
Verwenden Sie die folgenden Techniken, um den Laufzeit-Goodput zu optimieren:
| Verfahren | Beschreibung |
|---|---|
| Automatische Prüfpunkte implementieren. | Durch häufige Prüfpunkte können Sie den Fortschritt des Trainings auf detaillierter Ebene verfolgen. Der Trainingsprozess wird jedoch für jeden Prüfpunkt unterbrochen, was den Laufzeit-Goodput verringert. Um Unterbrechungen zu minimieren, können Sie die automatische Erstellung von Prüfpunkten einrichten. Das SIGTERM-Signal des Hosts löst dann die Erstellung eines Prüfpunkts aus. Mit diesem Ansatz werden Unterbrechungen durch Checkpointing auf die Zeiten beschränkt, in denen der Host gewartet werden muss. Denken Sie daran, dass einige Hardwarefehler möglicherweise keine SIGTERM-Signale auslösen. Sie müssen daher ein geeignetes Gleichgewicht zwischen automatischen Checkpoints und SIGTERM-Ereignissen finden. Sie können automatische Prüfpunkte mit den folgenden Methoden einrichten:
|
| Verwenden Sie geeignete Strategien zum Laden von Containern. | In einem GKE-Cluster kann es einige Zeit dauern, bis die erforderlichen Artefakte wie Daten oder Modell-Checkpoints geladen sind, bevor die Knoten Trainingsjobs fortsetzen können. Verwenden Sie die folgenden Techniken, um die Zeit zu verkürzen, die zum erneuten Laden von Daten und zum Fortsetzen des Trainings erforderlich ist:
Weitere Informationen dazu, wie Sie die Zeit für das erneute Laden von Daten verkürzen können, finden Sie unter Tipps und Tricks zur Reduzierung der Kaltstartlatenz in GKE. |
| Kompilierungs-Cache verwenden. | Wenn für das Training ein auf der Kompilierung basierender Stack erforderlich ist, prüfen Sie, ob Sie einen Kompilierungscache verwenden können. Wenn Sie einen Kompilierungscache verwenden, wird der Berechnungs-Graph nach jeder Trainingsunterbrechung nicht neu kompiliert. Die daraus resultierenden Zeit- und Kostenreduzierungen sind besonders vorteilhaft, wenn Sie TPUs verwenden. Mit JAX können Sie den Kompilierungscache in einem Cloud Storage-Bucket speichern und die Cache-Daten bei Unterbrechungen verwenden. |
Programm-Goodput optimieren
Der Programm-Goodput gibt die maximale Ressourcennutzung während des Trainings an. Dies ist die herkömmliche Methode zur Messung der Effizienz von Training und Bereitstellung. Um den Goodput des Programms zu verbessern, benötigen Sie eine optimierte Verteilungsstrategie, eine effiziente Überschneidung von Berechnung und Kommunikation, einen optimierten Speicherzugriff und effiziente Pipelines.
So optimieren Sie den Programm-Goodput:
| Strategie | Beschreibung |
|---|---|
| Anpassungsoptionen auf Framework-Ebene verwenden | Frameworks oder Compiler wie Accelerated Linear Algebra (XLA) bieten viele wichtige Komponenten für den Programm-Goodput. Um die Leistung weiter zu optimieren, können Sie grundlegende Komponenten des Berechnungsdiagramms anpassen. Pallas unterstützt beispielsweise benutzerdefinierte Kernel für TPUs und GPUs. |
| Arbeitsspeicher auf den Host-DRAM auslagern | Bei umfangreichen Trainings, die einen erheblichen Arbeitsspeicher von Beschleunigern erfordern, können Sie einen Teil der Arbeitsspeichernutzung auf den Host-DRAM auslagern. Mit XLA können Sie beispielsweise Modellaktivierungen aus dem Forward-Pass in den Hostspeicher auslagern, anstatt den Speicher des Beschleunigers zu verwenden. Mit dieser Strategie können Sie die Trainingsleistung verbessern, indem Sie die Modellkapazität oder die Batchgröße erhöhen. |
| Quantisierung während des Trainings nutzen. | Sie können die Trainingseffizienz und den Durchsatz des Programms verbessern, indem Sie die Modellquantisierung während des Trainings nutzen. Bei dieser Strategie wird die Genauigkeit der Gradienten oder Gewichte in bestimmten Schritten des Trainings reduziert. Dadurch wird der Programm-Goodput verbessert. Diese Strategie erfordert jedoch möglicherweise zusätzlichen Entwicklungsaufwand während der Modellentwicklung. Weitere Informationen finden Sie in den folgenden Ressourcen: |
| Parallelität implementieren | Um die Auslastung der verfügbaren Rechenressourcen zu erhöhen, können Sie während des Trainings und beim Laden von Daten Parallelitätsstrategien auf Modellebene verwenden. Weitere Informationen zu Modellparallelität finden Sie hier:
Um Datenparallelität zu erreichen, können Sie Tools wie die folgenden verwenden:
|
Arbeitslastspezifische Anforderungen berücksichtigen
Damit Ihre Bemühungen zur Leistungsoptimierung effektiv und ganzheitlich sind, müssen Sie Optimierungsentscheidungen an die spezifischen Anforderungen Ihrer Trainings- und Inferenz-Arbeitslasten anpassen. Wählen Sie geeignete KI-Modelle aus und verwenden Sie relevante Strategien zur Prompt-Optimierung. Wählen Sie geeignete Frameworks und Tools basierend auf den Anforderungen Ihrer Arbeitslasten aus.
Arbeitslastspezifische Anforderungen ermitteln
Prüfen Sie die Anforderungen und Einschränkungen Ihrer Arbeitslasten in den folgenden Bereichen:
| Gebiet | Beschreibung |
|---|---|
| Aufgaben- und Qualitätsanforderungen | Definieren Sie die Kernaufgabe der Arbeitslast und die Leistungs-Baseline. Beantworten Sie Fragen wie die folgenden:
|
| Kontext der Auslieferung | Analysieren Sie die Betriebsumgebung, in der Sie das Modell bereitstellen möchten. Der Bereitstellungskontext hat oft einen erheblichen Einfluss auf Designentscheidungen. Berücksichtigen Sie die folgenden Faktoren:
|
| Teamfähigkeiten und Wirtschaftlichkeit | Bewerten Sie den geschäftlichen Wert des Kaufs der Lösung im Vergleich zu den Kosten und der Komplexität der Entwicklung und Wartung. Stellen Sie fest, ob Ihr Team die für die Entwicklung benutzerdefinierter Modelle erforderlichen Fachkenntnisse hat oder ob ein verwalteter Dienst eine schnellere Wertschöpfung ermöglicht. |
Geeignetes Modell auswählen
Wenn eine API oder ein offenes Modell die erforderliche Leistung und Qualität liefern kann, verwenden Sie diese API oder dieses Modell.
Für modalitätsspezifische Aufgaben wie optische Zeichenerkennung (OCR), Labeling und Inhaltsmoderation können Sie ML APIs wie die folgenden verwenden:
Für generative KI-Anwendungen sollten Sie Google-Modelle wie Gemini, Imagen und Veo in Betracht ziehen.
Model Garden bietet eine kuratierte Sammlung von Foundation Models und aufgabenspezifischen Google-Modellen. Model Garden bietet auch offene Modelle wie Gemma und Drittanbietermodelle, die Sie in Vertex AI ausführen oder in Laufzeitumgebungen wie GKE bereitstellen können.
Wenn eine Aufgabe entweder mit einer ML API oder einem generativen KI-Modell erledigt werden kann, sollten Sie die Komplexität der Aufgabe berücksichtigen. Bei komplexen Aufgaben können große Modelle wie Gemini eine höhere Leistung erbringen als kleinere Modelle.
Qualität durch bessere Prompts verbessern
Mit dem Vertex AI Prompt Optimizer können Sie die Qualität Ihrer Prompts skalierbar verbessern. Sie müssen Systemanweisungen und Prompts nicht manuell neu schreiben. Der Prompt-Optimierer unterstützt die folgenden Ansätze:
- Zero-Shot-Optimierung: Ein Ansatz mit niedriger Latenz, der einen einzelnen Prompt oder eine Systemanweisung in Echtzeit verbessert.
- Datengetriebene Optimierung: Ein fortschrittlicher Ansatz, bei dem Prompts verbessert werden, indem die Antworten eines Modells auf Beispiel-Prompts anhand bestimmter Bewertungsmetriken ausgewertet werden.
Weitere Richtlinien zur Prompt-Optimierung finden Sie unter Übersicht über Prompt-Strategien.
Leistung für Endpunkte für ML und generative KI verbessern
Wenn Sie die Latenz oder den Durchsatz (Tokens pro Sekunde) für Endpunkte für maschinelles Lernen und generative KI verbessern möchten, sollten Sie die folgenden Empfehlungen berücksichtigen:
- Ergebnisse mit Memorystore im Cache speichern.
- Verwenden Sie für generative KI-APIs die folgenden Techniken:
- Kontext-Caching: Sie können die Latenz für Anfragen mit wiederholten Inhalten verringern.
- Bereitgestellter Durchsatz: Sie können den Durchsatz für Gemini-Endpunkte verbessern, indem Sie Durchsatzkapazität reservieren.
- Für selbst gehostete Modelle kommen die folgenden optimierten Inferenz-Frameworks infrage:
Framework Notebooks und Anleitungen Optimierte vLLM-Container in Model Garden Offene Modelle mit vordefinierten Containern bereitstellen GPU-basierte Inferenz in GKE TPU-basierte Inferenz
Low-Code-Lösungen und -Abstimmung verwenden
Wenn vortrainierte Modelle Ihre Anforderungen nicht erfüllen, können Sie ihre Leistung für bestimmte Bereiche mit den folgenden Lösungen verbessern:
- AutoML ist eine Low-Code-Lösung, mit der sich die Inferenz-Ergebnisse für eine Vielzahl von Aufgaben mit minimalem technischen Aufwand verbessern lassen. Mit AutoML können Sie Modelle erstellen, die in mehreren Dimensionen optimiert sind: Architektur, Leistung und Trainingsphase (durch Checkpointing).
- Abstimmung ermöglicht eine höhere Qualität, eine stabilere Generierung und eine geringere Latenz mit kürzeren Prompts und ohne viele Daten. Wir empfehlen, mit den Standardwerten für Hyperparameter zu beginnen. Weitere Informationen finden Sie unter Supervised Fine Tuning for Gemini: A best practices guide.
Selbstverwaltete Trainings optimieren
In einigen Fällen möchten Sie möglicherweise ein Modell neu trainieren oder einen Feinabstimmungsjob vollständig verwalten. Dieser Ansatz erfordert je nach verwendetem Modell, Framework und den verwendeten Ressourcen fortgeschrittene Kenntnisse und zusätzlichen Zeitaufwand.
Nutzen Sie leistungsoptimierte Framework-Optionen wie die folgenden:
Verwenden Sie Deep-Learning-Images oder Container, die die neuesten Softwareabhängigkeiten undGoogle Cloud-spezifischen Bibliotheken enthalten.
Modelltraining mit Ray auf Google Cloudausführen:
- Mit Ray on Vertex AI können Sie das Framework für verteiltes Training von Ray in Compute Engine oder GKE nutzen und den Verwaltungsaufwand für das Framework reduzieren.
- Sie können Ray in GKE mit KubeRay selbst verwalten, indem Sie den Ray-Operator in einem vorhandenen Cluster bereitstellen.
Stellen Sie Trainingsarbeitslasten in einem Compute-Cluster bereit, den Sie mit dem Open-Source-Cluster Toolkit bereitstellen. Um leistungsoptimierte Cluster effizient bereitzustellen, verwenden Sie YAML-basierte Blueprints. Verwalten Sie die Cluster mit Schedulern wie Slurm und GKE.
Standardmodellarchitekturen mit GPU-optimierten Rezepten trainieren.
Erstellen Sie Trainingsarchitekturen und ‑strategien, die die Leistung mithilfe der folgenden Techniken optimieren:
- Verteiltes Training in Vertex AI oder in den oben beschriebenen Frameworks implementieren. Das verteilte Training ermöglicht Modell- und Datenparallelität, wodurch die Größe des Trainingsdatasets und des Modells erhöht und die Trainingszeit verkürzt werden kann.
- Für ein effizientes Modelltraining und um verschiedene Leistungskonfigurationen zu testen, sollten Sie in angemessenen Intervallen Checkpointing durchführen. Weitere Informationen finden Sie unter Laufzeit-Goodput optimieren.
Selbstverwaltete Bereitstellung optimieren
Für die selbstverwaltete Bereitstellung benötigen Sie effiziente Inferenzvorgänge und einen hohen Durchsatz (Anzahl der Inferenzen pro Zeiteinheit).
Um Ihr Modell für die Inferenz zu optimieren, können Sie die folgenden Ansätze in Betracht ziehen:
Quantisierung: Reduzieren Sie die Modellgröße, indem Sie die Parameter in einem Format mit geringerer Genauigkeit darstellen. Dieser Ansatz trägt dazu bei, den Arbeitsspeicherverbrauch und die Latenz zu reduzieren. Die Quantisierung nach dem Training kann jedoch die Modellqualität beeinträchtigen. Die Quantisierung nach dem Training kann beispielsweise zu einer Verringerung der Genauigkeit führen.
- Die Quantisierung nach dem Training (Post-Training Quantization, PTQ) ist eine wiederholbare Aufgabe. Wichtige ML-Frameworks wie PyTorch und TensorFlow unterstützen PTQ.
- Sie können die PTQ mit einer Pipeline in Vertex AI Pipelines orchestrieren.
- Mit Qwix können Sie die Modellleistung stabilisieren und von einer kleineren Modellgröße profitieren.
Tensor-Parallelität: Verbessern Sie den Inferenzdurchsatz, indem Sie die Rechenlast auf mehrere GPUs verteilen.
Speicheroptimierung: Erhöhen Sie den Durchsatz und optimieren Sie das Attention-Caching, die Batchgrößen und die Eingabegrößen.
Verwenden Sie für die Inferenz optimierte Frameworks wie die folgenden:
- Verwenden Sie für generative Modelle ein offenes Framework wie MaxText, MaxDiffusion oder vLLM.
- Vordefinierte Container-Images in Vertex AI für Vorhersagen und Erläuterungen ausführen. Wenn Sie TensorFlow auswählen, verwenden Sie die optimierte TensorFlow-Laufzeit. Diese Laufzeit ermöglicht eine effizientere und kostengünstigere Inferenz als vordefinierte Container, die Open-Source-TensorFlow verwenden.
- Inferenz mit mehreren Hosts mit großen Modellen in GKE ausführen mit der LeaderWorkerSet (LWS) API.
- NVIDIA Triton-Inferenzserver für Vertex AI nutzen.
- Die Bereitstellung von Inferenz-Arbeitslasten in GKE mit LLM-optimierten Konfigurationen vereinfachen. Weitere Informationen finden Sie unter Leistung und Kosten der Bereitstellung von Modellen mit der GKE-Kurzanleitung zur Inferenz analysieren.
Ressourcenverbrauch basierend auf Leistungszielen optimieren
Die Ressourcenoptimierung trägt dazu bei, das Training zu beschleunigen, effizient zu iterieren, die Modellqualität zu verbessern und die Bereitstellungskapazität zu erhöhen.
Geeignete Prozessortypen auswählen
Die Auswahl der Compute-Plattform kann sich erheblich auf die Trainingseffizienz eines Modells auswirken.
- Deep-Learning-Modelle funktionieren gut auf GPUs und TPUs, da sie große Mengen an Speicher und parallele Matrixberechnungen erfordern. Weitere Informationen zu Arbeitslasten, die sich gut für CPUs, GPUs und TPUs eignen, finden Sie unter Verwendung von TPUs.
- Computing-optimierte VMs sind ideal für HPC-Arbeitslasten.
Training und Bereitstellung auf GPUs optimieren
Berücksichtigen Sie die folgenden Empfehlungen, um die Leistung von Trainings- und Inferenzarbeitslasten zu optimieren, die auf GPUs bereitgestellt werden:
| Empfehlung | Beschreibung |
|---|---|
| Geeignete Arbeitsspeicherspezifikationen auswählen | Wenn Sie GPU-Maschinentypen auswählen, legen Sie die Arbeitsspeicherspezifikationen anhand der folgenden Faktoren fest:
|
| Anforderungen an Kern- und Arbeitsspeicherbandbreite bewerten: | Berücksichtigen Sie neben der Arbeitsspeichergröße auch andere Anforderungen wie die Anzahl der Tensor-Kerne und die Speicherbandbreite. Diese Faktoren beeinflussen die Geschwindigkeit des Datenzugriffs und der Berechnungen auf dem Chip. |
| Geeignete GPU-Maschinentypen auswählen: | Für Training und Bereitstellung sind möglicherweise unterschiedliche GPU-Maschinentypen erforderlich.
Wir empfehlen, für das Training große Maschinentypen und für die Inferenz kleinere, kostengünstige Maschinentypen zu verwenden. Verwenden Sie Monitoring-Tools wie den NVIDIA DCGM-Agent, um Probleme bei der Ressourcennutzung zu erkennen, und passen Sie die Ressourcen entsprechend an. |
| GPU-Freigabe in GKE nutzen | Eine vollständige GPU für einen einzelnen Container zu reservieren, kann in einigen Fällen ineffizient sein. Um diese Ineffizienz zu beheben, unterstützt GKE die folgenden GPU-Freigabestrategien:
Um die Ressourcennutzung zu maximieren, empfehlen wir, eine geeignete Kombination dieser Strategien zu verwenden. Wenn Sie beispielsweise eine große H100-GPU mithilfe der GPU-Zeitfreigabe und der Strategien für GPUs mit mehreren Instanzen virtualisieren, kann die Serving-Plattform je nach Traffic skaliert werden. GPU-Ressourcen werden in Echtzeit basierend auf der Last der Modellcontainer neu zugewiesen. |
| Routing und Load-Balancing optimieren: | Wenn Sie mehrere Modelle in einem Cluster bereitstellen, können Sie GKE Inference Gateway für optimiertes Routing und Load-Balancing verwenden. Inference Gateway erweitert die Routingmechanismen der Kubernetes Gateway API durch die folgenden Funktionen:
|
| Ressourcen für Vertex AI-Endpunkte freigeben: | Sie können mehrere Vertex AI-Endpunkte so konfigurieren, dass sie einen gemeinsamen Ressourcenpool verwenden. Weitere Informationen zu dieser Funktion und ihren Einschränkungen finden Sie unter Ressourcen für mehrere Bereitstellungen freigeben. |
Training und Bereitstellung auf TPUs optimieren
TPUs sind Google-Chips, die dabei helfen, Herausforderungen im großen Maßstab für ML-Algorithmen zu lösen. Diese Chips bieten eine optimale Leistung für KI-Trainings- und Inferenzarbeitslasten. Im Vergleich zu GPUs bieten TPUs eine höhere Effizienz beim Deep-Learning-Training und bei der Bereitstellung. Informationen zu den Anwendungsfällen, die für TPUs geeignet sind, finden Sie unter Verwendung von TPUs. TPUs sind mit ML-Frameworks wie TensorFlow, PyTorch und JAX kompatibel.
Verwenden Sie die folgenden Techniken, die im Leistungsleitfaden für Cloud TPU beschrieben werden, um die TPU-Leistung zu optimieren:
- Maximieren Sie die Batchgröße für jede TPU-Speichereinheit.
- Achten Sie darauf, dass die TPUs nicht im Leerlauf sind. Implementieren Sie beispielsweise parallele Datenlesevorgänge.
- Optimieren des XLA-Compilers Passen Sie die Tensor-Dimensionen nach Bedarf an und vermeiden Sie das Auffüllen. XLA optimiert die Leistung der Grafikausführung automatisch mithilfe von Tools wie Fusion und Broadcasting.
Training auf TPUs und Bereitstellung auf GPUs optimieren
TPUs unterstützen effizientes Training. GPUs bieten Vielseitigkeit und eine breitere Verfügbarkeit für Inferenzarbeitslasten. Um die Stärken von TPUs und GPUs zu kombinieren, können Sie Modelle auf TPUs trainieren und auf GPUs bereitstellen. Dieser Ansatz kann dazu beitragen, die Gesamtkosten zu senken und die Entwicklung zu beschleunigen, insbesondere bei großen Modellen. Informationen zu den Standorten, an denen TPU- und GPU-Maschinentypen verfügbar sind, finden Sie unter TPU-Regionen und ‑Zonen und GPU-Standorte.
Speicherebene optimieren
Die Speicherebene Ihrer Trainings- und Bereitstellungsinfrastruktur ist entscheidend für die Leistung. Bei Trainingsjobs und Inferenzarbeitslasten sind die folgenden speicherbezogenen Aktivitäten erforderlich:
- Daten werden geladen und verarbeitet.
- Das Modell während des Trainings sichern.
- Binärdateien neu laden, um das Training nach dem Vorbelegen von Knoten fortzusetzen.
- Das Modell wird effizient geladen, um Inferenzen in großem Umfang zu verarbeiten.
Die folgenden Faktoren bestimmen Ihre Anforderungen an Speicherkapazität, Bandbreite und Latenz:
- Modellgröße
- Umfang des Trainings-Datasets
- Häufigkeit der Checkpoints
- Skalierungsmuster
Wenn sich Ihre Trainingsdaten in Cloud Storage befinden, können Sie die Latenz beim Laden von Daten durch Datei-Caching mit Cloud Storage FUSE verringern. Mit Cloud Storage FUSE können Sie einen Cloud Storage-Bucket auf Rechenknoten mit lokalen SSD-Laufwerken bereitstellen. Informationen zur Verbesserung der Leistung von Cloud Storage FUSE finden Sie unter Best Practices für die Leistungsoptimierung.
Ein PyTorch-Connector für Cloud Storage bietet eine hohe Leistung beim Lesen und Schreiben von Daten. Dieser Connector ist besonders nützlich für das Training mit großen Datasets und für das Erstellen von Checkpoints großer Modelle.
Compute Engine unterstützt verschiedene Arten von nichtflüchtigem Speicher. Mit Google Cloud Hyperdisk ML können Sie den erforderlichen Durchsatz und die erforderlichen IOPS basierend auf den Trainingsanforderungen bereitstellen. Um die Laufwerksleistung zu optimieren, ändern Sie zuerst die Größe der Laufwerke und dann den Maschinentyp. Weitere Informationen finden Sie unter Leistung von Persistent Disk optimieren. Um die Lese-/Schreibleistung und ‑latenz auf der Speicherebene zu testen, können Sie Tools wie den Flexiblen E/A-Tester (FIO) verwenden.
Weitere Informationen zum Auswählen und Optimieren von Speicherdiensten für Ihre KI- und ML-Arbeitslasten finden Sie in der folgenden Dokumentation:
Netzwerkschicht optimieren
Um die Leistung von KI- und ML-Arbeitslasten zu optimieren, konfigurieren Sie Ihre VPC-Netzwerke so, dass sie eine angemessene Bandbreite und einen maximalen Durchsatz bei minimaler Latenz bieten. Beachten Sie die folgenden Empfehlungen:
| Empfehlung | Vorgeschlagene Implementierungstechniken |
|---|---|
| VPC-Netzwerke optimieren |
|
| VMs näher beieinander platzieren. | |
| VMs für höhere Netzwerkgeschwindigkeiten konfigurieren |
|
Leistungsmesswerte mit Design- und Konfigurationsentscheidungen verknüpfen
Um Innovationen zu schaffen, Fehler zu beheben und Leistungsprobleme zu untersuchen, müssen Sie eine klare Verbindung zwischen Designentscheidungen und Leistungsergebnissen herstellen. Sie benötigen einen zuverlässigen Datensatz zur Herkunft von ML-Assets, Bereitstellungen, Modellausgaben und den entsprechenden Konfigurationen und Eingaben, die die Ausgaben erzeugt haben.
System für Daten- und Modellherkunft erstellen
Um die Leistung zuverlässig zu verbessern, müssen Sie jede Modellversion auf die genauen Daten, den Code und die Konfigurationen zurückführen können, die zum Erstellen des Modells verwendet wurden. Wenn Sie ein Modell skalieren, wird die Nachverfolgung schwierig. Sie benötigen ein Lineage-System, das den Tracing-Prozess automatisiert und für jeden Test einen klaren, abfragbaren Datensatz erstellt. Mit diesem System können Ihre Teams effizient die Entscheidungen identifizieren und reproduzieren, die zu den leistungsstärksten Modellen führen.
Zum Aufrufen und Analysieren der Herkunft von Pipeline-Artefakten für Arbeitslasten in Vertex AI können Sie Vertex ML Metadata oder Dataplex Universal Catalog verwenden. Mit beiden Optionen können Sie Ereignisse oder Artefakte registrieren, um Governance-Anforderungen zu erfüllen und bei Bedarf Metadaten abzufragen und Informationen abzurufen. In diesem Abschnitt erhalten Sie einen Überblick über die beiden Optionen. Ausführliche Informationen zu den Unterschieden zwischen Vertex ML Metadata und Dataplex Universal Catalog finden Sie unter Herkunft von Pipeline-Artefakten verfolgen.
Standardimplementierung: Vertex AI ML Metadata
Bei der ersten Pipelineausführung oder dem ersten Test in Vertex AI wird ein Standarddienst für Vertex ML Metadata erstellt. Die Parameter und Artefaktmetadaten, die von der Pipeline verwendet und generiert werden, werden automatisch in einem Vertex ML Metadata-Speicher registriert. Das Datenmodell, das zum Organisieren und Verknüpfen der gespeicherten Metadaten verwendet wird, enthält die folgenden Elemente:
- Kontext: Eine Gruppe von Artefakten und Ausführungen, die einen Testlauf darstellt.
- Ausführung: Ein Schritt in einem Workflow, z. B. Datenvalidierung oder Modelltraining.
- Artefakt: Eine Eingabe- oder Ausgabeentität, ein Objekt oder ein Datenelement, das von einem Workflow erzeugt und genutzt wird.
- Ereignis: Eine Beziehung zwischen einem Artefakt und einer Ausführung.
Standardmäßig erfasst und verfolgt Vertex ML Metadata alle Eingabe- und Ausgabeartefakte einer Pipelineausführung. Diese Artefakte werden in Vertex AI Experiments, Model Registry und von Vertex AI verwaltete Datasets eingebunden.
Autologging ist ein integriertes Feature in Vertex AI Training, mit dem Daten automatisch in Vertex AI Experiments protokolliert werden. Um Tests zur Leistungsoptimierung effizient zu verfolgen, verwenden Sie die integrierten Integrationen zwischen Vertex AI Experiments und dem zugehörigen Vertex ML Metadata-Dienst.
Vertex ML Metadata bietet eine Filtersyntax und Operatoren zum Ausführen von Abfragen zu Artefakten, Ausführungen und Kontexten. Bei Bedarf können Ihre Teams effizient Informationen zum Registrierungslink eines Modells und zum zugehörigen Dataset oder zur Bewertung für einen bestimmten Experimentlauf abrufen. Diese Metadaten können dazu beitragen, die Suche nach Optionen zu beschleunigen, die die Leistung optimieren. Sie können beispielsweise Pipelineausführungen vergleichen, Modelle vergleichen und Testläufe vergleichen. Weitere Informationen, einschließlich Beispielabfragen, finden Sie unter Vertex ML-Metadaten analysieren.
Alternative Implementierung: Dataplex Universal Catalog
Dataplex Universal Catalog erkennt Metadaten aus Google Cloud -Ressourcen, einschließlich Vertex AI-Artefakten. Sie können auch eine benutzerdefinierte Datenquelle einbinden.
Dataplex Universal Catalog kann Metadaten aus mehreren Regionen und organisationsweiten Speichern lesen, während Vertex ML Metadata eine projektspezifische Ressource ist. Im Vergleich zu Vertex ML Metadata ist der Einrichtungsaufwand für Dataplex Universal Catalog höher. Dataplex Universal Catalog ist jedoch möglicherweise besser geeignet, wenn Sie eine Integration mit Ihrem gesamten Datenportfolio in Google Cloud und mit organisationsweiten Speichern benötigen.
Dataplex Universal Catalog ermittelt und erfasst Metadaten für Projekte, in denen die Data Lineage API aktiviert ist. Die Metadaten im Katalog sind mithilfe eines Datenmodells organisiert, das aus Projekten, Eintragsgruppen, Einträgen und Aspekten besteht. Dataplex Universal Catalog bietet eine spezifische Syntax, mit der Sie Artefakte finden können. Bei Bedarf können Sie Vertex Vertex ML Metadata-Metadatenartefakte Dataplex Universal Catalog zuordnen.
Tools für die Erklärbarkeit verwenden
Das Verhalten eines KI-Modells basiert auf den Daten, mit denen es trainiert wurde. Dieses Verhalten wird als Parameter in mathematischen Funktionen codiert. Es kann schwierig sein, genau zu verstehen, warum ein Modell eine bestimmte Leistung erbringt. Diese Informationen sind jedoch entscheidend für die Leistungsoptimierung.
Stellen Sie sich beispielsweise ein Bildklassifizierungsmodell vor, dessen Trainingsdaten nur Bilder von roten Autos enthalten. Das Modell lernt möglicherweise, das Label „car“ (Auto) anhand der Farbe des Objekts zu identifizieren und nicht anhand der räumlichen Attribute und Formattribute des Objekts. Wenn das Modell mit Bildern von Autos in verschiedenen Farben getestet wird, kann sich die Leistung des Modells verschlechtern. In den folgenden Abschnitten werden Tools beschrieben, mit denen Sie solche Probleme erkennen und diagnostizieren können.
Datenverzerrungen erkennen
In der Phase der explorativen Datenanalyse (Exploratory Data Analysis, EDA) eines ML-Projekts identifizieren Sie Probleme mit den Daten, z. B. Datasets mit unausgewogenen Klassen und Bias.
In Produktionssystemen werden Modelle häufig neu trainiert und es werden Experimente mit verschiedenen Datasets durchgeführt. Um Daten zu standardisieren und Tests zu vergleichen, empfehlen wir einen systematischen Ansatz für die explorative Datenanalyse, der die folgenden Merkmale umfasst:
- Automatisierung: Wenn ein Trainingssatz größer wird, muss der EDA-Prozess automatisch im Hintergrund ausgeführt werden.
- Umfassende Abdeckung: Wenn Sie neue Funktionen hinzufügen, muss die explorative Datenanalyse Erkenntnisse zu den neuen Funktionen liefern.
Viele EDA-Aufgaben sind spezifisch für den Datentyp und den geschäftlichen Kontext. Um den EDA-Prozess zu automatisieren, können Sie BigQuery oder einen verwalteten Datenverarbeitungsdienst wie Dataflow verwenden. Weitere Informationen finden Sie unter Klassifizierung mit unausgewogenen Daten und Messwerte für Datenverzerrung für Vertex AI.
Modellmerkmale und ‑verhalten verstehen
Sie müssen nicht nur die Verteilung der Daten in den Trainings- und Validierungssätzen und deren Verzerrungen verstehen, sondern auch die Merkmale und das Verhalten eines Modells zum Zeitpunkt der Vorhersage. Mit den folgenden Tools können Sie das Verhalten von Modellen nachvollziehen:
| Tool | Beschreibung | Zwecke |
|---|---|---|
| Beispielgestützte Erklärungen | Sie können beispielbasierte Erläuterungen in Vertex Explainable AI verwenden, um eine Vorhersage zu verstehen, indem Sie die ähnlichsten Beispiele aus den Trainingsdaten finden. Dieser Ansatz basiert auf dem Prinzip, dass ähnliche Eingaben ähnliche Ausgaben ergeben. |
|
| Featurebasierte Erklärungen | Bei Vorhersagen, die auf tabellarischen Daten oder Bildern basieren, zeigen featurebasierte Erklärungen, wie stark sich jedes Feature auf eine Vorhersage auswirkt, wenn es mit einer Baseline verglichen wird. Vertex AI bietet je nach Modelltyp und Aufgabe verschiedene Methoden zur Attributzuordnung. Die Methoden basieren in der Regel auf Stichproben und Sensitivitätsanalysen, um zu messen, wie stark sich die Ausgabe als Reaktion auf Änderungen an einem Eingabefeature ändert. |
|
| What-If-Tool | Das What-If-Tool wurde von der People + AI Research (PAIR) Initiative von Google entwickelt, um Ihnen zu helfen, das Verhalten von Bild- und Tabellenmodellen zu verstehen und zu visualisieren. Beispiele für die Verwendung des Tools finden Sie unter What-If Tool Web Demos. |
|
Beitragende
Autoren:
- Benjamin Sadik | AI and ML Specialist Customer Engineer
- Filipe Gracio, PhD | Customer Engineer, AI/ML Specialist
Weitere Beitragende:
- Daniel Lees | Cloudsicherheitsarchitekt
- Kumar Dhanagopal | Cross-Product Solution Developer