Sentencia CREATE MODEL para modelos remotos mediante modelos alojados en Vertex AI

En este documento, se describe la sentencia CREATE MODEL para crear modelos remotos en BigQuery en lugar de modelos implementados en Vertex AI.

Sintaxis de CREATE MODEL

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
`project_id.dataset.model_name`
INPUT (field_name field_type)
OUTPUT (field_name field_type)
REMOTE WITH CONNECTION `project_id.region.connection_id`
OPTIONS(ENDPOINT = vertex_ai_https_endpoint);

CREATE MODEL

Crea y entrena un modelo nuevo en el conjunto de datos especificado. Si el nombre del modelo existe, CREATE MODEL muestra un error.

CREATE MODEL IF NOT EXISTS

Crea y entrena un modelo nuevo solo si el modelo no existe en el conjunto de datos especificado.

CREATE OR REPLACE MODEL

Crea y entrena un modelo y reemplaza el existente con el mismo nombre en el conjunto de datos especificado.

model_name

El nombre del modelo que estás creando o reemplazando. El nombre del modelo debe ser único en el conjunto de datos: ningún otro modelo o tabla puede tener el mismo nombre. El nombre del modelo debe seguir las mismas reglas de denominación que una tabla de BigQuery. Estas son las características de un nombre de modelo:

  • Contiene hasta 1,024 caracteres
  • Contiene letras (mayúsculas o minúsculas), números o guiones bajos.

model_name no distingue entre mayúsculas y minúsculas.

Si no tienes un proyecto predeterminado configurado, debes anteponer el ID del proyecto al nombre del modelo en el siguiente formato, incluidos los acentos graves:

`[PROJECT_ID].[DATASET].[MODEL]`

Por ejemplo, “myproject.mydataset.mymodel”.

Cláusulas INPUT y OUTPUT

Debes especificar las cláusulas INPUT y OUTPUT cuando creas un modelo remoto con un extremo HTTPS. La cláusula INPUT debe contener los campos necesarios para la solicitud de extremo de Vertex AI, y la cláusula OUTPUT debe contener los campos necesarios para la respuesta de extremo de Vertex AI.

Tipos de datos admitidos

Puedes usar los siguientes tipos de datos de BigQuery en las cláusulas INPUT y OUTPUT:

Formato del nombre de campo

Los nombres de campo INPUT y OUTPUT deben ser idénticos a los nombres de campo de la solicitud y la respuesta de extremo de Vertex AI. Para un extremo de Vertex AI con un solo OUTPUT, no hay un nombre de campo en la respuesta y, por lo tanto, puedes especificar cualquier nombre de campo en la sentencia OUTPUT.

Ejemplo

Si la solicitud de Vertex AI se ve como el siguiente ejemplo:

{
  "instances": [
    { "f1": 10, "f2": 12.3, "f3": "abc", "f4": [1, 2, 3, 4] },
    { "f1": 40, "f2": 32.5, "f3": "def", "f4": [11, 12, 13, 14] },
  ]
}

La sentencia INPUT debe ser la siguiente:

INPUT(f1 INT64, f2 FLOAT64, f3 STRING, f4 ARRAY<INT64>)

Si la respuesta de Vertex AI se ve como el siguiente ejemplo:

{
  "predictions": [
    {
      "out1": 300,
      "out2": 40
    },
    {
      "out1": 200,
      "out2": 30
    }
  ]
}

La sentencia OUTPUT debe ser la siguiente:

OUTPUT(out1 INT64, out2 INT64)

REMOTE WITH CONNECTION

Sintaxis

`[PROJECT_ID].[LOCATION].[CONNECTION_ID]`

BigQuery usa una conexión de recursos de Cloud para interactuar con el extremo de Vertex AI.

Los elementos de conexión son los siguientes:

  • PROJECT_ID: ID del proyecto que contiene la conexión.
  • LOCATION: Es la ubicación que usa la conexión. La conexión debe estar en la misma ubicación que el conjunto de datos que contiene el modelo.
  • CONNECTION_ID: el ID de conexión, por ejemplo, myconnection.

    Para encontrar el ID de conexión, consulta los detalles de la conexión en la consola de Google Cloud. El ID de conexión es el valor de la última sección del ID de conexión completamente calificado que se muestra en el ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

Debes otorgar el rol de usuario de Vertex AI a la cuenta de servicio de la conexión en el proyecto en el que creas el modelo.

Ejemplo

`myproject.us.my_connection`

ENDPOINT

Sintaxis

ENDPOINT = vertex_ai_https_endpoint

Descripción

En vertex_ai_https_endpoint, especifica el extremo HTTPS que representa un modelo implementado en Vertex AI.

Después de crear un modelo remoto basado en un modelo implementado en Vertex AI, puedes usar el modelo con ML.PREDICT para realizar inferencias.

En el siguiente ejemplo, se muestra cómo crear un modelo remoto que use un extremo HTTPS:

ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234'

Ejemplo

En el siguiente ejemplo, se crea un modelo remoto de BigQuery ML sobre un modelo implementado en un extremo de Vertex AI:

CREATE MODEL `project_id.mydataset.mymodel`
 INPUT(f1 INT64, f2 FLOAT64, f3 STRING, f4 ARRAY)
 OUTPUT(out1 INT64, out2 INT64)
 REMOTE WITH CONNECTION `myproject.us.test_connection`
 OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234')

¿Qué sigue?

Si deseas obtener más información sobre las instrucciones y funciones de SQL compatibles para modelos remotos que usan extremos HTTPS, consulta Recorrido del usuario de extremo a extremo para cada modelo.