Auf dieser Seite wird gezeigt, wie Vorhersagen für maschinelles Lernen (ML) aus einer Spanner-Datenbank generiert werden. ML-Vorhersagen funktionieren sowohl mit GoogleSQL- als auch mit PostgreSQL-Datenbanken.
Durch die Einbindung von Spanner Vertex AI können Sie mithilfe Ihres SQL-Codes Vorhersagen generieren. Dazu rufen Sie die Funktion ML.PREDICT
für GoogleSQL oder die Funktion spanner.ML_PREDICT_ROW
für PostgreSQL auf. Weitere Informationen zur Einbindung von Spanner Vertex AI finden Sie in der Übersicht zur Einbindung von Spanner Vertex AI.
Hinweise
Bevor Sie Vorhersagen aus einer Spanner-Instanz generieren können, müssen Sie die Datenbank vorbereiten und ein Modell auswählen.
Zugriff für die Einbindung von Spanner Vertex AI in Vertex AI-Endpunkte konfigurieren
Spanner erstellt den Dienst-Agent und gewährt automatisch die erforderlichen Berechtigungen, wenn Spanner die erste MODEL-DDL-Anweisung ausführt. Wenn sich die Spanner-Datenbank und der Vertex AI-Endpunkt im selben Projekt befinden, ist keine zusätzliche Einrichtung erforderlich.
Wenn in Ihrem Spanner-Projekt kein Spanner-Dienst-Agent-Konto vorhanden ist, erstellen Sie es mit dem folgenden Befehl:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Führen Sie die unter Einzelne Rolle gewähren beschriebenen Schritte aus, um dem Spanner-Dienst-Agent-Kontoservice-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com
in Ihrem Vertex AI-Projekt die Rolle Spanner API Service Agent
zuzuweisen.
Modell auswählen
Wenn Sie die Funktion ML.PREDICT
(für GoogleSQL) oder spanner.ML_PREDICT_ROW
(für PostgreSQL) verwenden, müssen Sie den Speicherort des ML-Modells angeben. Das ausgewählte Modell kann eines der folgenden sein:
Ein Modell, das in Vertex AI Model Garden ausgeführt wird.
Ein Vertex AI-Modell mit einem aktiven Endpunkt, auf den Ihr Spanner-Dienst-Agent über IAM-Berechtigungen zugreifen kann.
Weitere Informationen zur Einbindung von Spanner Vertex AI finden Sie unter Wie funktioniert die Einbindung von Spanner Vertex AI?.
Vorhersagen generieren
Je nach Typ des ausgewählten Modells unterscheiden sich die Schritte zum Generieren Ihrer Vorhersagen.
Modell in Vertex AI Model Garden verwenden
Zum Generieren einer Vorhersage mit einem Modell aus dem Vertex AI Model Garden wählen Sie ein Modell aus dem Model Garden aus.
GoogleSQL
Bevor Sie ein Modell mit ML.PREDICT()
verwenden können, müssen Sie das Modell mit der CREATE MODEL
-Anweisung registrieren.
CREATE MODEL 'MODEL_NAME'
INPUT (INPUT_COLUMN_NAME INPUT_COLUMN_TYPE)
OUTPUT (OUTPUT_COLUMN_NAME OUTPUT_COLUMN_TYPE)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/publishers/google/models/model_id'
);
Ersetzen Sie Folgendes:
MODEL_NAME
: der Name, den Sie Ihrem Modell geben möchtenINPUT_COLUMN_NAME
: der Name Ihrer Eingabespalte. Wenn Sie beispielsweise das Modellgemini-pro
verwenden, lautet der Name der Eingabespalteprompt
.INPUT_COLUMN_TYPE
: der Datentyp fürINPUT_COLUMN_NAME
OUTPUT_COLUMN_NAME
: der Name Ihrer Ausgabespalte. Wenn Sie beispielsweise das Modellgemini-pro
verwenden, lautet der Name der Ausgabespaltecontent
.OUTPUT_COLUMN_TYPE
: der Datentyp fürOUTPUT_COLUMN_NAME
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsREGION_ID
: die ID der Google Cloud-Region, in der sich das Modell befindet, z. B.us-central1
MODEL_ID
: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-pro
Weitere Informationen zu Modellen finden Sie in der Model API-Referenz für Generative AI.
Verwenden Sie die GoogleSQL-Funktion ML.PREDICT
mit dem Modell, das aus dem Modellgarten ausgewählt wurde, um die Vorhersage zu generieren.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Ersetzen Sie Folgendes:
MODEL_NAME
: der Name, den Sie Ihrem Modell geben möchtenWeitere Informationen zu Modellen finden Sie in der Model API-Referenz für Generative AI.
INPUT_RELATION
: EntwederTABLE table_name
oder eine Unterabfrage der Tabelle oder Unterabfrage, die Daten zum Ausführen der ML-Vorhersage liefert.PARAMETERS
: EinSTRUCT
-Wert, der vonmodel_id
unterstützte Parameter enthält.
Sie können auch SAFE.ML.PREDICT
verwenden, um null
anstelle eines Fehlers in Ihren Vorhersagen zurückzugeben. Dies ist in Fällen hilfreich, in denen große Abfragen ausgeführt werden, bei denen einige fehlgeschlagene Vorhersagen tolerierbar sind.
PostgreSQL
Verwenden Sie die PostgreSQL-Funktion ML_PREDICT_ROW
mit dem Modell, das aus dem Model Garden ausgewählt wurde, um die Vorhersage zu generieren.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsREGION_ID
: die ID der Google Cloud-Region, in der sich das Modell befindet, z. B.us-central1
MODEL_ID
: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-pro
Weitere Informationen zu Modellen finden Sie in der Model API-Referenz für Generative AI.
INSTANCES
: die Eingaben für den Vorhersageaufruf im JSON-FormatPARAMETERS
: optionale Parameter für den Vorhersageaufruf im JSON-Format
Diese Abfrage erzeugt eine JSON-Antwort. Weitere Informationen zu den JSON-Antwortnachrichten des Modells finden Sie unter PredictResponse.
Vertex AI-Modellendpunkt verwenden
Wenn Sie ein trainiertes oder heruntergeladenes Modell mit Einbindung von Spanner Vertex AI verwenden möchten, müssen Sie das Modell in Vertex AI bereitstellen. Weitere Informationen zum Bereitstellen eines Modells auf einem Endpunkt in Vertex AI finden Sie unter Modell auf einem Endpunkt bereitstellen.
GoogleSQL
Verwenden Sie die GoogleSQL-Funktion ML.PREDICT
mit dem Modell an einem Vertex AI-Endpunkt, um die Vorhersage zu generieren. Bevor Sie ein Modell mit ML.PREDICT()
verwenden können, müssen Sie es mit der Anweisung CREATE MODEL
registrieren. Jedes bereitgestellte Modell hat ein eigenes eindeutiges Schema. Hier sehen Sie ein Beispielschema aus der Übersicht zu Klassifizierung und Regression.
CREATE MODEL MyClassificationModel
INPUT (
length FLOAT64,
material STRING(MAX),
tag_array ARRAY<STRING(MAX)>
)
OUTPUT (
scores ARRAY<FLOAT64>,
classes ARRAY<STRING(MAX)>
)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID'
)
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsLOCATION
: die ID der Google Cloud-Region, in der sich das Modell befindet, z. B.us-central1
ENDPOINT_ID
: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-pro
Weitere Informationen zu Modellen finden Sie in der Model API-Referenz für Generative AI.
Verwenden Sie die GoogleSQL-Funktion ML.PREDICT
mit dem Modell, das aus dem Modellgarten ausgewählt wurde, um die Vorhersage zu generieren.
SELECT * FROM ML.PREDICT(
`MODEL_ID`,
`INPUT_RELATION`[, `PARAMETERS`])
Ersetzen Sie Folgendes:
MODEL_ID
: Die ID des ML-Modells, das Sie verwenden möchten.INPUT_RELATION
: die Tabelle oder Unterabfrage, für die Sie die ML-Vorhersage ausführen möchten.PARAMETERS
: EinSTRUCT
-Wert, der vonmodel_name
unterstützte Parameter enthält.
Diese Abfrage erzeugt eine Beziehung, die alle Ausgabespalten des Modells und alle Spalten der Eingabebeziehung enthält.
PostgreSQL
Verwenden Sie die PostgreSQL-Funktion ML.PREDICT
mit dem Modell an einem Vertex AI-Endpunkt, um die Vorhersage zu generieren.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
```
Replace the following:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem sich das Modell befindetREGION_ID
: die ID der Google Cloud-Region, in der sich das Modell befindet, z. B.us-central1
ENDPOINT_ID
: die ID des ModellendpunktsINSTANCES
: die Eingaben für den Vorhersageaufruf im JSON-FormatPARAMETERS
: optionale Parameter für den Vorhersageaufruf im JSON-Format
Diese Abfrage erzeugt eine JSON-Antwort. Weitere Informationen zu den JSON-Antwortnachrichten des Modells finden Sie unter PredictResponse.
Beispiele für die Verwendung von ML-Funktionen zum Generieren von Vorhersagen
Im folgenden Beispiel wird das Modell gemini-pro aus dem Model Garden verwendet, um Text anhand eines kurzen Prompts zu generieren, der als Argument bereitgestellt wird. Dieses Modell ist als Teil von Gemini in Spanner verfügbar.
GoogleSQL
Modell gemini-pro
registrieren
CREATE MODEL GeminiPro
INPUT (prompt STRING(MAX))
OUTPUT (content STRING(MAX))
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/gemini-pro',
default_batch_size = 1
);
Ersetzen Sie Folgendes:
PROJECT
: die Projekt-IDLOCATION
: Region, in der Sie Vertex AI verwenden
Modell ausführen
SELECT content
FROM ML.PREDICT(
MODEL GeminiPro,
(SELECT "Is 7 a prime number?" AS prompt),
STRUCT(256 AS maxOutputTokens, 0.2 AS temperature, 40 as topK, 0.95 AS topP)
);
Erwartete Ausgabe
Das erwartete Ergebnis ist:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+
PostgreSQL
Modell ausführen
select spanner.ml_predict_row(
'{
"endpoint": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-pro",
"default_batch_size": 1
}'::jsonb,
'{
"instances":[{"prompt": "Is 7 a prime number?"}],
"parameters":{"maxOutputTokens":256, "topK": 40, "topP":0.96, "temperature":0.2}
}'
);
Erwartete Ausgabe
Das erwartete Ergebnis ist:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+