שימוש בחשבון שירות חוצה פרויקטים
במאמר הזה מוסבר איך להשתמש בחשבון שירות חוצה-פרויקטים כשיוצרים מכונת TPU וירטואלית. חשבון שירות חוצה פרויקטים הוא חשבון שירות שנמצא בפרויקט אחר מזה של מכונת ה-TPU הווירטואלית.
הערה: ההוראות הבאות לא מתייחסות ל-VPC משותף או ל-VPC Service Controls. יכול להיות שיידרשו הגדרות או הרשאות נוספות כדי לתמוך בשימוש בהן. מידע נוסף זמין במאמרים יצירה ושינוי של רשתות VPC משותפות וסקירה כללית על VPC Service Controls.
לפני שמתחילים
- יוצרים שני Google Cloud פרויקטים. אחד שיכיל את המכונה הווירטואלית של TPU (
tpu_project) ואחד שיכיל את חשבון השירות (service_project). מידע נוסף זמין במאמר יצירה וניהול של פרויקטים. - יוצרים חשבון שירות ב-
service_project. למידע נוסף, קראו את המאמר יצירה וניהול של חשבונות שירות. - יוצרים רשת ומפעילים גישה פרטית ל-Google. מידע נוסף זמין במאמרים יצירה וניהול של רשתות והגדרת גישה פרטית ל-Google לכתובת IP פנימית.
- משביתים את מדיניות הארגון הבאה. מידע נוסף זמין במאמר בנושא אילוצים של מדיניות הארגון.
-
constraints/iam.disableCrossProjectServiceAccountUsageבשני הפרויקטים -
constraints/compute.vmExternalIpAccess(לגישה למכונה הווירטואלית באמצעות SSH, אופציונלי)
-
הגדרת משתני סביבה
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
מאפשרים לחשבון השירות להשתמש בתפקיד סוכן שירות TPU ב-
tpu_project.gcloud projects add-iam-policy-binding ${TPU_PROJECT_ID} \ --member=serviceAccount:${SERVICE_ACCOUNT_EMAIL} \ --role=roles/cloudtpu.serviceAgent
מוסיפים את התפקיד 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
אם עומס העבודה שלכם פועל בקונטיינרים של 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