管理模型
本文档介绍如何管理 BigQuery ML 模型,包括复制模型和重命名模型。
所需的角色
如需获得读取和创建 BigQuery 模型所需的权限,请让管理员向您授予项目的 BigQuery Data Editor (roles/bigquery.dataEditor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含读取和创建 BigQuery 模型所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能读取和创建 BigQuery 模型:
-
从模型读取信息需要具备:
bigquery.models.getData -
创建模型需要具备:
bigquery.models.create
重命名模型
您无法更改现有模型的名称。如果需要更改模型的名称,请按照复制模型的步骤操作。在复制操作中指定目标时,使用新的模型名称。
复制模型
您可以通过以下方式将一个或多个模型从源数据集复制到目标数据集:
- 使用 Google Cloud 控制台。
- 使用 bq 命令行工具的
bq cp命令。 - 直接调用 jobs.insert API 方法并配置复制作业或使用客户端库。
复制模型的限制
模型的复制作业受到以下限制:
- 复制模型时,目标模型的名称必须遵循与创建模型相同的命名惯例。
- 模型副本需遵循 BigQuery 对复制作业的限制。
- Google Cloud 控制台不支持复制模型。
- 不支持在单个命令中复制多个源模型。
- 使用 CLI 复制模型时,不支持
--destination_kms_key标志。
复制模型
您可以通过以下方式复制模型:
- 使用命令行工具的
bq cp命令 - 调用
jobs.insertAPI 方法并配置复制作业或使用客户端库
要复制模型,请执行以下操作:
控制台
Google Cloud 控制台不支持复制模型。
bq
发出 bq cp 命令。可选标志:
-f或--force会覆盖目标数据集中的现有模型,并且不会提示您进行确认。-n或--no_clobber会在目标数据集中已存在同名模型时返回以下错误消息:'[PROJECT_ID]:[DATASET].[MODEL]' already exists, skipping。如果未指定
-n,则默认行为是提示您选择是否替换目标模型。
如果源数据集或目标数据集属于非默认项目,请按以下格式将相应项目 ID 添加到数据集名称中:PROJECT_ID:DATASET。
提供 --location 标志并将值设置为您的位置。
bq --location=LOCATION cp -f -n PROJECT_ID:DATASET.SOURCE_MODEL PROJECT_ID:DATASET.DESTINATION_MODEL
替换以下内容:
- LOCATION:您所在位置的名称。
--location是可选标志。例如,如果您在东京区域使用 BigQuery,可将该标志的值设置为asia-northeast1。您可以使用 .bigqueryrc 文件设置该位置的默认值。如需查看位置的完整列表,请参阅 BigQuery 位置。 - PROJECT_ID:您的项目 ID。
- DATASET:源数据集或目标数据集的名称。
- SOURCE_MODEL:要复制的模型。
- DESTINATION_MODEL:目标数据集中模型的名称。
示例:
输入以下命令可将 mydataset.mymodel 复制到 mydataset2。
两个数据集均属于默认项目,并且创建于 US 多区域位置。
bq --location=US cp mydataset.mymodel mydataset2.mymodel
输入以下命令可复制 mydataset.mymodel 并覆盖具有相同名称的目标模型。源数据集在默认项目中。目标数据集属于 myotherproject。-f 快捷键用于在无提示的情况下覆盖目标模型。
mydataset 和 myotherdataset 创建于 US 多区域位置。
bq --location=US cp -f mydataset.mymodel myotherproject:myotherdataset.mymodel
输入以下命令可复制 mydataset.mymodel 并会在目标数据集包含同名模型时返回错误。源数据集在默认项目中。目标数据集属于 myotherproject。-n 快捷方式用于防止覆盖具有相同名称的模型。
两个数据集均创建于 US 多区域位置。
bq --location=US cp -n mydataset.mymodel myotherproject:myotherdataset.mymodel
输入以下命令可将 mydataset.mymodel 复制到 mydataset2 并重命名模型 mymodel2。两个数据集都在默认项目中。两个数据集均创建于 asia-northeast1 区域。
bq --location=asia-northeast1 cp mydataset.mymodel mydataset2.mymodel2
API
要使用 API 复制模型,请调用 bigquery.jobs.insert 方法并配置 copy 作业。在作业资源 jobReference 部分的 location 属性中指定您的位置。
您必须在作业配置中指定以下值:
"copy": {
"sourceTable": { // Required
"projectId": string, // Required
"datasetId": string, // Required
"tableId": string // Required
},
"destinationTable": { // Required
"projectId": string, // Required
"datasetId": string, // Required
"tableId": string // Required
},
"createDisposition": string, // Optional
"writeDisposition": string, // Optional
},
其中:
sourceTable:提供要复制的模型的相关信息。destinationTable:提供新模型的相关信息。createDisposition:指定是否在模型不存在时创建一个。writeDisposition:指定是否覆盖现有模型。
加密模型
如需详细了解如何使用客户管理的加密密钥 (CMEK) 来加密模型,请参阅使用 CMEK 保护 BigQuery ML 模型。
后续步骤
- 如需大致了解 BigQuery ML,请参阅 BigQuery ML 简介。
- 如需开始使用 BigQuery ML,请参阅在 BigQuery ML 中创建机器学习模型。
- 如需详细了解如何使用模型,请参阅以下内容: