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