In diesem Artikel stellen wir ein Tool vor, das unsere Erfahrungen mit Vertex AI Pipelines in einem Produktionsprojekt praktisch demonstriert.
Ein durchgängiges Tutorial zum Trainieren und Bereitstellen eines benutzerdefinierten ML-Modells in der Produktion unter Verwendung von Vertex AI Pipelines mit Kubeflow v2. Wenn Sie verwirrt sind, wie Sie Vertex AI angehen sollen, werden Sie Ihren Weg finden, da alles in diesem Tutorial auf realen Erfahrungen basiert. Es gibt viele Beispiele für Pipelines, die zeigen, wie man bestimmte coole Funktionen von Vertex AI und Kubeflow nutzen kann. Sie werden auch ein Makefile finden, das Ihnen hilft, wichtige Rezepte auszuführen und viel Zeit zu sparen, um Ihr Modell zu bauen und es in Produktion zu bringen.
ML-Pipelines können als Sätze von miteinander verbundenen Aufträgen definiert werden, die komplette oder bestimmte Teile des ML-Workflows ausführen (z. B. Trainingspipeline).
Beispiel für eine einfache Ausbildungspipeline
Beispiel für eine Trainings-Pipeline auf Vertex AI Pipelines mit Kubeflow
Richtig konzipiert, haben Pipelines den Vorteil, dass sie reproduzierbar und in hohem Maße anpassbar sind. Diese beiden Eigenschaften machen das Experimentieren damit und den Einsatz in der Produktion zu einer relativ einfachen Aufgabe. Die Verwendung von Vertex AI Pipelines zusammen mit Kubeflow hat uns geholfen, schnell benutzerdefinierte Pipelines zu entwerfen und auszuführen, die die oben genannten Eigenschaften aufweisen. Die Beispiele für Pipelines, die wir im Starterkit zeigen, sind sehr repräsentativ für das, was man bei der Arbeit an einem ML-Projekt, das in der Produktion eingesetzt werden muss, antreffen kann. Wir haben auch eine Handvoll Tipps und automatisierte Skripte zur Verfügung gestellt, damit Sie sich auf den Umgang mit Vertex AI konzentrieren können.
Als ich anfing, Vertex AI Pipelines zu verwenden, war ich ziemlich überwältigt von all den Möglichkeiten, genau dieselbe Aufgabe zu erledigen. Ich war mir nicht ganz sicher, wie ich meine Pipelines am besten konstruieren sollte. Nach ein paar Monaten hatten wir unseren Weg gefunden und einige Überzeugungen gewonnen, zumindest was den wichtigsten Aspekt der Verwaltung des Lebenszyklus eines Projekts in der Produktion mit dieser Technologie betrifft.
Wie bereits erwähnt, soll dieser Artikel ein Einsteigerpaket darstellen, das unsere Erfahrungen und das, was wir bei der Verwendung von Vertex AI Pipelines gelernt haben, in praktischen Methoden zeigt. Wir hoffen, dass dies Neueinsteigern hilft, dieses leistungsstarke Werkzeug schnell zu verstehen, ohne den hohen Einstiegspreis zu zahlen.
In den nächsten Abschnitten werden wir die interessantesten Konzepte/Features vorstellen, die wir mit Vertex AI Pipelines gefunden haben. Zur Veranschaulichung des Ganzen verwenden wir auch ein Spielzeug-Prognoseprojekt (den M5-Wettbewerb). Wir werden uns absichtlich nicht auf die Modellierung konzentrieren, sondern stattdessen die verschiedenen Schritte betonen, die für die Operationalisierung eines Modells in der Produktion erforderlich sind.
Erstellen Sie ein benutzerdefiniertes Basisbild und verwenden Sie es als Grundlage für Ihre Komponenten
Wenn Sie jemals mit Kubeflow-Pipelines gearbeitet haben, stellen Sie sich vielleicht die Frage, wann Sie containerbasierte Komponenten und wann funktionsbasierte Komponenten verwenden sollten. Beide Optionen haben viele Vor- und Nachteile, aber es gibt auch einen Mittelweg, der gefunden werden kann. Containerbasierte Komponenten eignen sich besser für komplexe Aufgaben, bei denen viele Code-Abhängigkeiten bestehen, als funktionsbasierte Komponenten, die alle Code-Abhängigkeiten innerhalb einer Funktion enthalten und in der Regel einfacher sind. Letztere laufen schneller, da wir nicht jedes Mal, wenn wir unseren Code bearbeiten, ein Image erstellen und bereitstellen müssen. Bei funktionsbasierten Komponenten wird ein Standard-Python 3.7-Image verwendet, um Ihre Funktion auszuführen.
Unsere Lösung, um sowohl komplexe als auch einfache Komponenten auf die gleiche Weise auszuführen, besteht darin, mit einer überschriebenen Version des Standard-Basis-Images zu arbeiten. Innerhalb dieses geänderten Basis-Images haben wir alle unsere Codes als Paket installiert. Dann importieren wir diese Funktionen in funktionsbasierte Komponenten, wie Sie es zum Beispiel mit Pandas tun würden. Wir haben den Vorteil, dass wir komplexe und einfache Aufgaben auf die gleiche Art und Weise ausführen können und die Erstellungszeit für das Image auf nur 1 (das Basisimage) reduzieren.
Außerdem sind unsere Konfigurationsdateien so organisiert, dass sich die Eingaben Ihrer Komponenten und Pipelines leicht anpassen lassen.
Verwendung eines überschriebenen Basis-Images als einzige Grundlage für alle Ihre Komponenten
Die Parallelisierung von Teilen Ihrer Pipelines ist so einfach wie das Schreiben einer for-Schleife
Wenn wir mit ML experimentieren, müssen wir in der Regel viele Iterationen eines einfachen Trainings-Workflows durchführen, entweder zur Abstimmung eines Hyperparameters oder zur Erstellung mehrerer Modelle (z. B. ein Modell nach Produktkategorie).
Dies optimal zu tun, würde bedeuten, die verschiedenen Trainingsworkflows zu parallelisieren, um Zeit zu gewinnen und die Ressourcen zu optimieren. Mit Vertex Pipelines und Kubefkow ist der Aufwand von vornherein minimal; es kostet Sie nur, eine for-Schleife zu schreiben. Und beim Kompilieren Ihrer Pipeline findet Kubeflow heraus, welche Schritte und/oder Gruppen von Schritten parallel ausgeführt werden können und welche nacheinander erfolgen müssen.
Beispiel für eine Pipeline mit parallel laufenden Teilen
Bedingte Bereitstellung für den nahtlosen Betrieb Ihres ML-Modells
Mit kfp.dsl.condition können Sie auf einfache Weise ein trainiertes Modell bereitstellen und dessen spätere Wiederverwendung mit etwas Code-Logik vorbereiten. Wenn Sie mit vielen Einstellungen experimentieren und hoffen, die Dinge nahtlos in die Produktion zu überführen, wenn eine Reihe von Bedingungen gegeben ist, wird diese Funktionalität von Kubeflow sehr nützlich sein. Kombinieren Sie sie mit einem großartigen CICD, und Sie werden Ihren ML-Modell-Lebenszyklus ohne Probleme durchführen können.
Beispiel für einen bedingten Einsatz
Zusätzlich zu diesen Funktionen (die nicht erschöpfend sind) erhalten Sie Reproduzierbarkeit, Rückverfolgbarkeit, Verwaltbarkeit und nicht zuletzt eine großartige Benutzeroberfläche, um alles auf der Vertex AI Schnittstelle auf GCP zu überwachen.
Schlussfolgerung
Heutzutage wird erwartet, dass viele ML-Modelle in der Produktion eingesetzt werden. Wenn Sie also auf GCP arbeiten und planen, Vertex AI zu verwenden, hoffen wir, dass dieses Starter Kit Ihnen hilft, eine angenehme Reise mit dem Tool zu erleben. Sie sollten es sich auch ansehen, wenn Sie Ihre Projekte mit dem Ziel beginnen, sie so schnell wie möglich nützlich zu machen, d. h. sie in der Produktion einzusetzen.
Vielen Dank an Luca Serra, Jeffrey Kayne und Robin Doumerc (Artefact), die beim Bau dieses Startpakets geholfen haben, aber auch an Maxime Lutel, der die Modellierung für das von uns verwendete Spielzeugprojekt übernommen hat.
Wenn Sie die nächste Stufe erreichen wollen, finden Sie in der Dokumentation von GCP eine Anleitung: