Juni 9, 2021

Modellvorhersagen von Vertex AI und der Vergleich mit AI Platform

Mitwirkende
Rebekka Moyson
Data Engineer
Keine Artikel gefunden.
Newsletter abonnieren
Diesen Beitrag teilen

In unserem vorheriger Blog-Eintrag haben wir einen Überblick über die kürzlich eingeführte GCP-Plattform Vertex AI gegeben. Wir glauben, dass die Änderungen, die durch Vertex AI eingeführt werden, zum Besseren sind. Daher wirft unser ML-Ingenieur Ward in diesem Blogbeitrag einen Blick darauf, wie Modelle auf dem neuen und verbesserten GCP-Produkt Vertex AI bereitgestellt und für Vorhersagen verwendet werden können. Die Plattform wurde vor ein paar Wochen eingeführt und neben dem Hinzufügen zusätzlicher Funktionen wurden auch bestehende Funktionen wie das Bereitstellen von Modellen für Vorhersagen aktualisiert und verbessert.


Wir werfen einen Blick darauf, wie Endpunkte jetzt ein zentraler Bestandteil von Modellvorhersagen sind und wie Container die Bereitstellung von benutzerdefinierten Modellen sehr einfach gemacht haben.


Warum GCP-Modellvorhersagen verwenden?

Sie fragen sich vielleicht, warum Sie Ihr Modell überhaupt über GCP bereitstellen und für die Inferenz verwenden wollen. Ist es nicht ziemlich einfach, einen eigenen Microservice einzurichten, in dem ein Modell gehostet wird? Es gibt eine Reihe von Gründen, warum es von Vorteil ist, Ihr Modell in einem verwalteten Dienst zu haben. Zunächst einmal kennt nicht jeder, der in der Lage ist, ein Machine Learning-Modell zu erstellen, auch alle Feinheiten, die beim Hosting auf einem Server auftreten können. Es zum Laufen zu bringen ist eine Sache, aber effizient zu sein eine andere. Wenn Sie GCP dafür verwenden, müssen Sie sich nicht allzu viele Gedanken über Optimierungen machen. Und mit der Zuverlässigkeit von GCP brauchen Sie sich keine Gedanken über Ausfälle oder Sicherheit zu machen. Möchten Sie sowohl für Online- als auch für Batch-Vorhersagen optimieren? Auf Ihrem eigenen Server mühsam einzurichten, aber auf Vertex AI leicht verfügbar, zusammen mit automatischem Zugriff und Protokollierung der Vorhersagen. Und wenn Sie jemals Probleme hatten, weil Sie Ihre API-Version aktualisieren mussten, weil Sie ein neues Modell einsetzen, werden Sie die Traffic-Split-Funktion lieben (siehe unten).

Es gibt auch einige Nachteile, wie z. B. die fehlende Möglichkeit, auf 0 zu skalieren, so dass Sie immer einen Preis zahlen müssen, auch wenn Sie Ihre Modelle nicht für Vorhersagen aufrufen.

Jetzt, wo wir Ihr Gedächtnis über das Warum aufgefrischt haben, können wir ein wenig tiefer eintauchen, was sich mit der Veröffentlichung von Vertex AI geändert hat.

Modell-Einsatz

Auf AI-Plattform

Bevor wir ein Modell für eine Vorhersage aufrufen konnten, mussten wir zunächst einen Platzhalter für ein Modell auf AI Platform einrichten. Diese Platzhalter waren unter AI Platform Models (siehe Abbildung 1) zu finden, was etwas verwirrend ist, da es sich um Platzhalter und nicht um tatsächliche Modelle handelt.

Abbildung 1: AI Platform Models (links) vs. Vertex AI Models (rechts).

Beim Erstellen eines solchen Platzhalters müssen Sie festlegen, wo ein AI Platform Prediction-Job laufen soll. Sie können zwischen einem regionalen oder globalen Endpunkt wählen. Aber jetzt kommt der knifflige Teil: Woher wissen Sie, ob Sie Ihren Job auf einem regionalen (REGION-ml.googleapis.com) oder einem globalen (ml.googleapis.com) laufen lassen wollen? Nun, Sie müssen die Dokumente durchgehen und herausfinden, dass N1-Maschinen nur auf regionalen Endpunkten verfügbar sind, wenn Sie diese verwenden möchten. Die regionalen Endpunkte bieten auch zusätzlichen Schutz gegen Ausfälle in anderen Regionen. Sie benötigen GPUs für die Vorhersage? Auch hier sind nur regionale Endpunkte verfügbar. Wenn Sie jedoch Batch-Vorhersagen nutzen möchten (Optimierung für den Durchsatz statt für die Latenz): nur auf einem globalen Endpunkt möglich. Ach ja, AI Platform Prediction bietet auch benutzerdefinierte Vorhersagen, so dass Sie neben der reinen Inferenz auch Pre- oder Postprocessing durchführen können. Dies ist jedoch nur auf dem globalen Endpunkt möglich. Ist Ihr Modell größer als 500 MB? Nicht möglich auf einem globalen Endpunkt. Möchten Sie ein Pytorch-Modell bereitstellen? Nur auf einem benutzerdefinierten Container möglich und diese sind nur auf regionalen Endpunkten verfügbar. Um das Ganze abzurunden, müssen Sie auf einer bestimmten KI-Plattform-Laufzeitversion bereitstellen, die verschiedene Tensorflow-, Scikit-Learn- und XGBoost-Paketversionen unterstützt und alle ein unterschiedliches Datum haben, bis wann sie verfügbar sind.

