Instrução CREATE MODEL para modelos remotos em modelos hospedados pela Vertex AI

Neste documento, descrevemos a instrução CREATE MODEL para criar modelos remotos no BigQuery em modelos implantados na Vertex AI.

Sintaxe 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

Cria e treina um modelo novo no conjunto de dados especificado. Se o nome do modelo existir, CREATE MODEL retornará um erro.

CREATE MODEL IF NOT EXISTS

Cria e treina um novo modelo somente quando ele não existe no conjunto de dados especificado.

CREATE OR REPLACE MODEL

Cria e treina um modelo e substitui um modelo atual com o mesmo nome no conjunto de dados especificado.

model_name

O nome do modelo que você está criando ou substituindo. O nome do modelo precisa ser exclusivo no conjunto de dados: nenhum outro modelo ou tabela pode ter o mesmo nome. O nome do modelo precisa seguir as mesmas regras de nomenclatura de uma tabela do BigQuery. Um nome de modelo pode:

  • conter até 1.024 caracteres;
  • conter letras (maiúsculas e minúsculas), números e sublinhados;

model_name não diferencia maiúsculas de minúsculas.

Se você não tiver um projeto padrão configurado, use o ID do projeto como prefixo no nome do modelo no seguinte formato, incluindo acentos graves:

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

Por exemplo, "myproject.mydataset.mymodel".

Cláusulas INPUT e OUTPUT

É necessário especificar as cláusulas INPUT e OUTPUT ao criar um modelo remoto com um endpoint HTTPS. A cláusula INPUT precisa conter os campos necessários para a solicitação de endpoint da Vertex AI, e a OUTPUT precisa conter os campos necessários para a resposta de endpoint da Vertex AI.

Tipos de dados compatíveis

É possível usar os seguintes tipos de dados do BigQuery nas cláusulas INPUT e OUTPUT:

Formato do nome do campo

Os nomes dos campos INPUT e OUTPUT precisam ser idênticos aos da solicitação e da resposta de endpoint da Vertex AI. Para um endpoint da Vertex AI com um único OUTPUT, não há nome de campo na resposta e, portanto, é possível especificar qualquer nome de campo na instrução OUTPUT.

Exemplo

Se a solicitação da Vertex AI for semelhante ao exemplo a seguir:

{
  "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] },
  ]
}

A instrução INPUT precisa ser:

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

Se a resposta da Vertex AI for semelhante ao exemplo a seguir:

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

A instrução OUTPUT precisa ser:

OUTPUT(out1 INT64, out2 INT64)

REMOTE WITH CONNECTION

Sintaxe

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

O BigQuery usa uma conexão de recursos do Cloud para interagir com o endpoint da Vertex AI.

Os elementos de conexão são estes:

  • PROJECT_ID: o ID do projeto que contém a conexão.
  • LOCATION: o local usado pela conexão. A conexão precisa estar no mesmo local que o conjunto de dados que contém o modelo.
  • CONNECTION_ID: o ID da conexão. Por exemplo, myconnection.

    Para encontrar o ID da conexão, confira os detalhes da conexão no console do Google Cloud. O ID da conexão é o valor na última seção do ID da conexão totalmente qualificado mostrado em ID da conexão, por exemplo, projects/myproject/locations/connection_location/connections/myconnection.

Você precisa conceder a função de usuário da Vertex AI à conta de serviço da conexão no projeto em que você cria o modelo.

Exemplo

`myproject.us.my_connection`

ENDPOINT

Sintaxe

ENDPOINT = vertex_ai_https_endpoint

Descrição

Em vertex_ai_https_endpoint, especifique o endpoint HTTPS que representa um modelo implantado na Vertex AI.

Depois de criar um modelo remoto com base em um modelo implantado na Vertex AI, é possível usá-lo com ML.PREDICT para fazer a inferência.

O exemplo a seguir mostra como criar um modelo remoto que usa um endpoint HTTPS:

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

Exemplo

O exemplo a seguir cria um modelo remoto do BigQuery ML em um modelo implantado em um endpoint da 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')

A seguir

Para mais informações sobre as instruções e funções SQL compatíveis com modelos remotos que usam endpoints HTTPS, consulte Jornada do usuário completa para cada modelo.