שימוש בחשבון שירות חוצה פרויקטים

במאמר הזה מוסבר איך להשתמש בחשבון שירות חוצה-פרויקטים כשיוצרים מכונת TPU וירטואלית. חשבון שירות חוצה פרויקטים הוא חשבון שירות שנמצא בפרויקט אחר מזה של מכונת ה-TPU הווירטואלית.

הערה: ההוראות הבאות לא מתייחסות ל-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 ב-tpu_project.

    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 וירטואלית ב-tpu_project

יוצרים מכונה וירטואלית של TPU ב-tpu_project באמצעות חשבון השירות ב-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