Bilder mit einem Gemini-Vision-Modell analysieren
In dieser Anleitung erfahren Sie, wie Sie ein BigQuery ML-Remote-Modell erstellen, das auf dem Vertex AIgemini-1.0-pro-vision
Modell basiert, und dieses Modell dann mit der ML.GENERATE_TEXT
Funktion zum Analysieren einer Reihe von Filmposterbildern verwenden.
In dieser Anleitung werden die folgenden Aufgaben behandelt:
- BigQuery-Objekttabelle über Bilddaten in einem Cloud Storage-Bucket erstellen
- Erstellen eines BigQuery ML-Remote-Modells, das auf das Vertex AI-
gemini-1.0-pro-vision
-Modell ausgerichtet ist (Vorschau). - Mithilfe des Remote-Modells mit der
ML.GENERATE_TEXT
-Funktion die Filme identifizieren, die mit einer Reihe von Filmpostern verknüpft sind.
Die Daten des Filmposters sind im öffentlichen Cloud Storage-Bucket gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters
verfügbar.
Erforderliche Rollen
Zum Erstellen einer Verbindung benötigen Sie die Rolle „BigQuery-Verbindungsadministrator“ (
roles/bigquery.connectionAdmin
).Zum Erteilen von Berechtigungen für das Dienstkonto der Verbindung benötigen Sie die Rolle „Projekt-IAM-Administrator“ (
roles/resourcemanager.projectIamAdmin
).Zum Erstellen von Datasets, Modellen und Tabellen benötigen Sie die Rolle "BigQuery-Datenbearbeiter" (
roles/bigquery.dataEditor
).Zum Ausführen von BigQuery-Jobs benötigen Sie die Rolle „BigQuery-Nutzer“ (
roles/bigquery.user
).
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model that is represented by the BigQuery remote model.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Weitere Informationen zu den Preisen von BigQuery finden Sie unter BigQuery: Preise in der BigQuery-Dokumentation.
Weitere Informationen zu den Preisen für generative AI von Vertex AI finden Sie auf der Seite Vertex AI: Preise.
Hinweise
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.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.
Verbindung herstellen
Erstellen Sie eine Cloud-Ressourcenverbindung und rufen Sie das Dienstkonto der Verbindung ab.
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
Hinzufügen und dann auf Verbindungen zu externen Datenquellen, um eine Verbindung zu erstellen.Wählen Sie in der Liste Verbindungstyp die Option Vertex AI-Remote-Modelle, Remote-Funktionen und BigLake (Cloud Resource) aus.
Geben Sie im Feld Verbindungs-ID
tutorial
ein.Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Kopieren Sie die Dienstkonto-ID aus dem Bereich Verbindungsinformationen zur Verwendung in einem späteren Schritt.
bq
Erstellen Sie in einer Befehlszeilenumgebung eine Verbindung:
bq mk --connection --location=us --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE tutorial
Der Parameter
--project_id
überschreibt das Standardprojekt.Ersetzen Sie
PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.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...
Rufen Sie die Dienstkonto-ID ab und kopieren Sie sie zur Verwendung in einem späteren Schritt:
bq show --connection PROJECT_ID.us.tutorial
Die Ausgabe sieht in etwa so aus:
name properties 1234.us.tutorial {"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 = "tutorial" project = "PROJECT_ID" location = "us" cloud_resource {} }
Ersetzen Sie PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
Dem Dienstkonto der Verbindung Berechtigungen gewähren
So weisen Sie dem Dienstkonto der Verbindung die entsprechenden Rollen für den Zugriff auf die Cloud Storage- und Vertex AI-Dienste zu:
Zur Seite IAM & Verwaltung.
Klicken Sie auf
Zugriff gewähren.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 Vertex AI und dann Vertex AI-Nutzer aus.
Klicken Sie auf Weitere Rolle hinzufügen.
Wählen Sie im Feld Rolle auswählen die Option Cloud Storage und dann Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
Objekttabelle erstellen
Erstellen Sie im öffentlichen Cloud Storage-Bucket eine Objekttabelle über die Filmposterbilder. Mit der Objekttabelle können die Bilder analysiert werden, ohne sie aus Cloud Storage zu verschieben.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus, um die Objekttabelle zu erstellen:
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters` WITH CONNECTION `us.tutorial` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);
Remote-Modell erstellen
Erstellen Sie ein Remote-Modell, das ein Vertex AI-gemini-1.0-pro-vision
-Modell darstellt:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende Abfrage aus, um das Remote-Modell zu erstellen:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-pro-vision` REMOTE WITH CONNECTION `us.tutorial` OPTIONS (ENDPOINT = 'gemini-pro-vision');
Die Abfrage dauert mehrere Sekunden. Anschließend wird das Modell
gemini-pro-vision
imbqml_tutorial
-Dataset des Bereichs Explorer angezeigt. Da die Abfrage eineCREATE MODEL
-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.
Filmposter analysieren
Verwenden Sie das Remote-Modell, um die Filmposter zu analysieren und zu bestimmen, welchen Film jedes Poster darstellt. Schreiben Sie diese Daten dann in eine Tabelle.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende Abfrage aus, um die Posterbilder von Filmen zu analysieren:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results` AS ( SELECT uri, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-pro-vision`, TABLE `bqml_tutorial.movie_posters`, STRUCT( 0.2 AS temperature, 'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer.' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT)));
Führen Sie im Abfrageeditor folgende Anweisung aus, um die Tabellendaten aufzurufen:
SELECT * FROM `bqml_tutorial.movie_posters_results`;
Die Ausgabe sieht in etwa so aus:
+--------------------------------------------+----------------------------------+ | uri | ml_generate_text_llm_result | +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- | ```json | | management/datasets/classic-movie- | { | | posters/little_annie_rooney.jpg | "title": "Little Annie Rooney", | | | "year": 1912 | | | } | | | ``` | +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- | ```json | | management/datasets/classic-movie- | { | | posters/mighty_like_a_mouse.jpg | "title": "Mighty Like a Moose", | | | "year": 1926 | | | } | | | ``` | +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- | ```json | | management/datasets/classic-movie- | { | | posters/brown_of_harvard.jpeg | "title": "Brown of Harvard", | | | "year": 1926 | | | } | | | ``` | +--------------------------------------------+----------------------------------+
Modellausgabe formatieren
Formatieren Sie die vom Modell zurückgegebenen Filmanalysedaten, um den Filmtitel und die Jahresdaten besser lesbar zu machen.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor folgende Abfrage aus, um die Daten zu formatieren:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results_formatted` AS ( SELECT uri, JSON_QUERY(RTRIM(LTRIM(results.ml_generate_text_llm_result, " ```json"), "```"), "$.title") AS title, JSON_QUERY(RTRIM(LTRIM(results.ml_generate_text_llm_result, " ```json"), "```"), "$.year") AS year FROM `bqml_tutorial.movie_posters_results` results );
Führen Sie im Abfrageeditor folgende Anweisung aus, um die Tabellendaten aufzurufen:
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
Die Ausgabe sieht in etwa so aus:
+--------------------------------------------+----------------------------+------+ | uri | title | year | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port" | 1895 | | management/datasets/classic-movie- | | | | posters/barque_sortant_du_port.jpeg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery" | 1903 | | management/datasets/classic-movie- | | | | posters/the_great_train_robbery.jpg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney" | 1912 | | management/datasets/classic-movie- | | | | posters/little_annie_rooney.jpg | | | +--------------------------------------------+----------------------------+------+
Bereinigen
- 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.