管理模型

本文件說明如何管理 BigQuery ML 模型,包括複製模型和重新命名模型。

必要的角色

如要取得讀取及建立 BigQuery 模型所需的權限,請向管理員要求授予您專案的 BigQuery 資料編輯者 (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.insert API 方法並設定複製工作,或是使用用戶端程式庫

如要複製模型:

控制台

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 模型」一文。

後續步驟