Vertex AI: BigQuery-Modell für maschinelles Lernen für die Vorhersage exportieren und bereitstellen

1. Übersicht

In diesem Lab trainieren Sie ein Modell mit BigQuery Machine Learning, exportieren es und stellen es dann in Vertex AI bereit. Dies ist das neueste KI-Produktangebot von Google Cloud.

Lerninhalte

Die folgenden Themen werden behandelt:

  • Modell mit BigQuery Machine Learning (BQML) trainieren
  • BQML-Modell nach Cloud Storage exportieren
  • Trainiertes BQML in Vertex AI bereitstellen
  • Vorhersagen für ein bereitgestelltes Modell abrufen

Die Gesamtkosten für das Lab in Google Cloud belaufen sich auf 2$.

2. Einführung in Vertex AI

In diesem Lab wird das neueste KI-Produktangebot von Google Cloud verwendet. Vertex AI bindet die ML-Angebote in Google Cloud in eine nahtlose Entwicklungsumgebung ein. Zuvor waren mit AutoML trainierte und benutzerdefinierte Modelle über separate Dienste zugänglich. Das neue Angebot vereint beides in einer einzigen API sowie weitere neue Produkte. Sie können auch vorhandene Projekte zu Vertex AI migrieren. Wenn Sie uns Feedback geben möchten, besuchen Sie die Supportseite.

Vertex AI enthält viele verschiedene Produkte zur Unterstützung von End-to-End-ML-Workflows. In diesem Lab liegt der Fokus auf den unten genannten Produkten: Vorhersagen und Notebooks.

Vertex-Produktübersicht

3. Richten Sie Ihre Umgebung ein.

Sie benötigen ein Google Cloud Platform-Projekt mit aktivierter Abrechnung, um dieses Codelab auszuführen. Folgen Sie dieser Anleitung, um ein Projekt zu erstellen.

Schritt 1: Compute Engine API aktivieren

Gehen Sie zu Compute Engine und wählen Sie Aktivieren aus, falls dies noch nicht geschehen ist. Sie benötigen dies zum Erstellen Ihrer Notebookinstanz.

Schritt 2: Vertex AI API aktivieren

Rufen Sie in der Cloud Console den Bereich Vertex AI auf und klicken Sie auf Vertex AI API aktivieren.

Vertex AI-Dashboard

Schritt 3: Notebooks-Instanz erstellen

Wir verwenden Notebooks, um Vorhersagen zu erhalten, nachdem wir unser Modell bereitgestellt haben. Klicken Sie in der Cloud Console im Bereich Vertex AI auf „Notebooks“:

Vertex AI-Menü

Wählen Sie dort Neue Instanz aus. Wählen Sie dann den Instanztyp TensorFlow Enterprise 2.3 ohne GPUs aus:

TFE-Instanz

Verwenden Sie die Standardoptionen und klicken Sie dann auf Erstellen. Nachdem die Instanz erstellt wurde, wählen Sie JupyterLab öffnen aus:

CAIP-Notebook öffnen

4. Trainieren Sie ein BigQuery ML-Modell

Mit BigQuery ML können Sie benutzerdefinierte Modelle für maschinelles Lernen mithilfe von in BigQuery gespeicherten Daten trainieren. Sie können Modelle in SQL trainieren und Vorhersagen aus ihnen abrufen. In diesem Lab verwenden wir ein öffentlich verfügbares Dataset in BigQuery, um die Wahrscheinlichkeit eines Zahlungsversäumnisses bei einer Kreditkartenzahlung vorherzusagen.

Schritt 1: BigQuery-Dataset im Projekt erstellen

Zum Trainieren eines Modells in BigQuery ML müssen Sie in Ihrem Projekt ein Dataset zum Speichern dieses Modells erstellen. Klicken Sie in der linken Menüleiste auf Ihr Projekt und wählen Sie Dataset erstellen aus:

BQ-Dataset erstellen

Geben Sie im Feld Dataset-ID den Wert cc_default ein. Lassen Sie die restlichen Felder unverändert und klicken Sie auf Dataset erstellen.

Schritt 2: CREATE MODEL-Abfrage ausführen

Führen Sie im BigQuery-Abfrageeditor die folgende CREATE MODEL-Abfrage aus, um ein BigQuery ML-Modell mit dem öffentlichen Dataset zu erstellen und zu trainieren, das wir verwenden werden. Ersetzen Sie your-project durch den Namen Ihres Cloud-Projekts:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Dadurch wird ein logistisches Regressionsmodell erstellt, das einen numerischen Wert zwischen 0 und 1 ausgibt, was bedeutet, dass die Ausführung ungefähr eine Minute dauert. Nach Abschluss des Vorgangs wird das Modell unter Ihrem Dataset angezeigt:

Details zum BQML-Modell

Sie können auf das Modell klicken, um die Trainings- und Bewertungsmesswerte aufzurufen.

5. BigQuery ML-Modell exportieren

Mit einem trainierten BQML-Modell können wir die BQML-SQL-Syntax für Vorhersagen verwenden oder das Modell exportieren, um es an anderer Stelle bereitzustellen. Hier exportieren wir unser Modell, damit wir es in Vertex AI bereitstellen können, um das Modell skalierbar bereitzustellen und Vorhersagen zu erhalten.

Schritt 1: Cloud Storage-Bucket für das Modell erstellen

Klicken Sie in den Modelldetails auf Modell exportieren:

BQML-Modell exportieren

Sie werden aufgefordert, den Google Cloud Storage-Speicherort (GCS) einzugeben, an den die Assets Ihres Modells exportiert werden sollen. Keine Sorge, wenn Sie noch keinen GCS-Bucket haben. Wir erstellen gleich eins. Klicken Sie zuerst auf Durchsuchen:

GCS-Buckets durchsuchen

Klicken Sie dann auf das Symbol +, um einen neuen Bucket zu erstellen:

Neuer GCS-Bucket

Geben Sie ihm einen eindeutigen Namen (Namen von Storage-Buckets müssen global eindeutig sein). Klicken Sie auf Weiter. Wählen Sie im nächsten Schritt unter Standorttyp die Option Region und dann eine Region aus dem Drop-down-Menü aus:

Bucket-Standort

Verwenden Sie die Standardspeicherklasse und achten Sie bei der Zugriffssteuerung darauf, dass Einheitlich ausgewählt ist:

Einheitliche Zugriffssteuerung

Klicken Sie auf „Weiter“ und verwenden Sie für die übrigen Optionen die Standardeinstellungen. Klicken Sie auf Erstellen.

Schritt 2: BQML-Modell exportieren

Nachdem Sie den neuen Bucket erstellt haben, geben Sie model-assets oder einen beliebigen anderen Wert in das Feld Name ein und klicken Sie dann auf Auswählen:

Modellexportpfad

Klicken Sie dann auf Exportieren. Dadurch wird in BigQuery ein Job erstellt, mit dem Sie das Modell im SavedModel-Format von TensorFlow in den neu erstellten GCS-Bucket exportieren können, den Sie angegeben haben. Der Export dauert etwa eine Minute.

Rufen Sie während des Exports Ihres Modells in der Cloud Console den Bereich Speicher auf. Wenn der Job abgeschlossen ist, sollten die Modell-Assets in den gerade erstellten Bucket im Unterverzeichnis model-assets exportiert werden:

Exportierte Modell-Assets

6. Modell in Vertex AI importieren

In diesem Schritt verweisen wir auf den GCS-Speicherort, an den wir gerade unsere Modell-Assets exportiert haben, um das Modell zu erstellen und in Vertex AI zu importieren.

Schritt 1: Modell importieren

Rufen Sie in der Cloud Console den Vertex AI-Abschnitt Models (Modelle) auf. Wählen Sie dort Importieren aus:

Modell importieren

Geben Sie Ihrem Modell im ersten Schritt den Namen predict_default. Wählen Sie die Region aus, in der Sie auch den Bucket erstellt haben (us-central1, europe-west4 oder asia-east1). Klicken Sie dann auf Weiter. Behalten Sie in den Modelleinstellungen die Option „Modellartefakte in einen neuen vordefinierten Container importieren“ bei. ausgewählt.

Wählen Sie im Drop-down-Menü Modell-Framework die Option TensorFlow aus. Wählen Sie dann 2.3 als Framework-Version aus.

Klicken Sie im Feld „Speicherort des Modellartefakts“ auf Durchsuchen, klicken Sie auf den soeben erstellten GCS-Bucket und dann auf das Verzeichnis model-assets:

Modell-Asset-Pfad

Klicken Sie dann auf Importieren. Das Importieren Ihres Modells dauert einige Minuten. Nachdem es erstellt wurde, wird es in der Cloud Console im Abschnitt „Modelle“ angezeigt:

Bereich „Modelle“

7. Modell auf einem Endpunkt bereitstellen

Nachdem wir das Modell hochgeladen haben, erstellen wir im nächsten Schritt einen Endpunkt in Vertex. Einer Modellressource in Vertex können mehrere Endpunkte zugeordnet sein und Sie können Traffic auf Endpunkte aufteilen.

Schritt 1: Endpunkt erstellen

