在本教程中,您将在 BigQuery 中将 Vertex AI 端点注册为远程模型。然后,使用 ML.PREDICT 函数通过远程模型进行预测。
当模型太大而无法导入 BigQuery 时,您可以使用远程模型。如果您想要对在线、批量和微批量用例使用单一推断点,它们也很有用。
目标
- 将经过预训练的 TensorFlow 模型导入 Vertex AI Model Registry。
 - 将模型部署到 Vertex AI 端点。
 - 创建 Cloud 资源连接。
 - 使用 
CREATE MODEL语句在 BigQuery 中创建远程模型。 - 使用 
ML.PREDICT函数通过远程模型进行预测。 
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
 
 
 
  如需根据您的预计使用量来估算费用,请使用价格计算器。
  
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
 - 
    
    
      
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
 - 
      Create a project: To create a project, you need the Project Creator
      (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. 
 - 
    
    
      
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
 - 
      Create a project: To create a project, you need the Project Creator
      (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. 
 - 
  
    
Verify that billing is enabled for your Google Cloud project.
 - 
  
  
    
      
Enable the BigQuery, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 确保您拥有必要的权限,以便执行本文档中的任务。
 - BigQuery Studio Admin (
roles/bigquery.studioAdmin) - Vertex AI User (
roles/aiplatform.user) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin) - 
              
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
 - 
              
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
 - For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
 - 
              
In the Google Cloud console, go to the IAM page.
前往 IAM - 选择项目。
 - 点击 授予访问权限。
 - 
              
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
 - 在选择角色列表中,选择一个角色。
 - 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
 - 点击 Save(保存)。
 在 Google Cloud 控制台中,前往 Vertex AI Model Registry 页面。
点击导入。
对于第一步:名称和区域,请执行以下操作:
选择作为新模型导入。
对于名称,输入
bert_sentiment。对于说明,输入
BQML tutorial model。对于区域,选择
us-central1。您必须选择美国区域,因为 Cloud Storage 存储桶位于US多区域位置。点击继续。
对于第 2 步:模型设置,请执行以下操作:
选择将模型工件导入到新的预构建容器中。
在预构建容器设置部分,执行以下操作:
对于模型框架,选择 TensorFlow。
对于模型框架版本,选择 2.15。
对于加速器类型,请选择 GPU。
对于模型制品位置,输入
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/。将所有其他选项保留为默认值,然后点击导入。
在 Google Cloud 控制台中,前往 Vertex AI Model Registry 页面。
在名称列中,点击
bert_sentiment。点击部署和测试标签页。
点击部署到端点。
在第一步定义端点中,请执行以下操作:
点击创建新的端点。
对于端点名称,输入
bert sentiment endpoint。保留其余默认值,然后点击继续。
对于第二步模型设置,请执行以下操作:
在计算设置部分的计算节点数下限中,输入
1。这是模型始终需要可用的节点数。在高级缩放选项部分的机器类型中,选择标准 (n1-standard-2)。由于您在导入模型时选择了 GPU 作为加速器类型,因此在您选择机器类型后,系统会自动设置加速器类型和加速器数量。
保留其余的默认值,然后点击部署。
将模型部署到端点后,状态会更改为
Active。复制 ID 列中的数字端点 ID 和 Region 列中的值。稍后将会用到这些值。
在 Google Cloud 控制台中,前往 BigQuery 页面。
在探索器窗格中,点击您的项目名称。
点击 查看操作 > 创建数据集
在 创建数据集 页面上,执行以下操作:
在数据集 ID 部分,输入
bqml_tutorial。在位置类型部分,选择多区域,然后选择 US (multiple regions in United States)(美国[美国的多个区域])。
保持其余默认设置不变,然后点击创建数据集。
创建一个名为
bqml_tutorial的数据集,并将数据位置设置为US,说明为BigQuery ML tutorial dataset:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
该命令使用的不是
--dataset标志,而是-d快捷方式。如果省略-d和--dataset,该命令会默认创建一个数据集。确认已创建数据集:
bq ls前往 BigQuery 页面。
在左侧窗格中,点击 Explorer:

如果您没有看到左侧窗格,请点击 展开左侧窗格以打开该窗格。
在浏览器窗格中,点击 添加数据。
系统随即会打开添加数据对话框。
在过滤条件窗格中的数据源类型部分,选择数据库。
或者,在搜索数据源字段中,您可以输入
Vertex AI。在精选数据源部分中,点击 Vertex AI。
点击 Vertex AI 模型:BigQuery 联合解决方案卡片。
在连接类型列表中,选择 Vertex AI 远程模型、远程函数和 BigLake(Cloud 资源)。
在连接 ID 字段中,输入
bqml_tutorial。确认已选择多区域 - 美国。
点击创建连接。
在窗口底部,点击前往连接。或者,在探索器窗格中,点击连接,然后点击
us.bqml_tutorial。在连接信息窗格中,复制服务账号 ID。为连接配置权限时,您需要使用此 ID。当您创建连接资源时,BigQuery 会创建一个唯一的系统服务账号,并将其与该连接相关联。
创建连接:
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
将
PROJECT_ID替换为您的Google Cloud 项目 ID。--project_id参数会覆盖默认项目。当您创建连接资源时,BigQuery 会创建一个唯一的系统服务账号,并将其与该连接相关联。
问题排查:如果您收到以下连接错误,请更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
检索并复制服务账号 ID 以在后续步骤中使用:
bq show --connection PROJECT_ID.us.bqml_tutorial
输出内容类似如下:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}前往 IAM 和管理页面。
点击 授予访问权限。
在新建主账号字段中,输入您之前复制的 Cloud 资源连接的服务账号 ID。
在选择角色字段中,选择 Vertex AI,然后选择 Vertex AI User。
点击保存。
在 Google Cloud 控制台中,前往 BigQuery 页面。
对于创建新内容,请点击 SQL 查询。
在查询编辑器中,输入以下
CREATE MODEL语句,然后点击运行:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')
替换以下内容:
- PROJECT_ID:您的项目名称。
 - ENDPOINT_ID:您之前复制的端点 ID。
 
