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

이 문서에서는 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