En esta página, se muestra cómo generar predicciones de aprendizaje automático (AA) a partir de una base de datos de Spanner. Las predicciones de IA funcionan con las bases de datos de Google SQL y PostgreSQL.
La integración de Vertex AI en Spanner te brinda la habilidad de generar predicciones con tu
código SQL llamando al
ML.PREDICT
para GoogleSQL o la
spanner.ML_PREDICT_ROW
para PostgreSQL. Para obtener más información
Integración de Vertex AI en Spanner, consulta Descripción general de la integración de Vertex AI en Spanner.
Antes de comenzar
Antes de que puedas generar predicciones a partir de una instancia de Spanner, debes preparar tu base de datos y seleccionar un modelo.
Configura el acceso para la integración de Vertex AI de Spanner a los extremos de Vertex AI
Spanner crea el agente de servicio y otorga los permisos necesarios de forma automática cuando ejecuta la primera sentencia 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 ninguna configuración adicional.
Si la cuenta del agente de servicio de Spanner no existe para tu Spanner, créalo ejecutando el siguiente comando:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Sigue los pasos descritos en Otorga un solo rol a
otorga el rol Spanner API Service Agent
al
Cuenta de agente de servicio de Spanner
service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com
en tu
proyecto de Vertex AI.
Seleccionar un modelo
Cuando uses ML.PREDICT
(para GoogleSQL) o
spanner.ML_PREDICT_ROW
(para PostgreSQL), debes especificar la ubicación.
del modelo de AA. El modelo que selecciones puede ser uno de los siguientes:
Un modelo que se ejecuta en Model Garden de Vertex AI
Un modelo de Vertex AI con un extremo activo al que tu agente de servicio de Spanner tenga permiso de IAM para acceder.
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 que hayas seleccionado, los pasos para generar tus predicciones diferirán.
Usa un modelo en Model Garden de Vertex AI
Para generar una predicción con un modelo de Model Garden de Vertex AI, sigue estos pasos: selecciona un modelo de Model Garden.
GoogleSQL
Antes de usar un modelo con ML.PREDICT()
, debes registrarlo
con la sentencia 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
: Es el nombre que deseas asignar a tu modelo.INPUT_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
: Es el nombre de la columna de resultado. Por ejemplo: Si usas el modelogemini-pro
, el nombre de la columna de salida escontent
.OUTPUT_COLUMN_TYPE
: Es el tipo de datos paraOUTPUT_COLUMN_NAME
.PROJECT_ID
El ID de tu proyecto de Google Cloud.REGION_ID
: El ID de la región de Google Cloud 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 la referencia de la API de modelos para la IA generativa.
Usa la ML.PREDICT
.
Función de GoogleSQL con el modelo seleccionado
del Model Garden para generar tu predicción.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Reemplaza lo siguiente:
MODEL_NAME
: Es el nombre que deseas asignar a tu modelo.Para obtener más información sobre los modelos, consulta la referencia de la API de modelos para la IA generativa.
INPUT_RELATION
: EsTABLE table_name
o una subconsulta de la tabla o subconsulta que suministra datos. para ejecutar la predicción de AA.PARAMETERS
: Es un valorSTRUCT
que contiene parámetros. compatible conmodel_id
.
También puedes usar SAFE.ML.PREDICT
para mostrar null
en lugar de un error en tus predicciones. Esto es útil en los casos en que se ejecutan consultas grandes en los que se pueden tolerar algunas predicciones fallidas.
PostgreSQL
Usa la función de PostgreSQL ML_PREDICT_ROW
con el modelo seleccionado
del 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
El ID de tu proyecto de Google Cloud.REGION_ID
: El ID de la región de Google Cloud 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 la referencia de la API de modelos para la IA generativa.
INSTANCES
: Las entradas para 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 más información sobre 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 Spanner Vertex AI, debes implementarlo 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 GoogleSQL ML.PREDICT
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 sentencia CREATE MODEL
. Cada modelo implementado tiene su propia infraestructura
. El siguiente es un ejemplo de esquema 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
El ID de tu proyecto de Google Cloud.LOCATION
: El ID de la región de Google Cloud en la que se encuentra el modelo, por ejemplo,us-central1
ENDPOINT_ID
: Es 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 IA generativa.
Usa la ML.PREDICT
.
Función de GoogleSQL con el modelo seleccionado
del 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 usar.INPUT_RELATION
: Es la tabla o subconsulta que deseas. para ejecutar la predicción de AA.PARAMETERS
: Un valorSTRUCT
que contiene parámetros compatibles conmodel_name
.
Esta consulta produce una relación que contiene todas las columnas de salida del modelo y en todas las columnas de la relación de entrada.
PostgreSQL
Usa la función de PostgreSQL ML.PREDICT
con el modelo en un
extremo de Vertex AI para generar la 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
: Es el ID del proyecto de Google Cloud en el que se encuentra el modelo.REGION_ID
: El ID de la región de Google Cloud en la que se encuentra el modelo, por ejemplo,us-central1
ENDPOINT_ID
: Es el ID del extremo del modelo.INSTANCES
: las entradas de la llamada de predicción, en formato JSONPARAMETERS
: Son los parámetros opcionales de la llamada de predicción, en formato JSON.
Esta consulta produce una respuesta JSON. Para obtener más información sobre los mensajes de respuesta JSON del modelo, consulta PredictResponse.
Ejemplos del uso de funciones de AA para generar predicciones
En el siguiente ejemplo, se usa el modelo gemini-pro, del 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
: Es la región en la que estás usando 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" |
+--------------------+