Bereitstellen des LightGBM-Modells auf einem Vertex-AI-Endpoint
Schließlich wollen wir das Modell an einem Endpoint in Vertex AI bereitstellen. Wenn Du ein TensorFlow-Modell wie im Codelab-Tutorial verwendest, ist dieser Teil viel einfacher, da Du einen vorgefertigten Container für die Bereitstellung Deines Modells verwenden kannst. Im Fall von LightGBM musst Du den Container selbst erstellen, wobei Du Dich an den Vertex-AI-Anforderungen für Prediction Container orientieren musst. Dazu gehört auch das Einrichten eines kleinen Webservers. Wir verwenden hier Flask, weil es bekannt und für unseren Zweck relativ leicht zu benutzen ist. Da es auch zahlreiche Alternativen gibt, prüfe bitte die verfügbaren Optionen, wenn es um ein produktives Deployment geht.
Wir setzen jetzt unseren Prediction Container auf. Gib zunächst
cd ~/lightgbm_vertex_ai/prediction/
ein. Unter der Annahme, dass Du noch die Variable $PROJECT_ID aus dem Codelab in Deinem Terminal gesetzt hast, definieren wir die URI unseres Prediction Images:
IMAGE_URI="gcr.io/$PROJECT_ID/mpg-prediction:v1"
Möglicherweise möchtest Du „gcr.io“ ändern, wenn Du dieses Tutorial in einer Region außerhalb der USA durchführen möchtest, wie beispielsweise „eu.gcr.io“ für Europa. Jetzt bauen wir unseren Prediction Container und laden ihn hoch in die Google Container Registry:
docker build ./ -t $IMAGE_URI && docker push $IMAGE_URI
Der Container, den wir gerade gebaut haben, enthält den Code für einen kompletten Webserver. Du kannst den Code in der Datei app.py durchsehen und wirst feststellen, dass wir hier das Python-SDK anstelle von Cloud Storage FUSE verwenden, um unser Modell herunterzuladen. Das ist notwendig, da zum Zeitpunkt der Erstellung dieses Artikels die Prediction Container in Vertex AI im Gegensatz zum Training keine automatische Unterstützung für Cloud Storage FUSE haben.
Nun kannst Du Dein Modell entweder über die Cloud-Konsole oder mit dem folgenden Befehl in Vertex AI importieren:
gcloud ai models upload --region=us-central1 --display-name=mpg --container-image-uri=$IMAGE_URI --artifact-uri=gs://<your-model-bucket-name>
Ersetze „<your-model-bucket-name>“ durch den Namen des Buckets in Deinem Modell. Analog zu oben kannst Du auch „us-central1“ ersetzen, wenn Du in einer anderen Region arbeitest.Schließlich kannst Du Dein Modell bereitstellen, wie in Schritt 6 des Codelabors beschrieben.