プロジェクト間サービス アカウントを使用する

このドキュメントでは、TPU VM の作成時にプロジェクト間のサービス アカウントを使用する方法について概説します。プロジェクト間サービス アカウントは、TPU VM とは異なるプロジェクトにあるサービス アカウントです。

次の手順では、共有 VPC または VPC Service Controls は考慮されていません。使用をサポートするには、追加の構成や権限が必要になる場合があります。詳細については、共有 VPC ネットワークの作成と変更VPC Service Controls の概要をご覧ください。

始める前に

環境変数を定義する

export TPU_PROJECT_ID=tpu-project-id
export SERVICE_PROJECT_ID=service-project-id
export SERVICE_ACCOUNT_EMAIL=your_service_account@$(SERVICE_PROJECT_ID).iam.gserviceaccount.com
export ZONE=your-zone
export TPU_NAME=your-tpu-name
export NETWORK=your-network
export SUBNET=your-subnet

IAM 権限を設定する

  1. サービス アカウントが tpu_project で TPU サービス エージェントのロールを使用できるようにします。

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. TPU サービス エージェントに serviceAccountUser ロールを追加します。

    gcloud projects add-iam-policy-binding $SERVICE_PROJECT_ID \
    --member=serviceAccount:service-$TPU_PROJECT_ID@gcp-sa-tpu.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountUser
  3. ワークロードが Docker コンテナで実行されている場合は、Compute Engine Service エージェントがメタデータ サーバーにアクセスできるようにします。

    gcloud iam service-accounts add-iam-policy-binding  \
    --project $SERVICE_PROJECT_ID $SERVICE_ACCOUNT_EMAIL \
    --role roles/iam.serviceAccountTokenCreator \
    --member serviceAccount:service-$TPU_PROJECT_ID@compute-system.iam.gserviceaccount.com

tpu_project に TPU VM を作成する

service_project のサービス アカウントを使用して、tpu_project に TPU VM を作成します。

gcloud alpha compute tpus tpu-vm create $TPU_NAME \
--description=$TPU_NAME \
--accelerator-type=v5litepod-8 \
--version=tpu-vm-tf-2.17.0-pod \
--network=projects/$PROJECT_A/global/networks/$NETWORK \
--subnetwork=$SUBNET \
--internal-ips \
--service-account=$SERVICE_ACCOUNT_EMAIL \
--project=$TPU_PROJECT_ID \
--zone=$ZONE