モデルを管理する

このページでは、モデルのコピーやモデル名の変更など、BigQuery ML モデルの管理方法について説明します。

必要なロール

BigQuery モデルの読み取りと作成に必要な権限を取得するには、プロジェクトに対する BigQuery データ編集者 roles/bigquery.dataEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

この事前定義ロールには、BigQuery モデルの読み取りと作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

BigQuery モデルの読み取りと作成には、次の権限が必要です。

  • モデルから情報を読み取るには: bigquery.models.getData
  • モデルを作成するには: bigquery.models.create

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

モデル名を変更する

既存のモデル名は変更できません。モデル名を変更するには、手順に沿ってモデルをコピーしてください。コピー先を指定する際に、新しいモデル名を使用してください。

モデルをコピーする

次の方法で、1 つ以上のモデルを、ソース データセットからコピー先のデータセットにコピーできます。

  • 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 を指定していない場合、デフォルトの動作として、コピー先モデルを置き換えるかどうかの選択を求めるプロンプトが表示されます。

コピー元またはコピー先のデータセットがデフォルト以外のプロジェクトにある場合は、PROJECT_ID:DATASET の形式でプロジェクト ID をデータセット名に追加します。

--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.mymodelmydataset2 にコピーするには、次のコマンドを入力します。 どちらのデータセットもデフォルト プロジェクト内にあり、US マルチリージョン ロケーションに作成されています。

bq --location=US cp mydataset.mymodel mydataset2.mymodel

mydataset.mymodel をコピーして、コピー先にある同じ名前のモデルを上書きするには、次のコマンドを入力します。コピー元データセットはデフォルト プロジェクトにあり、コピー先データセットは myotherproject にあります。-f ショートカットが指定されているため、コピー先モデルは確認プロンプトなしで上書きされます。mydatasetmyotherdatasetUS マルチリージョン ロケーションに作成されています。

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.mymodelmydataset2 にコピーして、モデル 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 モデルを保護するをご覧ください。

次のステップ