Architektur für MLOps mit TensorFlow Extended, Vertex AI Pipelines und Cloud Build

Last reviewed 2023-01-20 UTC

In diesem Dokument wird die Gesamtarchitektur eines ML-Systems (maschinelles Lernen) mit Bibliotheken von TensorFlow Extended (TFX) beschrieben. Außerdem wird erläutert, wie Sie mit Cloud Build und Vertex AI Pipelines Continuous Integration (CI), Continuous Delivery (CD) und Continuous Training (CT) für das ML-System einrichten.

In diesem Dokument beziehen sich die Begriffe ML-System und ML-Pipeline auf Schulungspipelines des ML-Modells und nicht auf die Modellbewertung oder Vorhersagepipelines.

Dieses Dokument richtet sich an Data Scientists und ML-Entwickler, die ihre CI/CD-Verfahren anpassen möchten, um ML-Lösungen in die Produktion in Google Cloud zu verschieben und die Qualität, Wartbarkeit und Anpassungsfähigkeit ihrer ML-Pipelines zu garantieren.

In diesem Dokument werden folgende Themen behandelt:

  • Informationen zu CI/CD und Automatisierung in ML
  • Entwerfen einer integrierten ML-Pipeline mit TFX
  • Orchestrieren und Automatisieren der ML-Pipeline mit Vertex AI Pipelines
  • Einrichten eines CI/CD-Systems für die ML-Pipeline mit Cloud Build

MLOps

Zum Einbinden eines ML-Systems in eine Produktionsumgebung müssen Sie die Schritte in Ihrer ML-Pipeline orchestrieren.
Außerdem müssen Sie die Ausführung der Pipeline für das kontinuierliche Training Ihrer Modelle automatisieren. Zum Ausprobieren neuer Ideen und Features müssen Sie CI/CD-Verfahren in den neuen Implementierungen der Pipelines anwenden. Die folgenden Abschnitte bieten einen allgemeinen Überblick über CI/CD und CT in ML.

ML-Pipeline-Automatisierung

In einigen Anwendungsfällen kann manuelles Trainieren, Validieren und Bereitstellen von ML-Modellen ausreichend sein. Dieser manuelle Ansatz funktioniert, wenn Ihr Team nur wenige ML-Modelle verwaltet, die nicht neu trainiert oder nicht häufig geändert werden. In der Praxis funktionieren Modelle jedoch häufig nicht, wenn sie in der realen Welt bereitgestellt werden. Das liegt daran, dass sie sich nicht an Änderungen der Umgebungsdynamik oder der Daten anpassen, die diese Dynamiken beschreiben.

Damit sich Ihr ML-System an solche Änderungen anpassen kann, müssen Sie die folgenden MLOps-Techniken anwenden:

  • Automatisieren Sie die Ausführung der ML-Pipeline, um neue Modelle für neue Daten neu zu trainieren und neue Muster zu erfassen. CT wird weiter unten in diesem Dokument im Abschnitt ML mit Vertex AI Pipelines behandelt.
  • Richten Sie ein Continuous Delivery-System ein, um häufig neue Implementierungen der gesamten ML-Pipeline bereitzustellen. CI/CD wird später in diesem Dokument im Abschnitt CI/CD-Einrichtung für ML in Google Cloud erläutert.

Sie können die ML-Produktionspipelines automatisieren, um Ihre Modelle mit neuen Daten neu zu trainieren. Sie können Ihre Pipeline bei Bedarf, nach einem Zeitplan, bei Verfügbarkeit neuer Daten, bei einer Verschlechterung der Modellleistung, bei erheblichen Änderungen der statistischen Attribute der Daten oder anhand anderer Bedingungen auslösen.

CI/CD-Pipeline im Vergleich zur CT-Pipeline

Die Verfügbarkeit neuer Daten ist ein Trigger, um das ML-Modell neu zu trainieren. Die Verfügbarkeit einer neuen Implementierung der ML-Pipeline (einschließlich neuer Modellarchitektur, Feature Engineering und Hyperparameter) ist ein weiterer wichtiger Trigger für die neue Ausführung der ML-Pipeline. Diese neue Implementierung der ML-Pipeline dient als neue Version des Modellvorhersagedienstes, z. B. als Mikrodienst mit einer REST API für die Onlinebereitstellung. So unterscheiden sich die beiden Fälle:

  • Zum Trainieren eines neuen ML-Modells mit neuen Daten wird die zuvor bereitgestellte CT-Pipeline ausgeführt. Es werden keine neuen Pipelines oder Komponenten bereitgestellt. Nur ein neuer Vorhersagedienst oder ein neu trainiertes Modell wird am Ende der Pipeline bereitgestellt.
  • Zum Trainieren eines neuen ML-Modells mit einer neuen Implementierung wird eine neue Pipeline über eine CI/CD-Pipeline bereitgestellt.

