En esta página se muestra cómo generar predicciones de aprendizaje automático (ML) a partir de una base de datos de Spanner. Las predicciones de aprendizaje automático funcionan con bases de datos de dialecto de GoogleSQL y de PostgreSQL.
La integración de Spanner con Vertex AI te permite generar predicciones con tu código SQL llamando a la función ML.PREDICT
para GoogleSQL o a la función spanner.ML_PREDICT_ROW
para PostgreSQL. Para obtener más información sobre la integración de Spanner con Vertex AI, consulta la descripción general de la integración de Spanner con Vertex AI.
Antes de empezar
Para generar predicciones a partir de una instancia de Spanner, debes preparar tu base de datos y seleccionar un modelo.
Configurar el acceso a los endpoints de Vertex AI para la integración de Spanner con Vertex AI
Spanner crea el agente de servicio y concede los permisos necesarios automáticamente cuando ejecuta la primera instrucción DDL de MODEL. Si tanto la base de datos de Spanner como el endpoint de Vertex AI están en el mismo proyecto, no es necesario realizar ninguna configuración adicional.
Si la cuenta de agente de servicio de Spanner no existe en tu proyecto de Spanner, créala ejecutando el siguiente comando:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Sigue los pasos descritos en la sección Asignar un solo rol para asignar el rol Spanner API Service Agent
a la cuenta del agente de servicio de Spannerservice-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com
en tu proyecto de Vertex AI.
Selecciona un modelo
Cuando usas la función ML.PREDICT
(para GoogleSQL) o la función spanner.ML_PREDICT_ROW
(para PostgreSQL), debes especificar la ubicación del modelo de AA. El modelo seleccionado puede ser uno de los siguientes:
Un modelo que se ejecuta en Model Garden de Vertex AI.
Un modelo de Vertex AI con un endpoint activo al que tu agente de servicio de Spanner tiene permiso de IAM para acceder.
Para obtener más información sobre la integración de Spanner con Vertex AI, consulta ¿Cómo funciona la integración de Spanner con Vertex AI?
Generar predicciones
Los pasos para generar las predicciones variarán en función del tipo de modelo que hayas seleccionado.
Usar un modelo de Vertex AI Model Garden
Para generar una predicción con un modelo de Vertex AI Model Garden, selecciona un modelo de Model Garden.
GoogleSQL
Antes de usar un modelo con ML.PREDICT()
, debe registrarlo con la instrucción 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'
);
Haz los cambios siguientes:
MODEL_NAME
: el nombre que quieras dar a tu modeloINPUT_COLUMN_NAME
: el nombre de la columna de entrada. Por ejemplo, si usas el modelogemini-pro
, el nombre de la columna de entrada esprompt
.INPUT_COLUMN_TYPE
: el tipo de datos deINPUT_COLUMN_NAME
OUTPUT_COLUMN_NAME
: el nombre de la columna de salida. Por ejemplo, si usas el modelogemini-pro
, el nombre de la columna de salida escontent
.OUTPUT_COLUMN_TYPE
: el tipo de datos deOUTPUT_COLUMN_NAME
PROJECT_ID
: el ID de tu Google Cloud proyectoREGION_ID
: el ID de la Google Cloud región en la que se encuentra el modelo (por ejemplo,us-central1
MODEL_ID
: el ID del modelo de aprendizaje automático que quieras usar. Por ejemplo,gemini-pro
.Para obtener más información sobre los modelos, consulta la referencia de la API de modelos de IA generativa.
Usa la función ML.PREDICT
de GoogleSQL con el modelo seleccionado
de Model Garden para generar tu predicción.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Haz los cambios siguientes:
MODEL_NAME
: el nombre que quieras dar a tu modeloPara obtener más información sobre los modelos, consulta la referencia de la API de modelos de IA generativa.
INPUT_RELATION
:TABLE table_name
o una subconsulta de la tabla o subconsulta que proporciona datos para ejecutar la predicción de aprendizaje automático.PARAMETERS
: valorSTRUCT
que contiene parámetros admitidos pormodel_id
.
También puedes usar SAFE.ML.PREDICT
para devolver null
en lugar de un error en tus predicciones. Esto resulta útil en los casos en los que se ejecutan consultas grandes y se pueden tolerar algunas predicciones fallidas.
PostgreSQL
Usa la función ML_PREDICT_ROW
de PostgreSQL con el modelo seleccionado de Model Garden para generar tu predicción.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu Google Cloud proyectoREGION_ID
: el ID de la Google Cloud región en la que se encuentra el modelo (por ejemplo,us-central1
MODEL_ID
: el ID del modelo de aprendizaje automático que quieras usar. Por ejemplo,gemini-pro
.Para obtener más información sobre los modelos, consulta la referencia de la API de modelos de IA generativa.
INSTANCES
: las entradas de la llamada de predicción en formato JSONPARAMETERS
: parámetros opcionales de la llamada de predicción en formato JSON
Esta consulta genera una respuesta JSON. Para obtener más información sobre los mensajes de respuesta JSON del modelo, consulta PredictResponse.
Usar un endpoint de modelo de Vertex AI
Para usar un modelo entrenado o descargado con la integración de Spanner Vertex AI, debes desplegar el modelo en Vertex AI. Para obtener más información sobre cómo desplegar un modelo en un endpoint de Vertex AI, consulta Desplegar un modelo en un endpoint.
GoogleSQL
Usa la función ML.PREDICT
de GoogleSQL con el modelo en un endpoint de Vertex AI para generar tu predicción. Antes de usar un modelo con ML.PREDICT()
, debes registrarlo con la instrucción CREATE MODEL
. Cada modelo implementado tiene su propio esquema único. A continuación, se muestra un ejemplo de esquema de la descripción general de la clasificación y la regresión.
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'
)
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu Google Cloud proyectoLOCATION
: el ID de la Google Cloud región en la que se encuentra el modelo (por ejemplo,us-central1
ENDPOINT_ID
: el ID del modelo de aprendizaje automático que quieras usar. Por ejemplo,gemini-pro
.Para obtener más información sobre los modelos, consulta la referencia de la API de modelos de IA generativa.
Usa la función ML.PREDICT
de GoogleSQL con el modelo seleccionado
de Model Garden para generar tu predicción.
SELECT * FROM ML.PREDICT(
`MODEL_ID`,
`INPUT_RELATION`[, `PARAMETERS`])
Haz los cambios siguientes:
MODEL_ID
: el ID del modelo de aprendizaje automático que quieras usar.INPUT_RELATION
: la tabla o subconsulta en la que quieres ejecutar la predicción de AA.PARAMETERS
: valorSTRUCT
que contiene parámetros admitidos pormodel_name
.
Esta consulta genera una relación que contiene todas las columnas de salida del modelo y todas las columnas de la relación de entrada.
PostgreSQL
Usa la función ML.PREDICT
de PostgreSQL con el modelo en un endpoint de Vertex AI para generar tu predicción.
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
: el ID del proyecto en el que se encuentra el modelo Google CloudREGION_ID
: el ID de la Google Cloud región en la que se encuentra el modelo (por ejemplo,us-central1
)ENDPOINT_ID
: el ID del endpoint del modeloINSTANCES
: las entradas de la llamada de predicción, en formato JSONPARAMETERS
: parámetros opcionales de la llamada de predicción en formato JSON
Esta consulta genera una respuesta JSON. Para obtener más información sobre los mensajes de respuesta JSON del modelo, consulta PredictResponse.
Ejemplos de uso de funciones de AA para generar predicciones
En el siguiente ejemplo se usa el modelo gemini-pro de Model Garden para generar texto a partir de una breve petición que se proporciona como argumento. Este modelo está disponible en Gemini en Spanner.
GoogleSQL
Registrar el modelo 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
);
Haz los cambios siguientes:
PROJECT
: el ID del proyectoLOCATION
: la región en la que usas Vertex AI
Ejecutar el modelo
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)
);
Resultado esperado
El resultado esperado es el siguiente:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+
PostgreSQL
Ejecutar el modelo
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}
}'
);
Resultado esperado
El resultado esperado es el siguiente:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+