操作完成后,您会看到类似于
Successfully created model named bert_sentiment的消息。您的新模型会显示在资源面板中。模型由模型图标
 表示。如果您在资源面板中选择该新模型,则模型相关信息将显示在查询编辑器下方。
通过输入以下
CREATE MODEL语句来创建远程模型:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')"
替换以下内容:
- PROJECT_ID:您的项目名称。
 - ENDPOINT_ID:您之前复制的端点 ID。
 
创建模型后,请验证该模型是否显示在数据集中:
bq ls -m bqml_tutorial
输出内容类似如下:
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
在 Google Cloud 控制台中,前往 BigQuery 页面。
在创建新内容部分中,点击 SQL 查询。
在查询编辑器中,输入以下使用
ML.PREDICT函数的查询,然后点击运行。SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
结果应如下所示:
 - In the Google Cloud console, go to the Manage resources page.
 - In the project list, select the project that you want to delete, and then click Delete.
 - In the dialog, type the project ID, and then click Shut down to delete the project.
 - In the Google Cloud console, go to the Manage resources page.
 - In the project list, select the project that you want to delete, and then click Delete.
 - In the dialog, type the project ID, and then click Shut down to delete the project.
 - 如需大致了解 BigQuery ML,请参阅 BigQuery ML 中的 AI 和机器学习简介。
 - 如需详细了解如何为远程模型使用 