Gehen Sie auf der Modellseite zum Tab Bereitstellen und testen und klicken Sie auf Auf Endpunkt bereitstellen:

Bereitstellen und testen

Geben Sie dem Endpunkt einen Namen wie default_pred_v1, lassen Sie die Einstellungen für die Trafficaufteilung unverändert und wählen Sie dann einen Maschinentyp für die Modellbereitstellung aus. Wir haben hier einen n1-highcpu-2 verwendet, aber Sie können einen beliebigen Maschinentyp auswählen.

Wählen Sie dann „Fertig“ aus und klicken Sie auf Weiter. Lassen Sie die ausgewählten Standorteinstellungen unverändert und klicken Sie auf Bereitstellen. Die Bereitstellung des Endpunkts dauert einige Minuten. Wenn er abgeschlossen ist, wird daneben ein grünes Häkchen angezeigt:

Bereitgestellter Endpunkt

Sie sind ihr dicht auf den Fersen. Jetzt können Sie Vorhersagen für Ihr bereitgestelltes Modell abrufen.

8. Vorhersagen für unser bereitgestelltes Modell abrufen

Es gibt mehrere Möglichkeiten, Modellvorhersagen zu erhalten:

  • Vertex AI-UI
  • Vertex AI API

Hier zeigen wir Ihnen, wie Sie Vorhersagen über die API erhalten.

Schritt 1: Modellvorhersagen mit der Vertex AI API abrufen

Um Ihnen zu zeigen, wie Sie hier Modellvorhersagen abrufen, verwenden wir die Vertex Notebook-Instanz, die Sie zu Beginn dieses Labs erstellt haben.

Öffnen Sie als Nächstes die von Ihnen erstellte Notebookinstanz und ein Python 3-Notebook über den Launcher:

Notebook öffnen

Führen Sie in Ihrem Notebook den folgenden Befehl in einer Zelle aus, um ein Testbeispiel in eine JSON-Datei mit dem Namen default-pred.json zu schreiben. Wir senden dieses Beispiel zur Vorhersage an unser Modell:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Klicken Sie dann in der Vertex-UI für den soeben bereitgestellten Endpunkt auf Sample Request (Beispielanfrage):

Beispielanfrage

Kopieren Sie den Code aus Schritt 4 auf dem REST-Tab in Ihr Notebook und führen Sie die Zelle aus:

Anfragevariablen

Fügen Sie dann eine Variable für die Region hinzu, in der Sie den Bucket und das Modell erstellt haben. Ersetzen Sie your-region im folgenden String:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Senden Sie abschließend mit curl eine Vorhersageanfrage an Ihren Endpunkt, indem Sie den folgenden Code in Ihr Notebook kopieren:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Sie sollten in etwa Folgendes sehen (exakte Vorhersagewerte können etwas variieren):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Die Werte in default_payment_next_month_probs geben die Wahrscheinlichkeit für jede Klasse an. In diesem Beispiel prognostiziert unser Modell eine Wahrscheinlichkeit von 81 %, dass diese Person nicht standardmäßig die nächste Zahlung ausführen wird. Der Wert .819 entspricht der Klasse 0 (nicht der Standardeinstellung).

🎉 Glückwunsch! 🎉

Sie haben Folgendes gelernt:

  • Modell in BQML trainieren
  • BQML-Modell nach Cloud Storage exportieren
  • BQML-Modell für Vorhersagen in Vertex AI importieren
  • Vertex AI-Modell erstellen und auf einem Endpunkt bereitstellen
  • Vorhersagen auf Ihrem bereitgestellten Endpunkt über Vertex Notebooks abrufen und curl

Weitere Informationen zu den verschiedenen Teilen von Vertex AI finden Sie in der Dokumentation.

9. Bereinigen

Wenn Sie das Notebook, das Sie in diesem Lab erstellt haben, weiter verwenden möchten, sollten Sie es deaktivieren, wenn Sie es nicht verwenden. Wählen Sie in der Notebooks-UI in der Cloud Console das Notebook und dann Beenden aus:

Instanz beenden

Wenn Sie das Notizbuch vollständig löschen möchten, klicken Sie einfach oben rechts auf die Schaltfläche Löschen.

Wenn Sie den von Ihnen bereitgestellten Endpunkt löschen möchten, gehen Sie in der Vertex AI-Konsole zum Abschnitt Endpunkte und klicken Sie auf das Symbol zum Löschen:

Endpunkt löschen

Wenn Sie den Storage-Bucket löschen möchten, gehen Sie im Navigationsmenü der Cloud Console zu „Storage“, wählen Sie den Bucket aus und klicken Sie auf „Löschen“:

Speicher löschen