Lesen Sie unseren Artikel über

.

In diesem Artikel stellen wir Ihnen 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, denn alles in diesem Tutorial basiert auf praktischen Erfahrungen. Es gibt viele Beispiele für Pipelines, die zeigen, wie Sie bestimmte coole Funktionen von Vertex AI und Kubeflow nutzen können. Außerdem finden Sie ein Makefile, das Ihnen hilft, wichtige Rezepte auszuführen und viel Zeit zu sparen, um Ihr Modell zu erstellen und es in Produktion zu bringen.

Pipelines in ML können als Sets von miteinander verbundenen Aufträgen definiert werden, die komplette oder bestimmte Teile des ML-Workflows ausführen (z.B. Trainingspipeline).

example of a simple training pipeline

Beispiel für ein einfaches Trainingsprogramm

example of a training pipeline on Vertex AI Pipelines using Kubeflow

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 Starter Kit zeigen, sind sehr repräsentativ für die Arbeit an einem ML-Projekt, das in der Produktion eingesetzt werden soll. 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 gefestigt, zumindest was den wichtigsten Aspekt der Verwaltung des Lebenszyklus eines Projekts in der Produktion mit dieser Technologie angeht.

Wie bereits erwähnt, möchten wir Ihnen in diesem Artikel ein Starter-Kit vorstellen, 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 Tool schnell zu verstehen, ohne den hohen Einstiegspreis zu zahlen.

In den nächsten Abschnitten werden wir die interessantesten Konzepte/Funktionen vorstellen, die wir mit Vertex AI Pipelines gefunden haben. Zur Veranschaulichung verwenden wir auch ein Spielzeug-Prognoseprojekt (den M5-Wettbewerb). Wir werden uns absichtlich nicht auf die Modellierung konzentrieren, sondern stattdessen die verschiedenen Schritte hervorheben, die erforderlich sind, um ein Modell in der Produktion zu operationalisieren.

Erstellen Sie ein benutzerdefiniertes Basisbild und verwenden Sie es als Grundlage für Ihre Komponenten

Wenn Sie schon einmal 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 bei pandas tun würden. Wir haben den Vorteil, dass wir komplexe und einfache Aufgaben auf die gleiche Weise ausführen und die Zeit für die Erstellung des Images auf nur 1 (das Basisimage) reduzieren können.

Wir organisieren auch unsere Konfigurationsdateien auf eine Weise, die es einfach macht, die Eingaben Ihrer Komponenten und Pipelines anzupassen.

Using a an overwritten base image as the single foundation for all your components

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 um einen Hyperparameter zu optimieren oder um mehrere Modelle zu erstellen (z.B. ein Modell nach Produktkategorie).

Um dies optimal zu tun, müssten Sie die verschiedenen Trainingsabläufe 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

Bedingter Einsatz für den nahtlosen Betrieb Ihres ML-Modells

Mit kfp.dsl.condition können Sie ganz einfach ein trainiertes Modell bereitstellen und es später mit etwas Code-Logik wiederverwenden. Wenn Sie mit vielen Einstellungen experimentieren und hoffen, dass Sie die Dinge unter bestimmten Bedingungen nahtlos in die Produktion überführen können, ist diese Funktionalität von Kubeflow sehr nützlich. 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), haben Sie Reproduzierbarkeit , Rückverfolgbarkeit, Verwaltbarkeit und nicht zuletzt eine großartige Benutzeroberfläche, um alles über die Vertex AI-Schnittstelle auf GCP zu überwachen.

Fazit

Heutzutage wird erwartet, dass viele ML-Modelle in der Produktion laufen. Wenn Sie also auf GCP arbeiten und planen, Vertex AI zu verwenden, hoffen wir, dass dieses Starter Kit Ihnen eine angenehme Reise mit dem Tool ermöglicht. 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 Starterkits geholfen haben, aber auch Maxime Lutel, der die Modellierung für das von uns verwendete Spielzeugprojekt übernommen hat.

Wenn Sie die nächste Stufe erreichen möchten, finden Sie in der Dokumentation von GCP eine Anleitung dazu:

Mittel Blog von Artefact.

Dieser Artikel wurde ursprünglich veröffentlicht auf Medium.com.
Folgen Sie uns auf unserem Medium Blog !