Anleitung: Inferenz für eine Objekttabelle mithilfe eines Featurevektormodells ausführen
In dieser Anleitung erfahren Sie, wie Sie eine Objekttabelle basierend auf den Bildern aus dem Blumen-Dataset erstellen und dann mit demMobileNet V3-Modell.
Das MobileNet V3-Modell
Das MobileNet V3-Modell analysiert Bilddateien und gibt ein Featurevektor-Array zurück. Das Array des Merkmalsvektors ist eine Liste numerischer Elemente, die die Eigenschaften der analysierten Bilder beschreiben. Jeder Merkmalsvektor beschreibt einen mehrdimensionalen Merkmalbereich und stellt die Koordinaten des Bildes in diesem Bereich bereit. Sie können die Merkmalsvektorinformationen für ein Bild verwenden, um das Bild weiter zu klassifizieren, z. B. mithilfe einer Kosinus-Ähnlichkeit zur Gruppierung ähnlicher Bilder.
Die Modelleingabe in MobileNet V3 verwendet einen Tensor von DType
tf.float32 in der Form [-1, 224, 224, 3]. Die Ausgabe ist ein Array von Tensoren von tf.float32 in der Form[-1, 1024].
Erforderliche Berechtigungen
- Zum Erstellen des Datasets benötigen Sie die Berechtigung
bigquery.datasets.create. Zum Erstellen der Verbindungsressource benötigen Sie die folgenden Berechtigungen:
bigquery.connections.createbigquery.connections.get
Zum Erteilen von Berechtigungen für das Dienstkonto der Verbindung benötigen Sie die folgende Berechtigung:
resourcemanager.projects.setIamPolicy
Zum Erstellen der Objekttabelle benötigen Sie die folgenden Berechtigungen:
bigquery.tables.createbigquery.tables.updatebigquery.connections.delegate
Zum Erstellen des Buckets benötigen Sie die Berechtigung
storage.buckets.create.Zum Hochladen des Datasets und des Modells in Cloud Storage benötigen Sie die Berechtigungen
storage.objects.createundstorage.objects.get.Zum Laden des Modells in BigQuery ML benötigen Sie die folgenden Berechtigungen:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:
bigquery.tables.getDatafür die Objekttabellebigquery.models.getDatafür das Modellbigquery.jobs.create
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- BigQuery: You incur storage costs for the object table you create in BigQuery.
- BigQuery ML: You incur costs for the model you create and the inference you perform in BigQuery ML.
- Cloud Storage: You incur costs for the objects you store in Cloud Storage.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Weitere Informationen zu BigQuery-Speicherpreisen finden Sie unter Speicherpreise in der BigQuery-Dokumentation.
Weitere Informationen zu den Preisen für BigQuery ML finden Sie in der BigQuery-Dokumentation unter Preise für BigQuery ML.
Weitere Informationen zu den Preisen von Cloud Storage erhalten Sie auf der Seite Cloud Storage – Preise.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Connection API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Connection API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE SCHEMA `PROJECT_ID.mobilenet_inference_test`;
Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Aktivieren Sie Cloud Shell in der Google Cloud Console.
Erstellen Sie das Dataset mit dem Befehl
bq mk.bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Rufen Sie die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Wenn Sie den linken Bereich nicht sehen, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.
Klicken Sie im Bereich Explorer auf Daten hinzufügen.
Das Dialogfeld Daten hinzufügen wird geöffnet.
Wählen Sie im Bereich Filtern nach im Abschnitt Datenquellentyp die Option Datenbanken aus.
Alternativ können Sie im Feld Nach Datenquellen suchen
Vertex AIeingeben.Klicken Sie im Abschnitt Empfohlene Datenquellen auf Vertex AI.
Klicken Sie auf die Lösungsübersichtskarte Vertex AI-Modelle: BigQuery Federation.
Wählen Sie in der Liste Verbindungstyp die Option Vertex AI-Remote-Modelle, Remote-Funktionen, BigLake und Cloud Spanner (Cloud-Ressource) aus.
Geben Sie im Feld Verbindungs-ID
lake-connectionein.Klicken Sie auf Verbindung erstellen.`
Maximieren Sie im Bereich Explorer Ihr Projekt, klicken Sie auf Verbindungen und wählen Sie die Verbindung
us.lake-connectionaus.Kopieren Sie im Bereich Verbindungsinformationen den Wert aus dem Feld Dienstkonto-ID. Sie benötigen diese Informationen, um dem Dienstkonto der Verbindung im Cloud Storage-Bucket, den Sie im nächsten Schritt erstellen, die Berechtigung zu erteilen.
Führen Sie in Cloud Shell den
bq mk-Befehl aus, um die Verbindung zu erstellen:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connectionFühren Sie den
bq show-Befehl aus, um Informationen über die Verbindung abzurufen:bq show --connection us.lake-connectionKopieren Sie aus der
properties-Spalte den Wert desserviceAccountId-Attributs und speichern Sie ihn an einem beliebigen Ort. Sie benötigen diese Informationen, um dem Dienstkonto der Verbindung Berechtigungen zu erteilen.- Cloud Storage-Bucket erstellen
- Erstellen Sie zwei Buckets im Bucket, einen mit dem Namen
mobilenetfür die Modelldateien und einen mit dem Namenflowersfür das Dataset. Zur Seite IAM & Verwaltung.
Klicken Sie auf Zugriff erlauben.
Das Dialogfeld Principals hinzufügen wird geöffnet.
Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.
Wählen Sie im Feld Rolle auswählen die Option Cloud Storage und dann Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
- Laden Sie das Blumen-Dataset auf Ihren lokalen Computer herunter.
- Entpacken Sie die Datei
flower_photos.tgz: - Laden Sie den Ordner
flower_photosin den Ordnerflowersdes zuvor erstellten Buckets hoch. - Löschen Sie nach Abschluss des Uploads die Datei
LICENSE.txtim Ordnerflower_photos. Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE EXTERNAL TABLE mobilenet_inference_test.sample_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://BUCKET_NAME/flowers/*']);
Ersetzen Sie
BUCKET_NAMEdurch den Namen des Buckets, den Sie zuvor erstellt haben.- Laden Sie das MobileNet V3-Modell auf Ihren lokalen Computer herunter. Dadurch erhalten Sie eine
saved_model.pb-Datei und einenvariables-Ordner für das Modell. - Laden Sie die Dateien
saved_model.pbundvariablesin den Ordnermobilenetdes Buckets hoch, den Sie zuvor erstellt haben. Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE MODEL `mobilenet_inference_test.mobilenet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/mobilenet/*');
Ersetzen Sie
BUCKET_NAMEdurch den Namen des Buckets, den Sie zuvor erstellt haben.Rufen Sie die Seite BigQuery auf.
Klicken Sie im linken Bereich auf Explorer:

Maximieren Sie im Bereich Explorer Ihr Projekt, klicken Sie auf Datasets und dann auf das Dataset
mobilenet_inference_test.Rufen Sie den Tab Modelle auf.
Klicken Sie auf das Modell
mobilenet.Klicken Sie im angezeigten Modellbereich auf den Tab Schema.
Sehen Sie sich den Abschnitt Labels an. Dieser gibt die Felder an, die vom Modell ausgegeben werden. In diesem Fall lautet der Feldname
feature_vector.Sehen Sie sich den Abschnitt Features an. Dieser gibt die Felder an, die in das Modell eingegeben werden müssen. Sie verweisen in der
SELECT-Anweisung für die FunktionML.DECODE_IMAGE. In diesem Fall lautet der Feldnameinputs.Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
SELECT * FROM ML.PREDICT( MODEL `mobilenet_inference_test.mobilenet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS inputs FROM mobilenet_inference_test.sample_images) );
Die Antwort sollte in etwa so aussehen:
-------------------------------------------------------------------------------------------------------------- | feature_vector | uri | inputs | —------------------------------------------------------------------------------------------------------------- | 0.850297749042511 | gs://mybucket/flowers/dandelion/3844111216_742ea491a0.jpg | 0.29019609093666077 | —------------------------------------------------------------------------------------------------------------- | -0.27427938580513 | | 0.31372550129890442 | —------------------------- ------------------------ | -0.23189745843410492 | | 0.039215687662363052 | —------------------------- ------------------------ | -0.058292809873819351 | | 0.29985997080802917 | —-------------------------------------------------------------------------------------------------------------- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Reservierung erstellen
Wenn Sie ein importiertes Modell mit einer Objekttabelle verwenden möchten, müssen Sie eine Reservierung erstellen, die die BigQuery Enterprise- oder Enterprise Plus-Version verwendet, und dann eine Reservierungszuweisung erstellen, die den QUERY-Jobtyp verwendet.
Dataset erstellen
Erstellen Sie ein Dataset mit dem Namen mobilenet_inference_test:
SQL
bq
Verbindung herstellen
Erstellen Sie eine Verbindung mit dem Namen lake-connection:
Console
bq
Cloud Storage-Bucket erstellen
Dem Dienstkonto der Verbindung Berechtigungen gewähren
Console
gcloud
Führen Sie in Cloud Shell den folgenden gcloud storage buckets add-iam-policy-binding-Befehl aus:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
Ersetzen Sie MEMBER durch die zuvor kopierte Dienstkonto-ID. Ersetzen Sie BUCKET_NAME durch den Namen des Buckets, den Sie zuvor erstellt haben.
Weitere Informationen finden Sie unter Hauptkonto zu einer Richtlinie auf Bucket-Ebene hinzufügen.
Dataset in Cloud Storage hochladen
Rufen Sie die Dataset-Dateien ab und stellen Sie sie in Cloud Storage bereit:
Objekttabelle erstellen
Erstellen Sie eine Objekttabelle mit dem Namen sample_images anhand des hochgeladenen Blumen-Datasets:
SQL
bq
Führen Sie in Cloud Shell den bq mk-Befehl aus, um die Verbindung zu erstellen:
bq mk --table \ --external_table_definition='gs://BUCKET_NAME/flowers/*@us.lake-connection' \ --object_metadata=SIMPLE \ mobilenet_inference_test.sample_images
Ersetzen Sie BUCKET_NAME durch den Namen des Buckets, den Sie zuvor erstellt haben.
Laden Sie das Modell in Cloud Storage hoch.
Rufen Sie die Modelldateien ab und stellen Sie sie in Cloud Storage bereit:
Modell in BigQuery ML laden
Modell prüfen
Prüfen Sie das hochgeladene Modell, um seine Eingabe- und Ausgabefelder zu ermitteln:
Inferenz ausführen
Führen Sie mit dem Modell mobilenet Inferenz für die Objekttabelle sample_images aus: