モデルの管理
このドキュメントでは、モデルのコピーやモデル名の変更など、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.insertAPI メソッドを呼び出して、コピージョブを構成するか、クライアント ライブラリを使用する。
モデルをコピーするには:
コンソール
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.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 で機械学習モデルを作成するをご覧ください。
- モデルを使った作業の詳細を確認するには、以下をご覧ください。