使用跨專案服務帳戶

本文件將概略說明如何在建立 TPU VM 時使用跨專案服務帳戶。跨專案服務帳戶是指位於 TPU VM 以外專案中的服務帳戶。

請注意,以下說明不考慮共用虛擬私人雲端或 VPC Service Controls。您可能需要額外設定或權限才能使用這些功能。詳情請參閱「建立及修改共用虛擬私有雲網路」和「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

設定身分與存取權管理權限

  1. 允許服務帳戶在 tpu_project 中使用 TPU 服務代理人角色。

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. 將 serviceAccountUser 角色新增至 TPU 服務代理人。

    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 服務代理存取中繼資料伺服器。

    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