Anleitung: Inferenz für eine Objekttabelle mithilfe eines Klassifizierungsmodells ausführen
In dieser Anleitung erfahren Sie, wie Sie eine Objekttabelle anhand der Bilder aus einem öffentlichen Dataset erstellen und dann mithilfe des ResNet 50-Modells eine Inferenz für diese Objekttabelle ausführen.
ResNet 50-Modell
Das ResNet 50-Modell analysiert Bilddateien und gibt einen Batch von Vektoren aus, die die Wahrscheinlichkeit darstellen, dass ein Bild zur entsprechenden Klasse gehört (Logits). Weitere Informationen finden Sie im Abschnitt Nutzung auf der TensorFlow Hub-Seite des Modells.
Die ResNet 50-Modelleingabe verwendet einen Tensor von
DType =
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 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.
Verwenden Sie den Preisrechner.
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.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch nicht mit Google Cloudvertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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 role
(
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 role
(
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.
Reservierung erstellen
Wenn Sie ein
importiertes Modell
mit einer Objekttabelle verwenden möchten, müssen Sie
eine Reservierung
mit der BigQuery
Enterprise- oder Enterprise Plus-Version und dann
eine Reservierungszuweisung
mit dem QUERY Jobtyp erstellen.
Dataset erstellen
Erstellen Sie ein Dataset mit dem Namen resnet_inference_test:
SQL
Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE SCHEMA `PROJECT_ID.resnet_inference_test`;
Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.
bq
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.
Verbindung herstellen
Erstellen Sie eine Verbindung mit dem Namen lake-connection:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie im linken Steuerfeld auf Explorer:

Wenn das linke Steuerfeld nicht angezeigt wird, klicken Sie auf Linkes Steuerfeld maximieren , um es 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ösungskarte 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.
Kopieren Sie im Bereich Verbindungsinformationen den Wert aus dem Feld Dienstkonto-ID und speichern Sie ihn an einem beliebigen Ort. Sie benötigen diese Informationen, um dem Dienstkonto der Verbindung Berechtigungen zu erteilen.
bq
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 einen Cloud Storage-Bucket für die Modelldateien.
Dem Dienstkonto der Verbindung Berechtigungen gewähren
Console
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.
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.
Objekttabelle erstellen
Erstellen Sie eine Objekttabelle namens vision_images, die auf den Bilddateien im öffentlichen gs://cloud-samples-data/vision-Bucket basiert:
SQL
Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE EXTERNAL TABLE resnet_inference_test.vision_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vision/*.jpg'] );
bq
Führen Sie in Cloud Shell den bq mk-Befehl aus, um die Verbindung zu erstellen:
bq mk --table \
--external_table_definition='gs://cloud-samples-data/vision/*.jpg@us.lake-connection' \
--object_metadata=SIMPLE \
resnet_inference_test.vision_images
Laden Sie das Modell in Cloud Storage hoch.
Rufen Sie die Modelldateien ab und stellen Sie sie in Cloud Storage bereit:
- Laden Sie das ResNet 50-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.pbundvariablesauf den zuvor erstellten Bucket hoch.
Modell in BigQuery ML laden
Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
CREATE MODEL `resnet_inference_test.resnet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/*');
Ersetzen Sie
BUCKET_NAMEdurch den Namen des Buckets, den Sie zuvor erstellt haben.
Modell prüfen
Prüfen Sie das hochgeladene Modell, um seine Eingabe- und Ausgabefelder zu ermitteln:
Rufen Sie die Seite BigQuery auf.
Klicken Sie im linken Steuerfeld auf Explorer:

Maximieren Sie im Bereich Explorer Ihr Projekt, klicken Sie auf Datasets und dann klicken Sie auf das
resnet_inference_testDataset.Rufen Sie den Tab Modelle auf.
Klicken Sie auf das Modell
resnet.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
activation_49.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 Feldnameinput_1.
Inferenz ausführen
Führen Sie mit dem Modell resnet Inferenz für die Objekttabelle vision_images aus:
Rufen Sie die Seite BigQuery auf.
Führen Sie im Bereich Editor die folgende SQL-Anweisung aus:
SELECT * FROM ML.PREDICT( MODEL `resnet_inference_test.resnet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS input_1 FROM resnet_inference_test.vision_images) );
Die Antwort sollte in etwa so aussehen:
------------------------------------------------------------------------------------------------------------------------------------- | activation_49 | uri | input_1 | —------------------------------------------------------------------------------------------------------------------------------------ | 1.0254175464297077e-07 | gs://cloud-samples-data/vision/automl_classification/flowers/daisy/21652746_cc379e0eea_m.jpg | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------ | 2.1671139620593749e-06 | | 0.0 | —-------------------------- ----------- | 8.346052027263795e-08 | | 0.0 | —-------------------------- ----------- | 1.159310958342985e-08 | | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------
Bereinigen
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.