교차 프로젝트 서비스 계정 사용

이 문서에서는 TPU VM을 만들 때 교차 프로젝트 서비스 계정을 사용하는 방법을 간략히 설명합니다. 교차 프로젝트 서비스 계정은 TPU VM과 다른 프로젝트에 있는 서비스 계정입니다.

다음 안내는 공유 VPC 또는 VPC 서비스 제어를 고려하지 않습니다. 사용을 지원하려면 추가 구성이나 권한이 필요할 수 있습니다. 자세한 내용은 공유 VPC 네트워크 만들기 및 수정VPC 서비스 제어 개요를 참고하세요.

시작하기 전에

환경 변수 정의

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 서비스 에이전트가 메타데이터 서버에 액세스하도록 허용합니다.

    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