Vorhersagen mit Remote-Modellen in Vertex AI treffen

Überblick

Sie können einen Vertex AI-Endpunkt als Remote-Modell registrieren und mit ML.PREDICT direkt aus BigQuery aufrufen.

Dies ist insbesondere dann hilfreich, wenn ein Modell für den Import in BigQuery zu groß ist oder wenn eine Inferenz für Online-, Batch- und Mikro-Batch-Anwendungsfälle verwendet werden soll.

In dieser Anleitung wird ein benutzerdefiniertes Sentimentanalysemodell verwendet, indem ein BERT-Modell mit Nur-Text-IMDB-Filmrezensionen optimiert wird. Das resultierende Modell verwendet Texteingaben (Filmrezensionen) und gibt Sentimentwerte zwischen (0, 1) zurück. Das Modell ist in Vertex AI Model Registry registriert und auf einem Vertex AI-Endpunkt bereitgestellt. Von dort wird das Modell zu einem Remote-Modell in BigQuery hinzugefügt. Mit dem Remote-Modell in BigQuery können Sie Sentimentvorhersagen für eine Textspalte abrufen (Rezensionen von Filmen aus der 100.000 Zeilentabelle alten bigquery-public-data.imdb.reviews).

Sehen Sie sich die Anleitung zu BQML-Remotemodellen für eine GitHub-Anleitung der Python-Version an.

Workflowübersicht

Einrichtung für die Anleitung

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet: Cloud Storage, Vertex AI und BigQuery. Am Ende der Anleitung entfernen Sie die kostenpflichtigen Komponenten.

  1. Klicken Sie hier, um APIs für Vertex AI-, Cloud Storage- und BigQuery-Cloud-Ressourcenverbindungen zu aktivieren.
  2. Cloud Storage: Erstellen Sie einen Bucket am multiregionalen Standort US mit dieser Anleitung.

ML-Modell erstellen

Erstellen Sie ein Modell mithilfe der BQML-Remotemodell-Anleitung, die ein Vorhersagemodell für die Sentimentanalyse enthält, das durch Feinabstimmung eines BERT-Modells erstellt wurde, während eine Klassifizierungsebene hinzugefügt wird.

Wir haben bereits ein Beispielmodell trainiert und in gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/ hochgeladen, damit Sie es direkt verwenden können.

Modell in Vertex AI bereitstellen

Folgen Sie der Anleitung, um das Modell in der Vertex AI Model Registry zu registrieren.

Folgen Sie der Anleitung zum Bereitstellen des Modells aus der Vertex AI Model Registry auf einem Vertex AI-Endpunkt.

Wir empfehlen, die maximale Anzahl von Rechenknoten festzulegen. Dies aktiviert die Autoscaling-Funktion auf der Vertex-AI-Seite und hilft dem Endpunkt, mehr Anfragen zu verarbeiten, wenn Ihre BigQuery-Datentabelle eine große Anzahl von Zeilen enthält.

Remotemodell von BigQuery ML

Ein BigQuery ML-Remote-Modell besteht aus zwei Komponenten: einer BigQuery-Cloud-Ressourcenverbindung und einem BigQuery-Remote-Modell, das die Verbindung verwendet.

BigQuery-Cloud-Ressourcenverbindung erstellen

Sie benötigen eine Cloud-Ressourcenverbindung, um eine Verbindung zu Vertex AI herzustellen.

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie auf Hinzufügen und dann auf Verbindungen zu externen Datenquellen, um eine Verbindung zu erstellen.

  3. Wählen Sie in der Liste Verbindungstyp die Option Vertex AI-Remote-Modelle, Remote-Funktionen und BigLake (Cloud Resource) aus.

  4. Geben Sie im Feld Verbindungs-ID einen Namen für die Verbindung ein.

  5. Klicken Sie auf Verbindung erstellen.

  6. Klicken Sie auf Zur Verbindung.

  7. Kopieren Sie im Bereich Verbindungsinformationen die Dienstkonto-ID zur Verwendung in einem späteren Schritt.

bq

  1. Erstellen Sie in einer Befehlszeilenumgebung eine Verbindung:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    Der Parameter --project_id überschreibt das Standardprojekt.

    Ersetzen Sie Folgendes:

    • REGION: Ihre Verbindungsregion
    • PROJECT_ID: Ihre Google Cloud-Projekt-ID
    • CONNECTION_ID: eine ID für Ihre Verbindung

    Wenn Sie eine Verbindungsressource herstellen, erstellt BigQuery ein eindeutiges Systemdienstkonto und ordnet es der Verbindung zu.

    Fehlerbehebung:Wird der folgende Verbindungsfehler angezeigt, aktualisieren Sie das Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Rufen Sie die Dienstkonto-ID ab und kopieren Sie sie zur Verwendung in einem späteren Schritt:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID
    

    Die Ausgabe sieht in etwa so aus:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Hängen Sie folgenden Abschnitt an Ihre main.tf-Datei an.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Ersetzen Sie Folgendes:

  • CONNECTION_ID: eine ID für Ihre Verbindung
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • REGION: Ihre Verbindungsregion

Zugriff einrichten