Wenn Sie neue ML-Pipelines schnell bereitstellen möchten, müssen Sie eine CI/CD-Pipeline einrichten. Diese Pipeline ist für die automatische Bereitstellung neuer ML-Pipelines und -Komponenten verantwortlich, wenn neue Implementierungen für verschiedene Umgebungen (z. B. Entwicklung, Test, Staging, Vorproduktion, Canary und Produktion) verfügbar und genehmigt sind.

Das folgende Diagramm zeigt die Beziehung zwischen der CI/CD-Pipeline und der ML-CT-Pipeline.

Die Ausgabe der CI/CD-Pipeline ist die CT-Pipeline.

Abbildung 1. CI/CD- und ML-CT-Pipelines

Die Ausgabe für diese Pipelines sieht so aus:

  • Bei einer neuen Implementierung stellt eine erfolgreiche CI/CD-Pipeline eine neue ML-CT-Pipeline bereit.
  • Bei neuen Daten trainiert eine erfolgreiche CT-Pipeline ein neues Modell und stellt es als Vorhersagedienst bereit.

TFX-basiertes ML-System entwerfen

In den folgenden Abschnitten wird erläutert, wie Sie ein integriertes ML-System mit TensorFlow Extended (TFX) erstellen, um eine CI/CD-Pipeline für das ML-System einzurichten. Obwohl es mehrere Frameworks zum Erstellen von ML-Modellen gibt, ist TFX eine eingebundene ML-Plattform für die Entwicklung und Bereitstellung von ML-Produktionssystemen. Eine TFX-Pipeline ist eine Abfolge von Komponenten, die ein ML-System implementieren. Diese TFX-Pipeline wurde für skalierbare, leistungsstarke ML-Aufgaben entwickelt. Zu diesen Aufgaben gehören die Modellierung, das Training, die Validierung, die Bereitstellung von Inferenzen und die Verwaltung von Bereitstellungen. Das sind die Schlüsselbibliotheken von TFX:

TFX-ML-System im Überblick

Das folgende Diagramm zeigt, wie die verschiedenen TFX-Bibliotheken in ein ML-System eingebunden werden.

Schritte eines TFX-basierten ML-Systems

Abbildung 2. Ein typisches TFX-basiertes ML-System

Abbildung 2 zeigt ein typisches TFX-basiertes ML-System. Die folgenden Schritte können manuell oder über eine automatisierte Pipeline ausgeführt werden:

  1. Datenextraktion: Der erste Schritt besteht darin, die neuen Trainingsdaten aus ihren Datenquellen zu extrahieren. Die Ausgaben dieses Schritts sind Datendateien, die zum Trainieren und Bewerten des Modells verwendet werden.
  2. Datenvalidierung: Die Daten werden von TFDV mit dem erwarteten Rohdatenschema überprüft. Das Datenschema wird in der Entwicklungsphase vor der Systembereitstellung erstellt und korrigiert. Die Datenvalidierungsschritte erkennen Anomalien, die sich sowohl auf die Datenverteilung als auch auf Schemaabweichungen beziehen. Die Ausgaben dieses Schritts sind eventuelle Anomalien und eine Entscheidung, ob nachgelagerte Schritte ausgeführt werden sollen.
  3. Datentransformation: Nach der Validierung der Daten werden die Daten aufgeteilt und für die ML-Aufgabe vorbereitet. Dazu werden Datentransformationen und Feature-Engineering-Vorgänge mit TFT durchgeführt. Die Ausgaben dieses Schritts sind Datendateien zum Trainieren und Bewerten des Modells, die normalerweise in das Format TFRecords transformiert werden. Außerdem helfen die erzeugten Transformationsartefakte beim Erstellen der Modelleingaben und betten den Transformationsprozess nach dem Training in das exportierte gespeicherte Modell ein.
  4. Modelltraining und -abstimmung: Verwenden Sie zum Implementieren und Trainieren des ML-Modells die APIs tf.estimator oder tf.Keras mit den transformierten Daten, die im vorherigen Schritt erstellt wurden. Sie können den Parameter Keras-Tuner, eine Hyperparameter-Abstimmungsbibliothek für Keras, verwenden, um die Parametereinstellungen auszuwählen, die zum besten Modell führen. Alternativ können Sie andere Dienste wieKatib, Vertex AI-Vizier oder den Hyperparameter-Tuner von Vertex AI nutzen. Die Ausgabe dieses Schritts ist ein gespeichertes Modell, das zur Bewertung verwendet wird, und ein weiteres gespeichertes Modell, das zur Onlinebereitstellung des Modells für die Vorhersage verwendet wird.
  5. Modellbewertung und -validierung: Wenn das Modell nach dem Trainingsschritt exportiert wird, wird es mit einem Test-Dataset zum Bestimmen der Modellqualität mit TFMA bewertet. Mithilfe von TFMA wird die Modellqualität als Ganzes bewertet und ermittelt, welcher Teil des Datenmodells nicht funktioniert. Diese Bewertung trägt dazu bei, dass das Modell nur dann zur Bereitstellung hochgestuft wird, wenn es die Qualitätskriterien erfüllt. Die Kriterien können eine gleichmäßige Leistung für verschiedene Teilmengen von Daten (z. B. demografische Merkmale und Standorte) und eine verbesserte Leistung im Vergleich zu früheren Modellen oder einem Benchmark-Modell umfassen. Die Ausgabe dieses Schritts besteht aus einer Reihe von Leistungsmesswerten und der Entscheidung, ob das Modell in die Produktion hochgestuft werden soll.
  6. Modellbereitstellung für die Vorhersage: Nachdem das neu trainierte Modell validiert wurde, wird es als Mikrodienst bereitgestellt, um Onlinevorhersagen mit TensorFlow Serving bereitzustellen. Die Ausgabe dieses Schritts ist ein bereitgestellter Vorhersagedienst des trainierten ML-Modells. Sie können diesen Schritt ersetzen, indem Sie das trainierte Modell in einem Modell-Registry speichern. Anschließend wird ein separates Modell zur Bereitstellung des CI/CD-Prozesses gestartet.

