Vertex AI Pipelines を使用して機械学習(ML)パイプラインをオーケストレートする前に、Google Cloud プロジェクトを設定する必要があります。一部のリソース(Vertex ML Metadata で使用されるメタデータ ストアなど)は、パイプラインの初回実行時に Cloud プロジェクトに作成されます。
以下の手順で Vertex AI Pipelines 用のプロジェクトを構成します。
サービス アカウントを指定しないと、Vertex AI Pipelines は Compute Engine のデフォルトのサービス アカウントを使用してパイプラインを実行します。Compute Engine のデフォルトのサービス アカウントには、プロジェクト編集者のロールがデフォルトで付与されています。
パイプラインを実行するサービス アカウントを作成し、パイプラインの実行に必要な Google Cloud リソースに対するきめ細かな権限をアカウントに付与することをおすすめします。
Vertex AI Pipelines は Cloud Storage を使用して、パイプライン実行のアーティファクトを保存します。Cloud Storage バケットを作成し、このバケットへのアクセス権をサービス アカウントに付与します。
Vertex AI Pipelines は、Vertex ML Metadata を使用して、パイプライン実行によって作成されたメタデータを保存します。パイプラインの初回実行時に、Vertex AI がプロジェクトのメタデータ ストアを作成します。
顧客管理の暗号鍵(CMEK)でデータを暗号化する場合は、パイプラインを実行する前に CMEK 鍵を使用してメタデータ ストアを作成する必要があります。
メタデータ ストアが作成された後、メタデータ ストアで使用される CMEK 鍵は、パイプラインの実行時に使用される CMEK 鍵とは別のものになります。
Google Cloud プロジェクトの設定
次の手順で Cloud プロジェクトを作成し、Vertex AI Pipelines で使用するように構成します。
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Vertex AI and Cloud Storage API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
gcloud
コンポーネントを更新してインストールします。gcloud components update
gcloud components install beta-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Vertex AI and Cloud Storage API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
gcloud
コンポーネントを更新してインストールします。gcloud components update
gcloud components install beta
きめ細かい権限を持つサービス アカウントを構成する
パイプラインを実行するときに、サービス アカウントを指定できます。パイプライン実行は、このサービス アカウントの権限で機能します。
サービス アカウントを指定しないと、パイプライン実行で Compute Engine のデフォルトのサービス アカウントが使用されます。Compute Engine のデフォルトのサービス アカウントには、プロジェクト編集者のロールがデフォルトで付与されています。
以下の手順でサービス アカウントを作成して、Google Cloud リソースに対するきめ細かい権限を付与します。
次のコマンドを実行して、サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_ID \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME" \ --project=PROJECT_ID
次の値を置き換えます。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
- DESCRIPTION: (省略可)サービス アカウントの説明。
- DISPLAY_NAME: このサービス アカウントの表示名。
- PROJECT_ID: サービス アカウントを作成するプロジェクト。
詳しくは、サービス アカウントの作成をご覧ください。
Vertex AI へのアクセス権をサービス アカウントに付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
次の値を置き換えます。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
パイプラインが Container Registry にホストされているコンテナ イメージを使用する場合は、イメージの pull へのアクセス権をサービス アカウントに付与します。
パイプラインで使用する Google Cloud リソースへのアクセス権をサービス アカウントに付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
次の値を置き換えます。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
- ROLE_NAME: このサービス アカウントに付与する Identity and Access Management のロール。
このサービス アカウントを使用して Vertex AI Pipelines でパイプラインを実行するには、次のコマンドを実行して、サービス アカウントの roles/iam.serviceAccountUser ロールをユーザー アカウントに付与します。
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"
次の値を置き換えます。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- USER_EMAIL: このサービス アカウントとしてパイプラインを実行するユーザーのメールアドレス。
Compute Engine のデフォルトのサービス アカウントを使用してパイプラインを実行する場合は、Compute Engine API を有効にします。
パイプライン アーティファクト用の Cloud Storage バケットを構成する
Vertex AI Pipelines は、Cloud Storage を使用してパイプライン実行のアーティファクトを保存します。次の手順で Cloud Storage バケットを作成し、そのバケット内のオブジェクトに対する読み取り / 書き込みアクセス権をサービス アカウント(または Compute Engine のデフォルトのサービス アカウント)に付与します。
次のコマンドを実行して、パイプラインを実行するリージョンに Cloud Storage バケットを作成します。
gsutil mb -p PROJECT_ID -l BUCKET_LOCATION gs://BUCKET_NAME
次の値を置き換えます。
- PROJECT_ID: バケットが関連付けられているプロジェクトを指定します。
- BUCKET_LOCATION: バケットのロケーションを指定します(例:
US-CENTRAL1
)。 - BUCKET_NAME: バケットに付ける名前。命名の要件に従う必要があります。例:
my-bucket
詳しくは、Cloud Storage バケットの作成をご覧ください。
前の手順で作成したバケット内のパイプライン アーティファクトに対する読み取り / 書き込み権限をサービス アカウントに付与するには、次のコマンドを実行します。
gsutil iam ch \ serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com:roles/storage.objectCreator,objectViewer \ gs://BUCKET_NAME
gsutil iam ch \ serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com:roles/storage.objectViewer \ gs://BUCKET_NAME
次の値を置き換えます。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- BUCKET_NAME: サービス アカウントにアクセス権を付与するバケットの名前。
Compute Engine のデフォルトのサービス アカウントを使用してパイプラインを実行する場合は、
gcloud iam service-accounts list
コマンドを実行して、アカウントのプロジェクト番号を確認します。gcloud iam service-accounts list
Compute Engine のデフォルトのサービス アカウントの名前は
PROJECT_NUMBER-compute@developer.gserviceaccount.com
です。次のコマンドを実行して、前の手順で作成したバケット内のパイプライン アーティファクトに対する読み取り / 書き込み権限を Compute Engine のデフォルト サービス アカウントに付与します。
gsutil iam ch \ serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com:roles/storage.objectCreator,objectViewer \ gs://BUCKET_NAME
次の値を置き換えます。
- PROJECT_NUMBER: Compute Engine のデフォルトのサービス アカウントのプロジェクト番号。
- BUCKET_NAME: サービス アカウントにアクセス権を付与するバケットの名前。
詳しくは、Cloud Storage バケットへのアクセスの制御をご覧ください。
CMEK を使用するメタデータ ストアの作成(省略可)
次の手順で CMEK を作成し、この CMEK を使用する Vertex ML Metadata メタデータ ストアを設定します。
次の REST 呼び出しを行うと、CMEK を使用してプロジェクトのデフォルトのメタデータ ストアを作成できます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: 使用するリージョン。
- PROJECT: プロジェクト ID。
- KEY_RING: 暗号鍵が存在する Cloud Key Management Service のキーリングの名前。
- KEY_NAME: このメタデータ ストアに使用する暗号鍵の名前。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/metadataStores?metadata_store_id=default
JSON 本文のリクエスト:
{ "encryption_spec": { "kms_key_name": "projects/PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" }, }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/12345/locations/us-central1/operations/67890", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateMetadataStoreOperationMetadata", "genericMetadata": { "createTime": "2021-05-18T18:47:14.494997Z", "updateTime": "2021-05-18T18:47:14.494997Z" } } }