So weisen Sie dem Dienstkonto der Verbindung eine entsprechende Rolle für den Zugriff auf den Vertex AI-Dienst zu:

  1. Zur Seite IAM & Verwaltung.

    IAM & Verwaltung aufrufen

  2. Klicken Sie auf Zugriff gewähren.

  3. Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.

  4. Wählen Sie im Feld Rolle auswählen die Option Vertex AI und dann Vertex AI-Nutzerrolle aus.

  5. Klicken Sie auf Speichern.

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset zum Speichern Ihres ML-Modells:

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    Zur Seite „BigQuery“

  2. Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.

  3. Klicken Sie auf Aktionen ansehen > Dataset erstellen.

    Dataset erstellen

  4. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    • Geben Sie unter Dataset-ID bqml_tutorial ein.

    • Wählen Sie als Standorttyp die Option Mehrere Regionen und dann USA (mehrere Regionen in den USA) aus.

      Die öffentlichen Datasets sind am multiregionalen Standort US gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Standort speichern.

    • Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.

      Seite "Dataset erstellen"

BigQuery ML-Remote-Modell erstellen

So rufen Sie das Eingabe- und Ausgabeschema für das TensorFlow-Modell auf, indem Sie eine Anfrage an den Endpunkt senden:

Beispiel für eine Anfrage:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:predict -d "{'instances': [{ 'text': 'This is an amazing movie'}, { 'text': 'The movie was terrible'}]}"

Beispiel für eine Antwort:

{
  "predictions": [
    [
      [ 0.999410391 ]
    ],
    [
      [ 0.000628352049 ]
    ]
  ]
}

Beim Erstellen eines Remote-Modells müssen die Namen und Typen der Eingabe- und Ausgabefelder genau mit der Ein- und Ausgabe von Vertex AI übereinstimmen.

Für das Modell mit einzelner Ausgabe gibt Vertex AI keinen Feldnamen zurück. In CREATE MODEL können Sie einen beliebigen Feldnamen angeben.

Das folgende Beispiel zeigt, wie ein Remote-Modell mit einer Verbindung erstellt wird:

CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`
    INPUT (text STRING)
    OUTPUT(scores ARRAY<FLOAT64>)
    REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS(endpoint = 'ENDPOINT_URL')

Vorhersagen mit ML.PREDICT abrufen

Rufen Sie mithilfe der Funktion ML.PREDICT Vorhersagen aus dem Remote-Modell in BigQuery ab. Hier werden 10.000 Datensätze ausgewählt und für die Vorhersage gesendet. Das Remote-Modell verwendet für seine Anfragen standardmäßig eine Batchgröße von 128.

SELECT *
FROM ML.PREDICT (
    MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`,
    (
        SELECT review as text
        FROM `bigquery-public-data.imdb.reviews`
        LIMIT 10000
    )
)

Unterstützte Regionen

In BigQuery gibt es zwei Standortarten:

  • Eine Region ist ein bestimmter geografischer Ort, wie z. B. London.
  • Eine Multiregion ist ein großes geografisches Gebiet (beispielsweise die USA), das mindestens zwei geografische Orte enthält.

Einzelne Region

In einem BigQuery-Dataset mit einer Region können Sie nur ein Remote-Modell erstellen, das einen Vertex AI-Endpunkt verwendet, der in derselben Region bereitgestellt wird. Ein Remote-Modell in einer einzelnen BigQuery-Region "us-central1" kann nur eine Vertex-KI in us-central1 verwenden. Für einzelne Regionen werden Remote-Modelle also nur in Regionen unterstützt, die sowohl Vertex AI als auch BigQuery unterstützen.

Multiregionen

In einem multiregionalen BigQuery-Dataset (US, EU) können Sie nur ein Remote-Modell erstellen, das ein Remote-Modell verwendet, das in einer Region innerhalb derselben großen geografischen Region bereitgestellt wird (US, EU). Zum Beispiel: Ein Remote-Modell im multiregionalen BigQuery US-Standort kann nur einen Vertex AI-Endpunkt verwenden, der in einer einzelnen Region im geografischen Gebiet der USA bereitgestellt wird. Beispiel:us-central1, us-east4, us-west2 usw.

Ein Remote-Modell in der Multiregion BigQuery EU kann nur einen Vertex AI-Endpunkt verwenden, der in einer einzelnen Region in einem der Mitgliedsstaaten der Europäischen Union bereitgestellt ist, z. B. europe-north1, europe-west3 usw.

Weitere Informationen zu Regionen und Multiregionen finden Sie auf der Seite Dataset-Standorte. Weitere Informationen zu Vertex AI-Regionen finden Sie unter Vertex AI-Standorte.

VPC Service Controls verwenden

VPC Service Controls ist ein Google Cloud-Feature, mit dem Sie einen sicheren Perimeter einrichten können, der vor Daten-Exfiltration schützt. Wenn Sie VPC Service Controls mit Remote-Modellen verwenden möchten, um die Sicherheit zu erhöhen, folgen Sie der Anleitung für VPC Service Controls, um einen Dienstperimeter zu erstellen.

Fügen Sie das BigQuery-Projekt der Abfrage mithilfe des Remotemodells in den Perimeter ein. Fügen Sie das Endpunktprojekt dem Perimeter hinzu und legen Sie die Vertex AI API in den eingeschränkten Diensten anhand Ihres Endpunkttyps fest. Weitere Informationen finden Sie unter Vertex AI VPC Service Controls.

Bereinigen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.