Ein Beispiel für die Verwendung der TFX-Bibliotheken finden Sie in der offiziellen TFX Keras-Komponentenanleitung.

TFX-ML-System in Google Cloud

In einer Produktionsumgebung müssen die Komponenten des Systems auf einer zuverlässigen Plattform in großem Maßstab ausgeführt werden. Das folgende Diagramm zeigt, wie die einzelnen Schritte der TFX-ML-Pipeline mit einem verwalteten Dienst in Google Cloud ausgeführt werden. Dies sorgt für Flexibilität, Zuverlässigkeit und Leistung im großen Maßstab.

Schritte eines TFX-basierten ML-Systems in Google Cloud

Abbildung 3. TFX-basiertes ML-System in Google Cloud

In der folgenden Tabelle werden die in Abbildung 3 gezeigten Google Cloud-Hauptdienste beschrieben:

Schritt TFX-Bibliothek Google Cloud-Dienst
Datenextraktion und -validierung TensorFlow Data Validation Dataflow
Datenumwandlung TensorFlow Transform Dataflow
Modelltraining und -abstimmung TensorFlow Vertex AI Training
Modellbewertung und -validierung TensorFlow Model Analysis Dataflow
Modellbereitstellung für Vorhersagen TensorFlow bereitstellen Vertex-AI-Prediction
Modellspeicherung Vertex AI Model Registry
  • Dataflow ist ein vollständig verwalteter, serverloser und zuverlässiger Dienst zum Ausführen von Apache Beam-Pipelines in großem Maßstab in Google Cloud. Mit Dataflow werden die folgenden Prozesse skaliert:
    • Berechnen von Statistiken zur Validierung der eingehenden Daten
    • Datenvorbereitung und -transformation
    • Auswerten des Modells für ein großes Dataset
    • Berechnen von Messwerten für verschiedene Aspekte des Bewertungs-Datasets
  • Cloud Storage ist ein hochverfügbarer und dauerhafter Speicher für binäre große Objekte. Cloud Storage hostet Artefakte, die während der Ausführung der ML-Pipeline erzeugt werden, darunter:
    • Datenanomalien (falls vorhanden)
    • Transformierte Daten und Artefakte
    • Exportiertes (trainiertes) Modell
    • Modellbewertungsmesswerte
  • Vertex AI Training ist ein verwalteter Dienst zum Trainieren von ML-Modellen in großem Maßstab. Sie können Modelltrainingsjobs mit vordefinierten Containern für TensorFlow, scikit-learn, XGBoost und PyTorch ausführen. Sie können jedes Framework auch mit Ihren eigenen benutzerdefinierten Containern ausführen. Für Ihre Trainingsinfrastruktur können Sie Beschleuniger und mehrere Knoten für verteiltes Training verwenden. Außerdem ist ein skalierbarer Bayesscher optimierungsbasierter Dienst für eine Hyperparameterabstimmung verfügbar.
  • Vertex AI Prediction ist ein verwalteter Dienst, der Batchvorhersagen ausführen soll, wobei Ihre trainierten Modelle und Onlinevorhersagen verwendet werden, indem die Modelle als Mikrodienst mit einer REST API bereitgestellt werden. Der Dienst kann auch in Vertex Explainable AI und Vertex AI Model Monitoring eingebunden werden, um Ihre Modelle zu verstehen und Benachrichtigungen zu erhalten, wenn es eine Abweichung und Drift eines Features oder einer Featureattribution gibt.
  • Mit Vertex AI Model Registry können Sie den Lebenszyklus Ihrer ML-Modelle verwalten. Sie können Ihre importierten Modelle versionieren und sich die zugehörigen Leistungsmesswerte ansehen. Ein Modell kann dann für Batchvorhersagen verwendet oder für die Onlinebereitstellung mit Vertex AI Prediction bereitgestellt werden.

