הגדרת הרשת והגישה ל-Cloud TPU
בדף הזה מוסבר איך להגדיר רשתות מותאמות אישית והגדרות גישה ל-Cloud TPU, כולל:
- ציון רשת ורשת משנה בהתאמה אישית
- הגדרת כתובות IP חיצוניות ופנימיות
- הפעלת גישת SSH ליחידות TPU
- צירוף חשבון שירות מותאם אישית ל-TPU
- הפעלת שיטות SSH בהתאמה אישית
- שימוש ב-VPC Service Controls
דרישות מוקדמות
לפני שמריצים את התהליכים האלה, צריך להתקין את Google Cloud CLI, ליצור Google Cloud פרויקט ולהפעיל את Cloud TPU API. הוראות מפורטות זמינות במאמר הגדרת סביבת Cloud TPU.
ציון רשת ורשת משנה בהתאמה אישית
אפשר גם לציין את הרשת ואת רשת המשנה שבהן רוצים להשתמש ב-TPU. אם לא מציינים את הרשת, ה-TPU יהיה ברשת default. רשת המשנה צריכה להיות באותו אזור שבו פועל ה-TPU.
יוצרים רשת שתואמת לאחד מהפורמטים התקפים הבאים:
compute/{version}/projects/{proj-id}/global/networks/{network}compute/{version}/projects/{proj-##}/global/networks/{network}projects/{proj-id}/global/networks/{network}projects/{proj-##}/global/networks/{network}global/networks/{network}{network}
מידע נוסף זמין במאמר בנושא יצירה וניהול של רשתות VPC.
יוצרים רשת משנה שתואמת לאחד מהפורמטים התקפים הבאים:
compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}regions/{region}/subnetworks/{subnetwork}{subnetwork}
מידע נוסף זמין במאמר בנושא יצירה וניהול של רשתות VPC.
יוצרים מכונת TPU וירטואלית ומציינים את הרשת המותאמת אישית ואת הרשת המשנית:
gcloud
כדי לציין את הרשת ואת רשת המשנה באמצעות
gcloudCLI, מוסיפים את הדגלים--networkו---subnetworkלבקשת היצירה:$ gcloud compute tpus tpu-vm create TPU_NAME \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=TPU_SOFTWARE_VERSION \ --network=NETWORK \ --subnetwork=SUBNETWORK
curl
כדי לציין את הרשת ואת רשת המשנה בקריאת
curl, מוסיפים את השדותnetworkו-subnetworkלגוף הבקשה:$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \ runtime_version:'tpu-vm-tf-2.17.1-pjrt', \ network_config: {network: 'NETWORK', subnetwork: 'SUBNETWORK', enable_external_ips: true}, \ shielded_instance_config: { enable_secure_boot: true }}" \ https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME
הסבר על כתובות IP חיצוניות ופנימיות
כשיוצרים מכונות וירטואליות של TPU, הן תמיד מגיעות עם כתובות IP פנימיות באופן אוטומטי. אם מכונות ה-TPU הווירטואליות נוצרות באמצעות ה-CLI של gcloud, כתובות IP חיצוניות נוצרות כברירת מחדל. אם הם נוצרו באמצעות ממשקי ה-API ל-REST של Cloud TPU (tpu.googleapis.com), לא מוקצית כתובת IP חיצונית כברירת מחדל. בשני המקרים אפשר לשנות את התנהגות ברירת המחדל.
כתובות IP חיצוניות
כשיוצרים TPU באמצעות gcloud, כתובות IP חיצוניות נוצרות כברירת מחדל לכל מכונת TPU וירטואלית.
אם רוצים ליצור מכונת TPU וירטואלית ללא כתובת IP חיצונית, משתמשים בדגל --internal-ips שמוצג בדוגמאות הבאות כשיוצרים את מכונת ה-TPU הווירטואלית.
gcloud
אם אתם משתמשים במשאבים בתור:
gcloud compute tpus queued-resources create your-queued-resource-id \ --node-id your-node-id \ --project your-project \ --zone us-central2-b \ --accelerator-type v4-8 \ --runtime-version tpu_software_version \ --internal-ips
אם משתמשים ב-Create Node API:
$ gcloud compute tpus tpu-vm create TPU_NAME \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu_software_version \ --internal-ips
curl
מגדירים את השדה enable_external_ips לערך false בגוף הבקשה:
$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \ runtime_version:'tpu-vm-tf-2.17.1-pjrt', \ network_config: {enable_external_ips: false}, \ shielded_instance_config: { enable_secure_boot: true }}" \ https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME
כדי ליצור מכונת TPU וירטואלית עם כתובת IP חיצונית כשמשתמשים ב-API בארכיטקטורת REST (tpu.googleapis.com), צריך להגדיר את השדה networkconfig.enable_external_ips בבקשה לערך true.
כתובות IP פנימיות
למכונות וירטואליות של TPU תמיד יש כתובות IP פנימיות. משתמשי Cloud TPU עשויים לרצות להגביל את מכונות ה-TPU הווירטואליות שלהם לכתובות IP פנימיות בלבד מכמה סיבות עיקריות:
אבטחה משופרת: אפשר לגשת לכתובות IP פנימיות רק ממשאבים באותה רשת VPC, מה שיכול לשפר את האבטחה על ידי הגבלת הגישה החיצונית למכונות הווירטואליות של TPU. זה חשוב במיוחד כשעובדים עם נתונים רגישים או כשרוצים להגביל את הגישה ל-TPU למשתמשים או למערכות ספציפיים ברשת.
חיסכון בעלויות: שימוש בכתובות IP פנימיות מאפשר להימנע מהעלויות שמשויכות לכתובות IP חיצוניות, שיכולות להיות משמעותיות במספר גדול של מכונות וירטואליות של TPU.
ביצועי רשת משופרים: כתובות IP פנימיות יכולות לשפר את ביצועי הרשת כי תעבורת הנתונים נשארת ברשת של Google, וכך נמנעת התקורה של ניתוב דרך האינטרנט הציבורי. זה רלוונטי במיוחד לעומסי עבודה של למידת מכונה בקנה מידה גדול, שדורשים תקשורת עם רוחב פס גבוה בין מכונות וירטואליות של TPU.
הפעלת שיטות SSH בהתאמה אישית
כדי להתחבר ל-TPU באמצעות SSH, צריך להפעיל כתובות IP חיצוניות ל-TPU או להפעיל גישה פרטית ל-Google לרשת המשנה שאליה מחוברות מכונות ה-TPU הווירטואליות.
הפעלת גישה פרטית ל-Google
יחידות TPU שאין להן כתובות IP חיצוניות יכולות להשתמש בגישה פרטית ל-Google כדי לגשת לשירותים ולממשקי ה-API של Google. מידע נוסף על הפעלת גישה פרטית ל-Google זמין במאמר הגדרת גישה פרטית ל-Google.
אחרי שמגדירים את הגישה הפרטית ל-Google, מתחברים ל-VM באמצעות SSH.
צירוף חשבון שירות מותאם אישית
לכל מכונת TPU וירטואלית יש חשבון שירות משויך שמשמש אותה לשליחת בקשות API בשמכם. מכונות וירטואליות של TPU משתמשות בחשבון השירות הזה כדי לקרוא לממשקי Cloud TPU API ולגשת ל-Cloud Storage ולשירותים אחרים. כברירת מחדל, מכונת ה-TPU הווירטואלית משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
חשבון השירות צריך להיות מוגדר באותו פרויקט Google Cloud שבו אתם יוצרים את TPU VM. לחשבונות שירות בהתאמה אישית שמשמשים למכונות וירטואליות של TPU צריך להיות התפקיד TPU Viewer כדי לבצע קריאה ל-Cloud TPU API. אם הקוד שפועל במכונה הווירטואלית של TPU קורא לשירותים אחרים, צריך להקצות לו את התפקידים הנדרשים כדי לגשת לשירותים האלה. Google Cloud
מידע נוסף על חשבונות שירות זמין במאמר חשבונות שירות.
כדי לציין חשבון שירות בהתאמה אישית, משתמשים בפקודות הבאות.
gcloud
משתמשים בדגל --service-account כשיוצרים TPU:
$ gcloud compute tpus tpu-vm create TPU_NAME \ --zone=us-central2-b \ --accelerator-type=TPU_TYPE \ --version=tpu-vm-tf-2.17.1-pjrt \ --service-account=SERVICE_ACCOUNT
curl
מגדירים את השדה service_account בגוף הבקשה:
$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \ runtime_version:'tpu-vm-tf-2.17.1-pjrt', \ network_config: {enable_external_ips: true}, \ shielded_instance_config: { enable_secure_boot: true }}" \ service_account: {email: 'SERVICE_ACCOUNT'} \ https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME
הפעלת שיטות SSH בהתאמה אישית
רשת ברירת המחדל מאפשרת גישת SSH לכל מכונות ה-TPU הווירטואליות. אם אתם משתמשים ברשת שונה מרשת ברירת המחדל או משנים את הגדרות רשת ברירת המחדל, אתם צריכים להוסיף כלל לחומת האש כדי להפעיל במפורש את הגישה ל-SSH:
$ gcloud compute firewall-rules create \ --network=NETWORK allow-ssh \ --allow=tcp:22
שילוב עם VPC Service Controls
בעזרת VPC Service Controls של Cloud TPU אפשר להגדיר אזורי אבטחה מסביב למשאבי Cloud TPU ולשלוט בתנועת הנתונים מעבר לגבולות האזור. מידע נוסף על VPC Service Controls זמין במאמר סקירה כללית על VPC Service Controls. מידע על המגבלות בשימוש ב-Cloud TPU עם VPC Service Controls זמין במאמר מוצרים נתמכים ומגבלות.