En esta página, se muestra cómo generar predicciones de aprendizaje automático (AA) desde una base de datos de Spanner. Las predicciones de AA funcionan con bases de datos con dialecto de GoogleSQL y con dialecto de PostgreSQL.
La integración de Vertex AI con Spanner te permite generar predicciones con tu
código SQL llamando a la
ML.PREDICT
función para GoogleSQL o a la
spanner.ML_PREDICT_ROW
función para PostgreSQL. Para obtener más información sobre
la integración de Vertex AI con Spanner, consulta Descripción general de la integración de Vertex AI con Spanner.
Antes de comenzar
Antes de generar predicciones desde una instancia de Spanner, debes preparar tu base de datos y seleccionar un modelo.
Configura el acceso para la integración de Vertex AI con Spanner a los extremos de Vertex AI
Spanner crea el agente de servicio y otorga los permisos necesarios automáticamente cuando Spanner ejecuta la primera instrucción DDL de MODEL. Si la base de datos de Spanner y el extremo de Vertex AI están en el mismo proyecto, no se requiere configuración adicional.
Si la cuenta del agente de servicio de Spanner no existe para tu proyecto de Spanner, créala ejecutando el siguiente comando:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Sigue los pasos que se describen en Otorgar un solo rol para
otorgar el rol Spanner API Service Agent a la
cuenta del agente de servicio de Spanner
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com en tu
proyecto de Vertex AI.
Seleccionar 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 el Model Garden de Vertex AI.
Un modelo de Vertex AI con un extremo activo al que tu agente de servicio de Spanner tiene permiso de acceso de IAM
Para obtener más información sobre la integración de Vertex AI con Spanner, consulta ¿Cómo funciona la integración de Vertex AI con Spanner?.
Genere predicciones
Según el tipo de modelo seleccionado, los pasos para generar tus predicciones serán diferentes.
Usa un modelo en Model Garden de Vertex AI
Para generar una predicción con un modelo de Model Garden de Vertex AI, selecciona un modelo de Model Garden.
GoogleSQL
Antes de usar un modelo con ML.PREDICT(), debes 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'
);
Reemplaza lo siguiente:
MODEL_NAME: el nombre que deseas darle a tu modeloINPUT_COLUMN_NAME: el nombre de tu 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 paraINPUT_COLUMN_NAMEOUTPUT_COLUMN_NAME: el nombre de tu 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 paraOUTPUT_COLUMN_NAMEPROJECT_ID: es el ID del 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 AA que deseas usar (por ejemplo,gemini-pro)Para obtener más información sobre los modelos, consulta Referencia de la API de modelos para la IA generativa.
Usa la ML.PREDICT
función de GoogleSQL con el modelo seleccionado
de Model Garden para generar tu predicción.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Reemplaza lo siguiente:
MODEL_NAME: el nombre que deseas darle a tu modeloPara obtener más información sobre los modelos, consulta Referencia de la API de modelos para la IA generativa.
INPUT_RELATION:TABLE table_nameo una subconsulta de la tabla o subconsulta que proporciona datos para ejecutar la predicción de AAPARAMETERS: un valorSTRUCTque contiene parámetros compatibles conmodel_id
También puedes usar SAFE.ML.PREDICT para mostrar null en lugar de un error en tus predicciones. Esto resulta útil en los casos en los que se ejecutan consultas grandes en las que 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);
Reemplaza lo siguiente:
PROJECT_ID: es el ID del 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 AA que deseas usar (por ejemplo,gemini-pro)Para obtener más información sobre los modelos, consulta Referencia de la API de modelos para la IA generativa.
INSTANCES: las entradas de la llamada de predicción, en formato JSONPARAMETERS: parámetros opcionales para la llamada de predicción, en formato JSON
Esta consulta produce una respuesta JSON. Para obtener información acerca de los mensajes de respuesta JSON del modelo, consulta PredictResponse.
Usa un extremo del modelo de Vertex AI
Para usar un modelo entrenado o descargado con la integración de Vertex AI con Spanner, debes implementar el modelo en Vertex AI. Para obtener más información sobre cómo implementar un modelo en un extremo en Vertex AI, consulta Implementa un modelo en un extremo.
GoogleSQL
Usa la función ML.PREDICT de GoogleSQL con el modelo en un extremo de Vertex AI para generar tu predicción. Antes de usar un
modelo con ML.PREDICT(), debes registrarlo con
la CREATE MODEL
instrucción. Cada modelo implementado tiene su propio esquema único. A continuación, se muestra un esquema de ejemplo de
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'
)
Reemplaza lo siguiente:
PROJECT_ID: es el ID del 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 AA que deseas usar (por ejemplo,gemini-pro)Para obtener más información sobre los modelos, consulta Referencia de la API de modelos para la IA generativa.
Usa la ML.PREDICT
función de GoogleSQL con el modelo seleccionado
de Model Garden para generar tu predicción.
SELECT * FROM ML.PREDICT(
`MODEL_ID`,
`INPUT_RELATION`[, `PARAMETERS`])
Reemplaza lo siguiente:
MODEL_ID: el ID del modelo de AA que deseas usarINPUT_RELATION: la tabla o subconsulta en la que deseas ejecutar la predicción de AAPARAMETERS: un valorSTRUCTque contiene parámetros compatibles conmodel_name
Esta consulta produce 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 extremo 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 Google Cloud proyecto en el que se encuentra el modeloREGION_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 extremo del modeloINSTANCES: las entradas de la llamada de predicción, en formato JSONPARAMETERS: parámetros opcionales para la llamada de predicción, en formato JSON
Esta consulta produce una respuesta JSON. Para obtener información acerca de 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 gemini-pro modelo, de Model Garden, para generar texto basado en una instrucción breve que se proporciona como argumento. Este modelo está disponible como parte de Gemini en Spanner.
GoogleSQL
Registra 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
);
Reemplaza lo siguiente:
PROJECT: el ID del proyectoLOCATION: la región en la que usas Vertex AI
Ejecuta 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
Ejecuta 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" |
+--------------------+