ML-System mit Vertex AI Pipelines orchestrieren

In diesem Dokument wurde beschrieben, wie Sie ein TFX-basiertes ML-System entwerfen und jede Komponente des Systems in großem Maßstab in Google Cloud ausführen. Sie benötigen jedoch einen Orchestrator, um diese verschiedenen Komponenten des Systems miteinander zu verbinden. Der Orchestrator führt die Pipeline in einer Reihenfolge aus und wechselt anhand der definierten Bedingungen automatisch von einem Schritt zum nächsten. Beispielsweise kann eine definierte Bedingung den Modellbereitstellungsschritt nach dem Modellbewertungsschritt ausführen, wenn die Bewertungsmesswerte vordefinierte Schwellenwerte erreichen. Schritte können auch parallel ausgeführt werden, um Zeit zu sparen, z. B. das Validieren der Bereitstellungsinfrastruktur und das Bewerten des Modells. Die Orchestrierung der ML-Pipeline ist sowohl in der Entwicklungs- als auch in der Produktionsphase nützlich:

  • Während der Entwicklungsphase hilft die Orchestrierung den Data Scientists, den ML-Test so auszuführen, dass nicht jeder Schritt manuell ausgeführt werden muss.
  • Während der Produktionsphase hilft die Orchestrierung dabei, die Ausführung der ML-Pipeline anhand eines Zeitplans oder bestimmter Auslösebedingungen zu automatisieren.

ML mit Vertex AI Pipelines

Vertex AI Pipelines ist ein von Google Cloud verwalteter Dienst, mit dem Sie ML-Pipelines orchestrieren und automatisieren können, bei denen jede Komponente der Pipeline containerisiert in Google Cloud oder auf anderen Cloud-Plattformen ausgeführt werden kann. Generierte Pipeline-Parameter und -Artefakte werden automatisch in Vertex ML Metadata gespeichert, was die Verfolgung von Herkunft und Ausführung ermöglicht. Der Vertex AI Pipelines-Dienst besteht aus Folgendem:

  • Einer Benutzeroberfläche zum Verwalten und Verfolgen von Tests, Jobs und Ausführungen.
  • Einem Modul zum Planen von mehrstufigen ML-Workflows.
  • Einem Python SDK zum Definieren und Bearbeiten von Pipelines und Komponenten.
  • Einbindung in Vertex ML Metadata, um Informationen zu Ausführungen, Modellen, Datasets und anderen Artefakten zu speichern.

Folgendes ist eine Pipeline, die in Vertex AI Pipelines ausgeführt wird:

  • Eine Reihe von containerisierten ML-Aufgaben oder Komponenten. Eine Pipeline-Komponente ist eigenständiger Code, der in ein Docker-Image gepackt wird. Eine Komponente führt einen Schritt in der Pipeline aus. Sie nimmt Eingabeargumente an und erzeugt Artefakte.
  • Eine Spezifikation der Reihenfolge der ML-Aufgaben, die über eine domainspezifische Python-Sprache (DSL) definiert wird. Die Topologie des Workflows wird implizit definiert, indem die Ausgaben eines vorgelagerten Schritts mit den Eingaben eines nachgelagerten Schritts verbunden werden. Ein Schritt in der Pipeline-Definition ruft eine Komponente in der Pipeline auf. In einer komplexen Pipeline können Komponenten mehrmals in Schleifen oder unter bestimmten Bedingungen ausgeführt werden.
  • Eine Reihe von Pipeline-Eingabeparametern, deren Werte an die Komponenten der Pipeline übergeben werden, einschließlich der Kriterien zum Filtern von Daten und des Speicherorts der von der Pipeline erzeugten Artefakte.

Das folgende Diagramm zeigt ein Beispiel für Vertex AI Pipelines.

Grafik der ML-Pipeline unter Verwendung von Vertex AI Pipelines.

Abbildung 4. Beispielgrafik von Vertex AI Pipelines.

Kubeflow Pipelines SDK

Mit dem Kubeflow Pipelines SDK können Sie Komponenten erstellen, ihre Orchestrierung definieren und die Komponenten als Pipeline ausführen. Damit eine Komponente in der Pipeline aufgerufen werden kann, müssen Sie mit einer der folgenden Methoden einen Komponentenvorgang erstellen: