Auf dieser Seite wird beschrieben, wie Sie ML-Vorhersagen (Machine Learning) aus einer Spanner-Datenbank generieren. ML-Vorhersagen funktionieren sowohl mit Datenbanken im GoogleSQL-Dialekt als auch mit Datenbanken im PostgreSQL-Dialekt.
Mit der Spanner Agent Platform-Integration können Sie Vorhersagen mit Ihrem
SQL-Code generieren, indem Sie die
ML.PREDICT
Funktion für GoogleSQL oder die
spanner.ML_PREDICT_ROW
Funktion für PostgreSQL aufrufen. Weitere Informationen zur
Spanner Agent Platform-Integration finden Sie in der Übersicht zur Spanner Agent Platform-Integration.
Hinweis
Bevor Sie Vorhersagen aus einer Spanner-Instanz generieren können, müssen Sie Ihre Datenbank vorbereiten und ein Modell auswählen.
Zugriff für die Spanner Agent Platform-Integration auf Vertex AI-Endpunkte konfigurieren
Spanner erstellt den Dienst-Agent und gewährt die erforderlichen Berechtigungen automatisch, wenn Spanner die erste MODEL DDL-Anweisung ausführt. Wenn sich sowohl die Spanner-Datenbank als auch der Vertex AI-Endpunkt im selben Projekt befinden, ist keine zusätzliche Einrichtung erforderlich.
Wenn das Spanner-Dienst-Agent-Konto für Ihr Spanner-Projekt nicht vorhanden ist, erstellen Sie es mit dem folgenden Befehl:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Folgen Sie der Anleitung unter Einzelne Rolle gewähren, um dem Spanner-Dienst-Agent-Konto service-PROJECT_NUMBER@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 dem Vertex AI Model Garden ausgeführt wird.
Ein Vertex AI-Modell mit einem aktiven Endpunkt, auf den Ihr Spanner-Dienst-Agent die IAM-Berechtigung hat.
Weitere Informationen zur Spanner Agent Platform-Integration finden Sie unter Wie funktioniert die Spanner Agent Platform-Integration?.
Vorhersagen generieren
Je nach Art des ausgewählten Modells unterscheiden sich die Schritte zum Generieren von Vorhersagen.
Modell in Vertex AI Model Garden verwenden
Wenn Sie eine Vorhersage mit einem Modell aus dem Vertex AI Model Garden generieren möchten, wählen Sie ein Modell aus Model Garden aus.
GoogleSQL
Bevor Sie ein Modell mit ML.PREDICT() verwenden können, müssen Sie es mit der Anweisung CREATE MODEL 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 der Eingabespalte. Wenn Sie beispielsweise das Modellgemini-proverwenden, ist der Name der Eingabespalteprompt.INPUT_COLUMN_TYPE: der Datentyp fürINPUT_COLUMN_NAMEOUTPUT_COLUMN_NAME: der Name der Ausgabespalte. Wenn Sie beispielsweise das Modellgemini-proverwenden, ist der Name der Ausgabespaltecontent.OUTPUT_COLUMN_TYPE: der Datentyp fürOUTPUT_COLUMN_NAMEPROJECT_ID: die ID Ihres Google Cloud ProjektsREGION_ID: die ID der Google Cloud Region, in der sich das Modell befindet, z. B.us-central1MODEL_ID: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-proWeitere Informationen zu Modellen finden Sie in der Modell API-Referenz für generative KI.
Verwenden Sie die ML.PREDICT
GoogleSQL-Funktion mit dem in Model Garden ausgewählten Modell, um Ihre 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 Modell API-Referenz für generative KI.
INPUT_RELATION: entwederTABLE table_nameoder eine Unterabfrage, die die Tabelle oder Unterabfrage liefert, die Daten für die ML-Vorhersage bereitstellt.PARAMETERS: einSTRUCT-Wert, der Parameter enthält, die vonmodel_idunterstützt werden.
Sie können auch SAFE.ML.PREDICT verwenden, um in Ihren Vorhersagen null anstelle eines Fehlers zurückzugeben. Das ist hilfreich, wenn Sie große Abfragen ausführen, bei denen einige fehlgeschlagene Vorhersagen tolerierbar sind.
PostgreSQL
Verwenden Sie die PostgreSQL-Funktion ML_PREDICT_ROW mit dem in Model Garden ausgewählten Modell, um Ihre 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: die ID Ihres Google Cloud ProjektsREGION_ID: die ID der Google Cloud Region, in der sich das Modell befindet, z. B.us-central1MODEL_ID: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-proWeitere Informationen zu Modellen finden Sie in der Modell API-Referenz für generative KI.
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. Informationen zu den JSON-Antwortnachrichten des Modells finden Sie unter PredictResponse.
Vertex AI-Modellendpunkt verwenden
Wenn Sie ein trainiertes oder heruntergeladenes Modell mit der Spanner Agent Platform-Integration verwenden möchten, müssen Sie es 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 in einem Vertex AI-Endpunkt, um Ihre Vorhersage zu generieren. Bevor Sie ein
Modell mit ML.PREDICT() verwenden können, müssen Sie es mit
der CREATE MODEL
Anweisung registrieren. Jedes bereitgestellte Modell hat ein eigenes Schema. Das folgende Beispielschema stammt 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: die ID Ihres Google Cloud ProjektsLOCATION: die ID der Google Cloud Region, in der sich das Modell befindet, z. B.us-central1ENDPOINT_ID: die ID des ML-Modells, das Sie verwenden möchten, z. B.gemini-proWeitere Informationen zu Modellen finden Sie in der Modell API-Referenz für generative KI.
Verwenden Sie die ML.PREDICT
GoogleSQL-Funktion mit dem in Model Garden ausgewählten Modell, um Ihre 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 Parameter enthält, die vonmodel_nameunterstützt werden.
Diese Abfrage erzeugt eine Beziehung mit allen Ausgabespalten des Modells und allen Spalten der Eingabebeziehung.
PostgreSQL
Verwenden Sie die PostgreSQL-Funktion ML.PREDICT mit dem Modell in einem Vertex AI-Endpunkt, um Ihre 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 Region, in der sich das Modell befindet, z. B.us-central1Google CloudENDPOINT_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. 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 gemini-pro Modell, aus Model Garden verwendet, um Text basierend auf einem kurzen Prompt 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: die 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
Die erwartete Ausgabe ist wie folgt:
+--------------------+
| 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
Die erwartete Ausgabe ist wie folgt:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+