Auf dieser Seite wird beschrieben, wie Sie mithilfe von Vertex AI Ihr tabellarisches AutoML-Modell in Cloud Storage exportieren, das Modell auf einen lokalen Server oder einen Server herunterladen, der von einem anderen Cloud-Anbieter gehostet wird, und wie Sie dann mit Docker das Modell für Vorhersagen verfügbar machen.
Informationen zum Exportieren von Bild- und Video-Edge-Modellen finden Sie unter AutoML Edge-Modelle exportieren.
Nachdem Sie Ihr tabellarisches Modell exportiert haben, wenn Sie es wieder in Vertex AI zu importieren möchten, lesen Sie Modelle in Vertex AI importieren.
Beschränkungen
Für den Export von tabellarischen AutoML-Modellen gelten die folgenden Einschränkungen:
Sie können nur tabellarische AutoML-Klassifizierungs- und Regressionsmodelle exportieren. Das Exportieren von tabellarischen AutoML-Prognosemodellen wird nicht unterstützt.
Vertex Explainable AI ist bei exportierten Tabellenmodellen nicht verfügbar. Wenn Sie Vertex Explainable AI verwenden müssen, müssen Sie Vorhersagen von einem Modell bereitstellen, das von Vertex AI gehostet wird.
Das exportierte Tabellenmodell kann nur auf x86-Architektur-CPUs ausgeführt werden, die Befehlssätze für Advanced Vector Extensions (AVX) unterstützen.
Export
Gehen Sie folgendermaßen vor, um Ihr Modell zu exportieren:
- Richten Sie die Umgebung ein.
- Modell exportieren.
- Modellserver abrufen und ausführen.
- Vorhersagen anfordern.
Vorbereitung
Bevor Sie diese Aufgabe durchführen können, müssen Sie die folgenden Aufgaben ausgeführt haben:
- Richten Sie Ihr Projekt wie unter Projekt- und Entwicklungsumgebung einrichten beschrieben ein.
- Das Modell trainieren, das Sie herunterladen möchten.
- Installieren und initialisieren Sie die Google Cloud-CLI auf dem Server, auf dem Sie das exportierte Modell ausführen möchten.
- Installieren Sie Docker auf Ihrem Server.
Modell exportieren
Console
Rufen Sie in der Google Cloud Console im Abschnitt "Vertex AI" die Seite Modelle auf.
Klicken Sie auf das Tabellenmodell, das Sie exportieren möchten, um die zugehörige Detailseite aufzurufen.
Klicken Sie in der Symbolleiste auf Exportieren, um das Modell zu exportieren.
Wählen Sie einen Cloud Storage-Ordner am gewünschten Standort aus oder erstellen Sie ihn.
Der Bucket muss die Bucket-Anforderungen erfüllen.
Sie können ein Modell nicht in einen Bucket der obersten Ebene exportieren. Es muss mindestens eine Ordnerebene vorhanden sein.
Die besten Ergebnisse erzielen Sie, wenn Sie einen neuen, leeren Ordner erstellen. Sie kopieren den gesamten Inhalt des Ordners in einem späteren Schritt.
Klicken Sie auf Exportieren.
Im nächsten Abschnitt laden Sie das exportierte Modell auf Ihren Server herunter.
REST
Sie verwenden die Methode models.export, um ein Modell in Cloud Storage zu exportieren.Ersetzen Sie dabei folgende Werte für die Anfragedaten:
- LOCATION: Ihre Region.
- PROJECT: Ihre Projekt-ID.
- MODEL_ID: Die ID des Modells, das Sie exportieren möchten
-
GCS_DESTINATION : Ihr Zielordner in Cloud Storage. Beispiel:
gs://export-bucket/exports
Sie können ein Modell nicht in einen Bucket der obersten Ebene exportieren. Es muss mindestens eine Ordnerebene vorhanden sein.
Der Ordner muss den Bucket-Anforderungen entsprechen.
Die besten Ergebnisse erzielen Sie, wenn Sie einen neuen Ordner erstellen. Sie kopieren den gesamten Inhalt des Ordners in einem späteren Schritt.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
JSON-Text der Anfrage:
{ "outputConfig": { "exportFormatId": "tf-saved-model", "artifactDestination": { "outputUriPrefix": "GCS_DESTINATION" } } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-12T20:53:40.130785Z", "updateTime": "2020-10-12T20:53:40.130785Z" }, "outputInfo": { "artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ" } } }
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Status eines Exportvorgangs abrufen
Einige Anfragen starten lang andauernde Vorgänge, die viel Zeit in Anspruch nehmen. Diese Anfragen geben einen Vorgangsnamen zurück, mit dem Sie den Status des Vorgangs aufrufen oder den Vorgang abbrechen können. Vertex AI stellt Hilfsmethoden bereit, um Aufrufe für Vorgänge mit langer Laufzeit auszuführen. Weitere Informationen finden Sie unter Mit lang andauernden Vorgängen arbeiten.
Modellserver abrufen und ausführen
In dieser Aufgabe laden Sie das exportierte Modell aus Cloud Storage herunter und starten den Docker-Container, damit Ihr Modell Vorhersageanfragen empfangen kann.
So rufen Sie den Modellserver ab und führen ihn aus:
Wechseln Sie auf dem Computer, auf dem Sie das Modell ausführen möchten, in das Verzeichnis, in dem Sie das exportierte Modell speichern möchten.
Laden Sie das exportierte Modell herunter:
gcloud storage cp <var>gcs-destination</var> . --recursive
Dabei ist gcs-destination der Pfad zum Speicherort des exportierten Modells in Cloud Storage.
Das Modell wird unter folgendem Pfad in Ihr aktuelles Verzeichnis kopiert:
./model-<model-id>/tf-saved-model/<export-timestamp>
Der Pfad kann entweder
tf-saved-model
odercustom-trained
enthalten.Benennen Sie das Verzeichnis um, damit der Zeitstempel entfernt wird.
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>
Der Zeitstempel macht das Verzeichnis für Docker ungültig.
Rufen Sie per Pull das Modellserver-Docker-Image ab.
sudo docker pull MODEL_SERVER_IMAGE
Das abzurufende Modellserver-Image befindet sich in der Datei
environment.json
im exportierten Modellverzeichnis. Es sollte den folgenden Pfad haben:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json
Wenn keine environment.json-Datei vorhanden ist, verwenden Sie Folgendes:
MULTI_REGION-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server-v1
Ersetzen Sie
MULTI_REGION
durchus
,europe
oderasia
, um das Docker-Repository auszuwählen, aus dem Sie das Docker-Image abrufen möchten. Jedes Repository stellt dasselbe Docker-Image bereit. Es kann jedoch die Latenz verringern, die Multi-Region der Artifact Registry auszuwählen, die der Maschine am nächsten ist, auf der Sie Docker ausführen.Starten Sie den Docker-Container mit dem gerade erstellten Verzeichnisnamen:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
Sie können den Modellserver jederzeit mit Ctrl-C
stoppen.
Docker-Container des Modellservers aktualisieren
Da Sie den Docker-Container des Modellservers beim Export des Modells herunterladen, müssen Sie den Modellserver explizit aktualisieren, um Updates und Fehlerkorrekturen zu erhalten. Sie sollten den Modellserver mit dem folgenden Befehl regelmäßig aktualisieren:
docker pull MODEL_SERVER_IMAGE
Achten Sie darauf, dass der Docker-Image-URI mit dem URI des Docker-Images übereinstimmt, das Sie zuvor abgerufen haben.
Vorhersagen aus dem exportierten Modell abrufen
Der Modellserver im Image-Container von Vertex AI verarbeitet Vorhersageanfragen und gibt Vorhersageergebnisse zurück.
Die Batchvorhersage ist für exportierte Modelle nicht verfügbar.
Datenformat für Vorhersagen
Sie geben die Daten (Feld payload
) für Ihre Vorhersageanfrage im folgenden JSON-Format an:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
Das folgende Beispiel zeigt eine Anfrage mit drei Spalten: eine kategoriale Spalte, ein numerisches Array und eine Struktur. Die Anfrage enthält zwei Zeilen.
{ "instances": [ { "categorical_col": "mouse", "num_array_col": [ 1, 2, 3 ], "struct_col": { "foo": "piano", "bar": "2019-05-17T23:56:09.05Z" } }, { "categorical_col": "dog", "num_array_col": [ 5, 6, 7 ], "struct_col": { "foo": "guitar", "bar": "2019-06-17T23:56:09.05Z" } } ] }
Vorhersageanfrage stellen
Fügen Sie Ihre Anfragedaten in eine Textdatei ein, z. B.
tmp/request.json
.Die Anzahl der Datenzeilen in der Vorhersageanfrage, die als Minibatch-Größe bezeichnet wird, wirkt sich auf die Latenz der Vorhersage und den Durchsatz aus. Je größer die Minibatch-Größe, desto höher die Latenz und der Durchsatz. Verwenden Sie für eine reduzierte Latenz eine kleinere Minibatch-Größe. Für einen höheren Durchsatz erhöhen Sie die Minibatch-Größe. Die am häufigsten verwendeten Minibatch-Größen sind 1, 32, 64, 128, 256, 512 und 1024.
Fordern Sie die Vorhersage an:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
Format der Vorhersageergebnisse
Das Format Ihrer Ergebnisse hängt vom Ziel Ihres Modells ab.
Ergebnisse des Klassifikationsmodells
Vorhersageergebnisse für Klassifizierungsmodelle (binär und mehrklassig) geben einen Wahrscheinlichkeitswert für jeden potenziellen Wert der Zielspalte zurück. Sie müssen festlegen, wie die Bewertungen verwendet werden sollen. Um beispielsweise eine binäre Klassifizierung aus den bereitgestellten Bewertungen zu erhalten, würden Sie einen Schwellenwert angeben. Wenn es die beiden Klassen „A“ und „B“ gibt, sollten Sie das Beispiel mit „A“ klassifizieren, wenn die Bewertung für „A“ größer als der ausgewählte Grenzwert ist. Andernfalls klassifizieren Sie „B“. Bei unausgewogenen Datasets kann der Grenzwert 100 % oder 0 % erreichen.
Die Ergebnisnutzlast für ein Klassifizierungsmodell sieht in etwa so aus:
{ "predictions": [ { "scores": [ 0.539999994635582, 0.2599999845027924, 0.2000000208627896 ], "classes": [ "apple", "orange", "grape" ] }, { "scores": [ 0.23999999463558197, 0.35999998450279236, 0.40000002086278963 ], "classes": [ "apple", "orange", "grape" ] } ] }
Ergebnisse des Regressionsmodells
Für jede gültige Zeile der Vorhersageanfrage wird ein vorhergesagter Wert zurückgegeben. Prognoseintervalle werden für exportierte Modelle nicht zurückgegeben.
Die Nutzlast der Ergebnisse für ein Regressionsmodell sieht in etwa so aus:
{ "predictions": [ { "value": -304.3663330078125, "lower_bound": -56.32196807861328, "upper_bound": 126.51904296875 }, { "value": -112.3663330078125, "lower_bound": 16.32196807861328, "upper_bound": 255.51904296875 } ] }