Questa pagina mostra come generare previsioni di machine learning (ML) da una il database Spanner. Le previsioni ML funzionano sia con i database GoogleSQL sia con quelli PostgreSQL.
L'integrazione di Spanner Vertex AI ti consente di generare previsioni utilizzando il codice SQL chiamando la funzione ML.PREDICT
per GoogleSQL o la funzione spanner.ML_PREDICT_ROW
per PostgreSQL. Per ulteriori informazioni sull'integrazione di Spanner Vertex AI, consulta la panoramica dell'integrazione di Spanner 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 agli endpoint Vertex AI
Spanner crea l'agente di servizio e concede automaticamente le autorizzazioni necessarie quando esegue la prima istruzione DDL MODEL. Se sia il database Spanner sia l'endpoint Vertex AI si trovano nello stesso progetto, non è richiesta alcuna configurazione aggiuntiva.
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
concedere il ruolo Spanner API Service Agent
all'account
agente di servizio Spanner
service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com
nel tuo
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:
Un modello in esecuzione Model Garden di Vertex AI.
Un modello Vertex AI con un endpoint attivo a cui il tuo agente di servizio Spanner ha l'autorizzazione IAM per accedere.
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 diversi.
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 modelloINPUT_COLUMN_NAME
: il nome della colonna di input. Ad esempio, se utilizzi il modellogemini-pro
, il nome della colonna di input èprompt
.INPUT_COLUMN_TYPE
: il tipo di dati perINPUT_COLUMN_NAME
OUTPUT_COLUMN_NAME
: il nome della colonna di output. Ad esempio: se utilizzi il modellogemini-pro
, il nome della colonna di output ècontent
.OUTPUT_COLUMN_TYPE
: il tipo di dati perOUTPUT_COLUMN_NAME
PROJECT_ID
: l'ID del tuo progetto Google CloudREGION_ID
: l'ID della regione Google Cloud in cui si trova il modello, ad esempious-central1
MODEL_ID
: l'ID del modello ML che vuoi utilizzare, ad esempiogemini-pro
Per ulteriori informazioni sui modelli, consulta Model API reference for Generative AI.
Utilizza la funzione GoogleSQL ML.PREDICT
con il modello selezionato da Model Garden per generare la previsione.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Sostituisci quanto segue:
MODEL_NAME
: il nome che vuoi assegnare al modelloPer 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 valoreSTRUCT
che contiene parametri supportata damodel_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 CloudREGION_ID
: l'ID della regione Google Cloud in cui si trova il modello, ad esempious-central1
MODEL_ID
: l'ID del modello ML che vuoi utilizzare, ad esempiogemini-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 JSONPARAMETERS
: parametri facoltativi per la chiamata di previsione, in formato JSON
Questa query produce una risposta JSON. Per ulteriori informazioni sui per i messaggi di risposta JSON del modello, vedi PredictResponse.
Utilizzare 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 su come eseguire il deployment di un modello in un endpoint in Vertex AI, consulta Eseguire il deployment di un modello in un endpoint.
GoogleSQL
Utilizza la funzione ML.PREDICT
GoogleSQL con il modello in un
endpoint Vertex AI per generare la 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 tratto da
Panoramica di classificazione e 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 CloudLOCATION
: 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 esempiogemini-pro
Per ulteriori informazioni sui modelli, consulta Model API reference for Generative AI.
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 valoreSTRUCT
contenente i parametri supportati damodel_name
.
Questa query produce una relazione contenente tutte le colonne di output del modello e 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 in cui si trova il modelloREGION_ID
: l'ID della regione Google Cloud in cui si trova il modello, ad esempious-central1
ENDPOINT_ID
: l'ID dell'endpoint del modelloINSTANCES
: gli input alla chiamata di previsione, in formato JSONPARAMETERS
: parametri facoltativi per la chiamata di previsione, in formato JSON
Questa query produce una risposta in formato JSON. Per ulteriori informazioni sui messaggi di risposta JSON del modello, consulta PredictResponse.
Esempi di utilizzo delle funzioni ML per generare previsioni
L'esempio seguente utilizza il modello gemini-pro di Model Garden per generare testo in base a un breve prompt fornito come argomento. Questo modello è disponibile come parte Gemini in Spanner.
GoogleSQL
Registra 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
: l'ID progettoLOCATION
: la regione in cui utilizzi 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
L'output 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
L'output previsto è il seguente:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+