モデルの管理

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

モデル名の変更

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

モデルのコピー

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

  • Cloud Console を使用する
  • コマンドライン ツールの bq cp コマンドを使用する
  • jobs.insert API メソッドを直接呼び出して、コピージョブを構成するか、クライアント ライブラリを使用する。

モデルのコピーに関する制限

モデルのコピージョブには、以下の制限があります。

  • モデルをコピーするときは、モデルの作成時と同じ命名規則に従って、コピー先モデルに名前を付ける必要があります。
  • モデルのコピーは、コピージョブに関する BigQuery ML の割り当てポリシーに従います。
  • 現在のところ、Google Cloud Console の BigQuery ウェブ UI では、モデルのコピーはサポートされていません。
  • モデルをコピーする際には、コピー先のデータセットが、コピー元のモデルを含んだデータセットと、同じロケーションにある必要があります。たとえば、EU にあるデータセットからモデルをコピーして、US にあるデータセットに書き込むことはできません。
  • 単一のコマンドで、複数のソースモデルをコピーすることはできません。
  • CLI を使用してモデルをコピーする際、現在のところ、--destination_kms_key フラグはサポートされていません。

モデルのコピー

次の方法で、モデルをコピーできます。

  • コマンドライン ツールの bq cp コマンドを使用する
  • jobs.insert API メソッドを呼び出して、コピージョブを構成するか、クライアント ライブラリを使用する。

モデルをコピーするには:

Console

現在のところ、Cloud Console の BigQuery ウェブ UI では、モデルのコピーをサポートしていません。

CLI

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 ML を東京リージョンで使用している場合は、このフラグの値を asia-northeast1 に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。
  • [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 では、既存のモデルを上書きするかどうかを指定します。

次のステップ