用于创建基于 Vertex AI 托管模型的远程模型的 CREATE MODEL 语句

本文档介绍了用于在 BigQuery 中创建基于部署到 Vertex AI 的模型的远程模型的 CREATE MODEL 语句。

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

在指定的数据集中创建和训练新模型。如果模型名称存在,则 CREATE MODEL 会返回错误。

CREATE MODEL IF NOT EXISTS

仅当指定的数据集中不存在指定的新模型时才会创建和训练此模型。

CREATE OR REPLACE MODEL

在指定的数据集中创建和训练模型,并替换具有相同名称的现有模型。

model_name

所创建或替换的模型的名称。模型名称在数据集中必须具备唯一性:其他模型或表不得使用同一名称。模型名称必须遵循与 BigQuery 表格相同的命名规则。模型名称的要求如下:

  • 最多可以包含 1024 个字符
  • 包含字母(大写或小写)、数字和下划线

model_name 不区分大小写。

如果您未配置默认项目,则必须按以下格式(包括反引号)将项目 ID 附加到模型名称前面:

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

例如 `myproject.mydataset.mymodel`。

INPUTOUTPUT 子句

使用 HTTPS 端点创建远程模型时,必须指定 INPUTOUTPUT 子句。INPUT 子句必须包含 Vertex AI 端点请求所需的字段,而 OUTPUT 子句必须包含 Vertex AI 端点响应所需的字段。

支持的数据类型

您可以在 INPUTOUTPUT 子句中使用以下 BigQuery 数据类型:

字段名称格式

INPUTOUTPUT 字段名称必须与 Vertex AI 端点请求和响应的字段名称相同。对于具有单个 OUTPUT 的 Vertex AI 端点,响应中没有字段名称,因此您可以在 OUTPUT 语句中指定任何字段名称。

示例

如果 Vertex AI 请求如以下示例所示:

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

INPUT 语句必须是:

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

如果 Vertex AI 响应如以下示例所示:

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

OUTPUT 语句必须是:

OUTPUT(out1 INT64, out2 INT64)

REMOTE WITH CONNECTION

语法

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

BigQuery 使用 Cloud 资源连接与 Vertex AI 端点进行交互。

连接元素如下:

  • PROJECT_ID:包含连接的项目的 ID
  • LOCATION:连接使用的位置。连接必须与包含模型的数据集位于同一位置。
  • CONNECTION_ID:连接 ID,例如 myconnection

    如需查找您的连接 ID,请在 Google Cloud 控制台中查看连接详细信息。连接 ID 是连接 ID 中显示的完全限定连接 ID 的最后一部分的值,例如 projects/myproject/locations/connection_location/connections/myconnection

您需要将 Vertex AI User 角色授予创建模型的项目中的连接服务账号。

示例

`myproject.us.my_connection`

ENDPOINT

语法

ENDPOINT = vertex_ai_https_endpoint

说明

对于 vertex_ai_https_endpoint,请指定代表部署到 Vertex AI 的模型的 HTTPS 端点

创建基于部署到 Vertex AI 的模型的远程模型后,您可以将该模型与 ML.PREDICT 搭配使用来执行推理。

以下示例展示了如何创建使用 HTTPS 端点的远程模型:

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

示例

以下示例会创建基于部署到 Vertex AI 端点的模型的 BigQuery ML 远程模型:

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')

后续步骤

如需详细了解使用 HTTPS 端点的远程模型支持的 SQL 语句和函数,请参阅每个模型的端到端用户体验历程