ML-Vorhersagen mit SQL generieren

Auf dieser Seite wird gezeigt, wie Sie anhand einer Spanner-Datenbank. ML-Vorhersagen funktionieren sowohl mit GoogleSQL- und PostgreSQL-Datenbanken.

Durch die Einbindung von Spanner Vertex AI können Sie mithilfe Ihrer durch Aufrufen der Methode ML.PREDICT für GoogleSQL oder die spanner.ML_PREDICT_ROW für PostgreSQL. Weitere Informationen zu Einbindung von Spanner Vertex AI finden Sie unter Übersicht über die Einbindung von Spanner Vertex AI.

Hinweise

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 Einbindung von Spanner Vertex AI in Vertex AI-Endpunkte konfigurieren

Spanner erstellt den Dienst-Agent und gewährt die erforderlichen Berechtigungen wenn Spanner die erste MODEL-DDL-Anweisung ausführt. Wenn sowohl die Spanner-Datenbank als auch der Vertex AI-Endpunkt in im selben Projekt erstellen, ist keine zusätzliche Einrichtung erforderlich.

Wenn das Spanner-Dienst-Agent-Konto für Ihr Spanner-Projekt zu erstellen, erstellen Sie es durch Ausführen des folgenden Befehl:

gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`

Führen Sie die Schritte unter Einzelne Rolle zuweisen aus. Weisen Sie dem Nutzer die Rolle Spanner API Service Agent zu Spanner-Dienst-Agent-Konto service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com auf Ihrem Vertex AI-Projekt.

Modell auswählen

Wenn Sie den ML.PREDICT (für GoogleSQL) oder den spanner.ML_PREDICT_ROW (für PostgreSQL) nicht ausgeführt wird, müssen Sie den Standort angeben des ML-Modells. Das ausgewählte Modell kann eines der folgenden sein:

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 werden sich Ihre Vorhersagen unterscheiden.

Modell in Vertex AI Model Garden verwenden

Um eine Vorhersage mit einem Modell aus dem Vertex AI Model Garden zu generieren, ein Modell aus dem Model Garden auswählen.

GoogleSQL

Bevor Sie ein Modell mit ML.PREDICT() verwenden können, müssen Sie es registrieren mit der CREATE MODEL-Anweisung.

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öchten

  • INPUT_COLUMN_NAME: der Name Ihrer Eingabespalte. Beispiel: Bei Verwendung des Modells gemini-pro lautet der Name der Eingabespalte prompt.

  • INPUT_COLUMN_TYPE: der Datentyp für INPUT_COLUMN_NAME

  • OUTPUT_COLUMN_NAME: der Name Ihrer Ausgabespalte. Beispiel: Bei Verwendung des Modells gemini-pro lautet der Name der Ausgabespalte content.

  • OUTPUT_COLUMN_TYPE: der Datentyp für OUTPUT_COLUMN_NAME

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts

  • REGION_ID: die ID der Google Cloud-Region, in der sich das Modell befindet sich 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 unter Model API-Referenz für Generative AI

Verwenden Sie den ML.PREDICT. GoogleSQL-Funktion mit dem ausgewählten Modell aus dem Model Garden, 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öchten

    Weitere Informationen zu Modellen finden Sie unter Model API-Referenz für Generative AI

  • INPUT_RELATION: Entweder TABLE table_name oder eine Unterabfrage der Tabelle oder Unterabfrage, die Daten liefert für die ML-Vorhersage ausgeführt werden soll.

  • PARAMETERS: Ein STRUCT-Wert, der Parameter enthält. unterstützt von model_id.

Sie können auch SAFE.ML.PREDICT verwenden, um null anstelle eines Fehlers in für Ihre Vorhersagen. Dies ist hilfreich in Fällen, in denen große Abfragen ausgeführt werden bei denen einige fehlerhafte Vorhersagen tolerierbar sind.

PostgreSQL

Die PostgreSQL-Funktion ML_PREDICT_ROW mit dem ausgewählten Modell verwenden aus dem Model Garden, 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 ist die ID Ihres Google Cloud-Projekts

  • REGION_ID: die ID der Google Cloud-Region, in der sich das Modell befindet sich 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 unter Model API-Referenz für Generative AI

  • INSTANCES: die Eingaben für den Vorhersageaufruf im JSON-Format

  • PARAMETERS: optionale Parameter für den Vorhersageaufruf im JSON-Format

Diese Abfrage erzeugt eine JSON-Antwort. Weitere Informationen zur JSON-Antwortnachrichten des Modells erhalten 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 bereitstellen zu Vertex AI. Weitere Informationen dazu, wie Sie wie Sie ein Modell auf einem Endpunkt in Vertex AI bereitstellen, siehe Modell auf einem Endpunkt bereitstellen

GoogleSQL

Verwenden Sie die GoogleSQL-Funktion ML.PREDICT mit dem Modell in einem Vertex AI-Endpunkt zum Generieren Ihrer Vorhersage. Vor der Verwendung eines mit ML.PREDICT(), müssen Sie das Modell mit Das CREATE MODEL . Jedes bereitgestellte Modell hat seine eigene eindeutige Schema. Hier sehen Sie ein Beispielschema aus Klassifizierung und Regression – Übersicht

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-Projekts

  • LOCATION: die ID der Google Cloud-Region, in der sich das Modell befindet sich 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 unter Model API-Referenz für Generative AI

Verwenden Sie den ML.PREDICT. GoogleSQL-Funktion mit dem ausgewählten Modell aus dem Model Garden, 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 gewünschte Tabelle oder Unterabfrage für die ML-Vorhersage ausgeführt werden soll.

  • PARAMETERS: Ein STRUCT-Wert, der Parameter enthält. unterstützt von model_name.

Diese Abfrage erzeugt eine Beziehung, die alle Ausgabespalten des Modells und Spalten der Eingabebeziehung.

PostgreSQL

Die PostgreSQL-Funktion ML.PREDICT mit dem Modell in einem Vertex AI-Endpunkt zum Generieren Ihrer Vorhersage.

  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, das das Modell ist in

  • REGION_ID: die ID der Google Cloud-Region, in der das Modell verwendet wird sich befindet, z. B. us-central1

  • ENDPOINT_ID: die ID des Modellendpunkts

  • INSTANCES: Die Eingaben für den Vorhersageaufruf im JSON-Format

  • PARAMETERS: optionale Parameter für den Vorhersageaufruf im JSON-Format

Diese Abfrage erzeugt eine JSON-Antwort. Weitere Informationen zur JSON-Antwortnachrichten des Modells erhalten Sie unter PredictResponse.

Beispiele für die Verwendung von ML-Funktionen zum Generieren von Vorhersagen

Im folgenden Beispiel wird die Methode gemini-pro-Modell aus Model Garden, um anhand eines kurzen Prompts Text zu generieren. das als Argument angegeben wird. Dieses Modell ist als Teil von Gemini in Spanner.

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-ID
  • LOCATION: 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"              |
+--------------------+