Usa una cuenta de servicio entre proyectos

En este documento, se describe cómo usar una cuenta de servicio entre proyectos cuando se crea una VM de TPU. Una cuenta de servicio entre proyectos es una cuenta de servicio que se encuentra en un proyecto diferente al de la VM de TPU.

Ten en cuenta que las siguientes instrucciones no tienen en cuenta la VPC compartida ni los Controles del servicio de VPC. Es posible que se requieran configuraciones o permisos adicionales para admitir su uso. Para obtener más información, consulta Crea y modifica VPC compartida compartidas y Descripción general de los Controles del servicio de VPC.

Antes de comenzar

Define las variables de entorno.

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

Configura los permisos de IAM

  1. Permite que tu cuenta de servicio use el rol de agente de servicios de TPU en tpu_project.

    gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \
    --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
    --role=roles/cloudtpu.serviceAgent
  2. Agrega el rol serviceAccountUser al agente de servicio de 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. Si tu carga de trabajo se ejecuta en contenedores de Docker, permite que el agente de servicio de Compute Engine acceda al servidor de metadatos.

    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

Crea una VM de TPU en tpu_project

Crea una VM de TPU en tpu_project con la cuenta de servicio en service_project.

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