CREATE MODEL语句,请参阅用于自定义模型的远程模型的 CREATE MODEL 语句。 - 如需详细了解如何使用 BigQuery 笔记本,请参阅笔记本简介。
 - 如需详细了解 BigQuery 单区域和多区域,请参阅支持的位置页面。
 - 如需详细了解如何在 Vertex AI Model Registry 中导入模型,请参阅将模型导入 Vertex AI。
 - 如需详细了解 Vertex AI Model Registry 中的模型版本控制,请参阅使用 Model Registry 进行模型版本控制。
 - 如需了解如何使用 Vertex AI VPC Service Controls,请参阅将 VPC Service Controls 与 Vertex AI 搭配使用。
 
所需的角色
如果您创建了一个新项目,那么您就是项目所有者,并且会获得完成本教程所需的所有必要 IAM 权限。
如果您要使用现有项目,请执行以下操作。
Make sure that you have the following role or roles on the project:
Check for the roles
Grant the roles
如需详细了解 BigQuery 中的 IAM 权限,请参阅 BigQuery 权限。
将模型导入 Vertex AI Model Registry
在本教程中,您将使用 Cloud Storage 中可用的预训练 TensorFlow 模型(位于 gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/)。Cloud Storage 存储桶位于 US 多区域位置。
该模型是一个名为 saved_model.pb 的 TensorFlow 模型。这是一个自定义情感分析模型,是通过使用纯文本 IMDB 电影评论对 BERT 模型进行微调而创建的。该模型使用电影评论中的文本输入,并返回 0 到 1 之间的情感得分。将模型导入 Model Registry 时,您需要使用预构建的 TensorFlow 容器。
请按照以下步骤导入模型。
导入完成后,您的模型将显示在 Model Registry 页面上。
将模型部署到 Vertex AI 端点
请按照以下步骤将模型部署到端点。
创建数据集
创建 BigQuery 数据集以存储机器学习模型。
控制台
bq
如需创建新数据集,请使用带有 --location 标志的 bq mk 命令。 如需查看完整的潜在参数列表,请参阅 bq mk --dataset 命令参考文档。
API
使用已定义的数据集资源调用 datasets.insert 方法。
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrame
在尝试此示例之前,请按照《BigQuery 快速入门:使用 BigQuery DataFrames》中的 BigQuery DataFrames 设置说明进行操作。如需了解详情,请参阅 BigQuery DataFrames 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置 ADC。
创建 BigQuery Cloud 资源连接
您必须具有 Cloud 资源连接才能连接到 Vertex AI 端点。
控制台
bq
设置连接访问权限
向 Cloud 资源连接的服务账号授予 Vertex AI User 角色。您必须在您创建远程模型端点的项目中授予此角色。
如需授予该角色,请按以下步骤操作:
创建 BigQuery 机器学习远程模型
您可以使用 CREATE MODEL 语句和 REMOTE WITH CONNECTION 子句来创建 BigQuery ML 远程模型。如需详细了解 CREATE MODEL 语句,请参阅适用于自定义模型的远程模型的 CREATE MODEL 语句。
您可以在 US 多区域位置创建模型。在 BigQuery 多区域(US、EU)数据集中,您只能创建一个远程模型,该模型连接到同一多区域位置(US、EU)中某个区域中部署的端点。
创建远程模型时,您需要在将模型部署到 Vertex AI 时生成的端点 ID。此外,输入和输出字段名称和类型必须与 Vertex AI 模型的输入和输出完全相同。在此示例中,输入是文本 STRING,输出是类型为 FLOAT64 的 ARRAY。
控制台
bq
使用 ML.PREDICT 获取预测
您可以使用 ML.PREDICT 函数从远程模型获取情感预测。输入是文本列 (review),其中包含 bigquery-public-data.imdb.reviews 表中的电影评价。
在此示例中,系统选择并发送 10,000 条记录以获取预测。远程模型默认的请求批次大小为 128 个请求。
控制台
bq
输入以下命令以运行使用 ML.PREDICT 的查询。
bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
控制台
gcloud
删除各个资源
或者,如需移除本教程中使用的各个资源,请执行以下操作: