管理模型

本页面介绍如何管理 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 标志。

复制模型

您可以通过以下方式复制模型:

要复制模型,请执行以下操作:

控制台

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 快捷键用于在无提示的情况下覆盖目标模型。 mydatasetmyotherdataset 创建于 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 模型

后续步骤