Abbildung 2: Möglichkeiten der KI-Plattform vorhersagen.

Bei ML6 haben wir uns die Zeit genommen, all diese Abhängigkeiten herauszufinden und einen Workflow einzurichten, dem unsere Ingenieure folgen konnten, der sie zur richtigen Einrichtung führte. Obwohl diese Arbeit bald veraltet sein wird, sind wir froh, dass die Vertex-KI-Vorhersagen viel klarer geworden sind.

Auf Vertex AI

Wir müssen nun von tatsächlichen Modellen ausgehen, nicht von Platzhaltern. Diese können mit Vertex AI Training erstellt werden (AutoML, benutzerdefinierte Container, Pipelines usw.), aber glücklicherweise ist es auch möglich, Ihre Modellartefakte hochzuladen, wenn Sie selbst ein Modell trainiert haben und das Modell zur Verfügung steht. Benutzerdefinierte Modelle oder Modelle, deren Artefakte auf Vertex AI hochgeladen werden, werden immer mit einem Docker-Container erstellt. Wenn Sie AutoML verwenden, müssen Sie sich nicht um Container kümmern. Haben Sie ein Tensorflow-, Scikit-Learn- oder XGBoost-Modell? Beantworten Sie über die Benutzeroberfläche 2 oder 3 Fragen und der richtige Container wird für das Serving ausgewählt. Oder Sie können auf eine Docker-Hub-URI verweisen (verfügbare Container werden hier angezeigt), wenn Sie den gcloud-Befehl oder eines der verfügbaren SDKs verwenden. Es ist wichtig zu erkennen, dass dieser Container für die Vorhersage verwendet wird. Wenn Sie also GPUs benötigen, müssen Sie auf einen verweisen, der GPU-Funktionalitäten unterstützt.

Was ich anfangs etwas verwirrend fand, war, dass Sie, wenn Sie die Kommandozeile oder das Python-SDK verwenden, um Ihr Modell mit Ihren auf GCS gespeicherten Modellartefakten zu importieren, den richtigen Container-URI für die Vorhersage zuweisen müssen, noch bevor Sie einen Endpunkt erstellen. Beispiele, wie man das macht, werden hier gezeigt.

Wenn Sie ein benutzerdefiniertes Modell verwenden (z. B. ein Pytorch-Modell), müssen Sie auf einen Container verweisen (auf Container/Artifact Registry, Docker Hub...), der den folgenden Anforderungen entspricht. Flask, Tensorflow Serving, TorchServe, KFServing... sind alle möglich, wenn Sie auf ein Container-Image verweisen, auf dem ein HTTP-Server läuft.

Version/Endpunkt-Erstellung

Auf AI-Plattform

Sobald wir eine Modellvorlage bereitgestellt haben, können wir eine Modellversion erstellen, die im Grunde dasselbe tut, was Vertex AI Models jetzt tut: Ihr Modell mit einem vorgefertigten TensorFlow-, Scikit-Learn- oder XGBoost-Container verknüpfen (obwohl zum Zeitpunkt des Schreibens Pytorch auf der UI erwähnt wird, aber nicht in den unterstützten Laufzeiten verfügbar ist, siehe Abbildung 3. Ich nehme an, dass dies ein Fehler auf der UI ist).

Abbildung 3: Erstellen einer Modellversion auf AI Platform.

Um ein Modell auf AI Platform bereitzustellen, müssen Sie eine Modellversion erstellen. Sie müssen sich merken, auf welchem Endpunkt Ihre Modelle gespeichert sind (definiert durch die Modellvorlage, global oder regional), um zu wissen, wie Sie eine Vorhersage von einer bestimmten Version erhalten. Leider zeigen die AI Platform-Dokumente nicht, wie dies mit einem Python-SDK gemacht werden kann, sondern nur mit gcloud- oder REST-API-Befehlen. Sobald eine Version eines Modells bereitgestellt ist, ist es möglich, Vorhersagen von ihnen zu erhalten (siehe nächster Abschnitt).

Auf Vertex AI

Das Erstellen eines Endpunkts zum Abrufen von Vorhersagen aus einem Modell auf Vertex AI ist viel intuitiver. Sie haben Ihr Modell bereitgestellt und es hat bereits die richtige Container-URI, die mit ihm verknüpft ist (siehe vorherigen Abschnitt). Erstellen Sie den Endpunkt einfach mit einem gcloud/REST-Befehl oder folgen Sie dem Java/Node.js- oder Python-Beispiel wie hier gezeigt. Jeder Endpunkt kann auf einem regionalen Endpunkt der Wahl bereitgestellt werden (keine Verwirrung mehr mit regionalen/globalen Endpunkten) und erhält eine eindeutige Endpunkt-ID. Sobald Sie einen Endpunkt haben, können Sie ein Modell mit Ihrer Endpunkt-ID und der Modell-ID (definiert in Vertex AI Models) darauf bereitstellen. Verwenden Sie den Maschinentyp Ihrer Wahl (mit wenig oder viel Speicher, mit oder ohne GPU, mehreren CPUs usw.) für die Bereitstellung von Vorhersagen.

Eine Vorhersage erhalten

Auf AI-Plattform

Sobald eine Modellversion bereitgestellt ist, ist es ziemlich einfach, eine Vorhersage von AI Platform predict zu erhalten, entweder über einen gcloud-Befehl, REST, Python oder Java. Allerdings gibt es immer noch ein Problem mit Batch-Vorhersagen, die auf einem regionalen Endpunkt nicht unterstützt werden und nur auf älteren Laufzeitversionen verfügbar sind. Auch das Python-SDK ist nicht intuitiv und es kursieren mehrere unterschiedliche Implementierungen.

Auf Vertex AI

Auf der neuen Plattform sind die Batch-Vorhersagen komplett getrennt (Sie benötigen keinen Endpunkt für Batch-Vorhersagen) und werden viel besser unterstützt als auf der AI Platform. Aber was uns am meisten gefällt, ist das saubere Python-SDK für Vorhersagen. Es ist sehr intuitiv und einfach zu benutzen mit einer umfangreichen Dokumentation (in Kürze). Schauen Sie sich dieses Repository an! Randbemerkung: ein bisschen unglücklich, dass das SDK immer noch "python-aiplatform" heißt und die Endpunkte REGION-aiplatform.googleapis.com* zugewiesen sind.

Hoffen wir, dass Google dies irgendwann noch beheben kann.

Noch alberner wird es, wenn man sich vergegenwärtigt, dass die Endpunkte der AI Platform der REGION-ml.googleapis.com zugewiesen wurden, einem Überbleibsel des früheren Namens ML Engine. Es scheint, als würde Google zu schnell für Google gehen.

Fazit

Alles in allem gefallen uns die Änderungen, die Google in Vertex AI vorgenommen hat, sehr gut. Die Organisation ist viel sauberer, die Dokumentation ist besser und SDKs in mehreren Sprachen werden mit genügend Beispielen unterstützt. Es gibt auch ein paar Gründe, warum wir das Endpunkt-Setup von Vertex AI viel mehr mögen als die Versionen in AI Platform Prediction:

  • Vertex AI-Endpunkte ermöglichen die Aufteilung des Datenverkehrs an einem einzelnen Endpunkt und in Kombination mit der Möglichkeit, mehrere Endpunkte zu erstellen, erhalten Sie eine große Flexibilität. Wenn Sie z. B. eine neue Version Ihres Modells auf denselben Endpunkt hochladen und diese fehlschlägt, ist es einfach, den Datenverkehr für dieses Modell auf dem Endpunkt auf 0 zu setzen, sodass nur das vorherige Modell verwendet wird. Bei AI Platform Predict wurde der Endpunkt durch die Modellvorlage und die Version definiert und es konnte nur ein einziges Modell auf einem Endpunkt bereitgestellt werden, was bedeutet, dass Sie den Endpunkt selbst zurücksetzen mussten.
  • Traffic-Splits machen A/B-Tests sehr viel einfacher.
  • Die Eigentumsverhältnisse sind klar. Endpunkte sind nun einmal... Endpunkte. Wenn Sie mehrere völlig unterschiedliche Modelle auf einem einzigen Endpunkt bereitstellen möchten: Das liegt an Ihnen. Sie können auch völlig unterschiedliche Modelle auf AI Platform Predict bereitstellen, aber sie fallen alle unter dieselbe Modellvorlage, was verwirrend ist, da es sich um völlig unterschiedliche Modelle handeln kann.

Danke fürs Lesen! Und wenn Sie selbst ein Modell auf Vertex AI einsetzen möchten, werfen Sie einen Blick auf dieses Notizbuch, das wir erstellt haben. Viel Spaß!


Verwandte Beiträge

Alle anzeigen
Keine Ergebnisse gefunden.
Es gibt keine Ergebnisse mit diesen Kriterien. Versuchen Sie, Ihre Suche zu ändern.
Großes Sprachmodell
Stiftung Modelle
Unternehmen
Unser Team
Strukturierte Daten
Chat GPT
Nachhaltigkeit
Stimme und Ton
Front-End-Entwicklung
Schutz und Sicherheit von Daten
Verantwortungsvolle/ethische KI
Infrastruktur
Hardware und Sensoren
MLOps
Generative KI
Verarbeitung natürlicher Sprache
Computer Vision