Generare previsioni ML utilizzando SQL

Questa pagina mostra come generare previsioni di machine learning (ML) da una il database Spanner. Le previsioni ML funzionano sia con e i database GoogleSQL e PostgreSQL.

L'integrazione di Spanner Vertex AI ti offre la possibilità di generare previsioni utilizzando di codice SQL chiamando il metodo ML.PREDICT per GoogleSQL o la funzione spanner.ML_PREDICT_ROW per PostgreSQL. Per ulteriori informazioni Integrazione di Spanner Vertex AI, consulta Panoramica dell'integrazione di Spanner con Vertex AI.

Prima di iniziare

Prima di poter generare previsioni da un'istanza Spanner, devi preparare il database e selezionare un modello.

Configura l'accesso per l'integrazione di Spanner Vertex AI con gli endpoint Vertex AI

Spanner crea l'agente di servizio e concede le autorizzazioni necessarie automaticamente quando Spanner esegue la prima istruzione DDL MODEL. Se sia il database Spanner sia l'endpoint Vertex AI si trovino lo stesso progetto, non sono necessarie ulteriori configurazioni.

Se l'account dell'agente di servizio Spanner non esiste per il tuo progetto Spanner, crealo eseguendo seguente comando:

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

Segui i passaggi descritti in Concedere un singolo ruolo per concedi il ruolo Spanner API Service Agent Account agente di servizio Spanner service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com su progetto Vertex AI.

Seleziona un modello

Quando utilizzi ML.PREDICT (per GoogleSQL) o spanner.ML_PREDICT_ROW (per PostgreSQL), devi specificare la località del modello ML. Il modello selezionato può essere uno dei seguenti:

Per saperne di più sull'integrazione di Spanner Vertex AI, consulta Come funziona l'integrazione di Spanner Vertex AI?.

elabora le previsioni

A seconda del tipo di modello selezionato, i passaggi per generare le tue previsioni saranno diverse.

Utilizzare un modello in Model Garden di Vertex AI

Per generare una previsione utilizzando un modello da Vertex AI Model Garden, seleziona un modello da Model Garden.

GoogleSQL

Prima di utilizzare un modello con ML.PREDICT(), devi registrarlo utilizzando l'istruzione CREATE MODEL.

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'
);

Sostituisci quanto segue:

  • MODEL_NAME: il nome che vuoi assegnare al modello

  • INPUT_COLUMN_NAME: il nome della colonna di input. Ad esempio: se utilizzi il modello gemini-pro, il nome della colonna di input è prompt.

  • INPUT_COLUMN_TYPE: il tipo di dati per INPUT_COLUMN_NAME

  • OUTPUT_COLUMN_NAME: il nome della colonna di output. Ad esempio: se utilizzi il modello gemini-pro, il nome della colonna di output è content.

  • OUTPUT_COLUMN_TYPE: il tipo di dati per OUTPUT_COLUMN_NAME

  • PROJECT_ID: l'ID del tuo progetto Google Cloud

  • REGION_ID: l'ID della regione Google Cloud in cui si trova il modello si trova in, ad esempio, us-central1

  • MODEL_ID: l'ID del modello ML che vuoi utilizzare, ad esempio gemini-pro

    Per ulteriori informazioni sui modelli, consulta Riferimento API del modello per l'AI generativa.

Utilizza la ML.PREDICT Funzione GoogleSQL con il modello selezionato da Model Garden per generare la tua previsione.

SELECT * FROM ML.PREDICT(
  MODEL `MODEL_NAME`,
  `INPUT_RELATION`[, `PARAMETERS`])

Sostituisci quanto segue:

  • MODEL_NAME: il nome che vuoi assegnare al modello

    Per ulteriori informazioni sui modelli, consulta Riferimento API del modello per l'AI generativa.

  • INPUT_RELATION: TABLE table_name o una sottoquery della tabella o una sottoquery che fornisce dati su cui eseguire la previsione ML.

  • PARAMETERS: un valore STRUCT che contiene parametri supportata da model_id.

Puoi anche utilizzare SAFE.ML.PREDICT per restituire null anziché un errore in le tue previsioni. Ciò è utile nei casi in cui si eseguono query di grandi dimensioni in cui alcune previsioni non riuscite sono tollerabili.

PostgreSQL

Utilizza la funzione PostgreSQL ML_PREDICT_ROW con il modello selezionato da Model Garden per generare la tua previsione.

SELECT spanner.ml_predict_row(
  'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
  '{
    "instances": [ INSTANCES ],
    "parameters": { PARAMETERS }
   }'::jsonb);

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud

  • REGION_ID: l'ID della regione Google Cloud in cui si trova il modello si trova in, ad esempio, us-central1

  • MODEL_ID: l'ID del modello ML che vuoi utilizzare, ad esempio gemini-pro

    Per ulteriori informazioni sui modelli, consulta Riferimento API del modello per l'AI generativa.

  • INSTANCES: gli input per la chiamata di previsione, in formato JSON

  • PARAMETERS: parametri facoltativi per la chiamata di previsione, in formato JSON

Questa query produce una risposta in formato JSON. Per ulteriori informazioni sui per i messaggi di risposta JSON del modello, vedi PredictResponse.

Utilizza un endpoint del modello Vertex AI

Per utilizzare un modello addestrato o scaricato con l'integrazione di Spanner Vertex AI, devi eseguire il deployment del modello a Vertex AI. Per ulteriori informazioni per eseguire il deployment di un modello su un endpoint in Vertex AI, consulta Eseguire il deployment di un modello in un endpoint.

GoogleSQL

Utilizza la funzione GoogleSQL ML.PREDICT con il modello in una l'endpoint Vertex AI per generare la tua previsione. Prima di utilizzare un modello con ML.PREDICT(), devi registrare il modello utilizzando il CREATE MODEL l'Informativa. Ogni modello di cui è stato eseguito il deployment ha il suo . Di seguito è riportato uno schema di esempio Panoramica della classificazione e della regressione

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'
)

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud

  • LOCATION: l'ID della regione Google Cloud in cui si trova il modello si trova in, ad esempio, us-central1

  • ENDPOINT_ID: l'ID del modello ML che vuoi utilizzare, ad esempio gemini-pro

    Per ulteriori informazioni sui modelli, consulta Riferimento API del modello per l'AI generativa.

Utilizza la ML.PREDICT Funzione GoogleSQL con il modello selezionato da Model Garden per generare la tua previsione.

SELECT * FROM ML.PREDICT(
  `MODEL_ID`,
  `INPUT_RELATION`[, `PARAMETERS`])

Sostituisci quanto segue:

  • MODEL_ID: l'ID del modello ML che vuoi utilizzare.

  • INPUT_RELATION: la tabella o la sottoquery che vuoi su cui eseguire la previsione ML.

  • PARAMETERS: un valore STRUCT che contiene parametri supportata da model_name.

Questa query produce una relazione contenente tutte le colonne di output del modello a tutte le colonne della relazione di input.

PostgreSQL

Utilizza la funzione PostgreSQL ML.PREDICT con il modello in una l'endpoint Vertex AI per generare la tua previsione.

  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: l'ID del progetto Google Cloud a cui si riferisce il modello che si trova in

  • REGION_ID: l'ID della regione Google Cloud in cui è il modello si trova in, ad esempio, us-central1

  • ENDPOINT_ID: l'ID dell'endpoint del modello

  • INSTANCES: gli input per la chiamata di previsione, in formato JSON

  • PARAMETERS: parametri facoltativi per la chiamata di previsione, in formato JSON

Questa query produce una risposta in formato JSON. Per ulteriori informazioni sui per i messaggi di risposta JSON del modello, vedi PredictResponse.

Esempi di utilizzo delle funzioni ML per generare previsioni

L'esempio seguente utilizza il metodo gemini-pro, da Model Garden, per generare testo in base a un breve prompt fornito come argomento. Questo modello è disponibile come parte Gemini in Spanner.

GoogleSQL

Registrare il modello gemini-pro

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
);

Sostituisci quanto segue:

  • PROJECT: ID progetto
  • LOCATION: la regione in cui stai utilizzando Vertex AI

Esegui il modello

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)
);

Output previsto

Il risultato previsto è il seguente:

+--------------------+
| content            |
+--------------------+
| "Yes"              |
+--------------------+

PostgreSQL

Esegui il modello

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}
    }'
);

Output previsto

Il risultato previsto è il seguente:

+--------------------+
| content            |
+--------------------+
| "Yes"              |
+--------------------+