במאמר הזה מוסבר איך ליצור קבוצת מופעי מכונה מנוהלים (MIG) שיוצרת פרוסת TPU עם כמה מארחים.
לפני שמתחילים
- כדאי לעיין במגבלות ליצירת קבוצות MIG עם מכונות TPU.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init - הגדרת אזור ותחום כברירת מחדל.
-
דרישות מוקדמות
לפני שיוצרים פרוסת TPU עם כמה מארחים, צריך לבצע את הפעולות הבאות:
בחירת גרסת ה-TPU: בוחרים את גרסת ה-TPU שמתאימה לעומס העבודה. במאמר גרסאות TPU מומלצות לפי סוגי עומסי עבודה תוכלו למצוא רשימה של גרסאות TPU לפי סוג עומס העבודה.
בחירת אפשרות צריכה של TPU: בוחרים את אפשרות הצריכה שהכי מתאימה לעומס העבודה, למשך הזמן ולצרכי העלות שלכם. במאמר הזה מפורטות אפשרויות הצריכה לפי גרסאות TPU.
בדיקת הזמינות של TPU במיקום המועדף: יחידות TPU זמינות באזורים ספציפיים של Cloud de Confiance by S3NS . כדי להשתמש בגרסת TPU, צריך לוודא שהיא זמינה באזור הרצוי. כאן מפורטת רשימת המיקומים של TPU.
מוודאים שיש לפרויקט מספיק מכסת TPU: אם אתם יוצרים פרוסת TPU עם כמה מארחים, עם מכונות וירטואליות על פי דרישה, Flex-start או Spot, אתם צריכים לוודא שיש לכם מספיק מכסת TPU זמינה באזור שבו אתם רוצים להשתמש. כדי ליצור פרוסת TPU עם כמה מארחים שמשתמשת בהזמנת TPU, לא צריך מכסת TPU כי המכסה נוצלה כשההזמנה נוצרה. במאמר מכסת TPU מפורטים שמות המכסות של TPU, ובמאמר הצגה וניהול של מכסות מוסבר איך רואים את המכסות.
בחירת טופולוגיה: בוחרים טופולוגיה שנתמכת בגרסת ה-TPU שנבחרה. טופולוגיית TPU – רשימה של הטופולוגיות שזמינות לכל גרסת TPU.
יצירת MIG עם פרוסות TPU בכמה מארחים
- יוצרים תבנית של הגדרות מכונה.
- יוצרים מדיניות עומסי עבודה.
- יוצרים את ה-MIG.
יצירת תבנית של הגדרות מכונה
הפקודה ליצירת תבנית של הגדרות מכונה תלויה באפשרות הצריכה שבה אתם משתמשים: על פי דרישה, Spot, מוגבלת להזמנה או התחלה גמישה (Flex-start). למידע נוסף על אפשרויות הצריכה, ראו מידע על מודלים של הקצאת VM.
יצירת תבנית של הגדרות מכונה ל-TPU VM על פי דרישה
הפקודה הבאה יוצרת תבנית של הגדרות מכונה באמצעות אפשרות הצריכה על פי דרישה:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה. -
MACHINE_TYPE: סוג המכונה של ה-TPU VM, לדוגמהct6e-standard-8t. -
IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל--image. מידע נוסף על קובצי אימג' של מערכת ההפעלה -
IMAGE_PROJECT: הפרויקט שמכיל את קובץ האימג' של מערכת ההפעלה. בתמונות TPU, הערך הואubuntu-os-accelerator-images.
יצירת תבנית של הגדרות מכונה ל-TPU VM במודל Spot
הפקודה הבאה יוצרת תבנית של הגדרות מכונה באמצעות אפשרות הצריכה של Spot:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=STOP \
--provisioning-model=SPOT \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT",
"instanceTerminationAction": "STOP"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה. -
MACHINE_TYPE: סוג המכונה של ה-TPU VM, לדוגמהct6e-standard-8t. -
IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל--image. מידע נוסף על קובצי אימג' של מערכת ההפעלה -
IMAGE_PROJECT: הפרויקט שמכיל את קובץ האימג' של מערכת ההפעלה. בתמונות TPU, הערך הואubuntu-os-accelerator-images.
יצירת תבנית של הגדרות מכונה ל-VM שקשור להזמנה של TPU
הפקודה הבאה יוצרת תבנית של הגדרות מכונה באמצעות אפשרות הצריכה שמוגבלת להזמנה:
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--reservation-affinity=specific \
--provisioning-model=reservation-bound \
--reservation=RESERVATION_NAME \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND",
"instanceTerminationAction": "DELETE"
},
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_NAME"
]
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה. -
MACHINE_TYPE: סוג המכונה של ה-TPU VM, לדוגמהct6e-standard-8t.
RESERVATION_NAME: השם של ההזמנה הספציפית לשימוש. בכל ההזמנות במצב "קיבולת", אפשר לטרגט בלוק או תת-בלוק על ידי ציון כתובת ה-URL להזמנת מקום באופן הבא:מציינים בלוק:
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAMEמציינים בלוק משנה:
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל--image. מידע נוסף על קובצי אימג' של מערכת ההפעלה זמין במאמר קובצי אימג' של מערכת ההפעלה.
IMAGE_PROJECT: הפרויקט שמכיל את קובץ האימג' של מערכת ההפעלה. בתמונות TPU, הערך הואubuntu-os-accelerator-images.
יצירת תבנית של הגדרות מכונה ל-TPU Flex-start VM
הפקודה הבאה יוצרת תבנית של הגדרות מכונה באמצעות אפשרות הצריכה "התחלה גמישה":
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--instance-termination-action=DELETE \
--provisioning-model=FLEX_START \
--max-run-duration=DURATION \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START",
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": "DURATION"
}
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה. -
MACHINE_TYPE: סוג המכונה של ה-TPU VM, לדוגמהct6e-standard-8t. -
DURATION: משך הזמן המקסימלי שבו ה-TPU VM יכול לפעול. ב-REST, מציינים את זה כמספר שניות (לדוגמה,3600לשעה אחת או604800ל-7 ימים). -
IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל--image. מידע נוסף על קובצי אימג' של מערכת ההפעלה -
IMAGE_PROJECT: הפרויקט שמכיל את קובץ האימג' של מערכת ההפעלה. בתמונות TPU, הערך הואubuntu-os-accelerator-images.
יצירת מדיניות עומס עבודה
צריך ליצור מדיניות עומס עבודה עם הפרמטר accelerator-topology (לדוגמה, 4x4, 8x8 או 4x4x4). הטופולוגיה של המאיץ מגדירה את ה-MIG כך שיתייחס למכונות כפרוסה אחת מחוברת.
הפקודה הבאה יוצרת מדיניות עומסי עבודה לטופולוגיה ספציפית:
gcloud
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
--type=high-throughput \
--accelerator-topology=TOPOLOGY \
--region=REGION
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "WORKLOAD_POLICY_NAME",
"workloadPolicy": {
"type": "HIGH_THROUGHPUT",
"acceleratorTopology": "TOPOLOGY"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
WORKLOAD_POLICY_NAME: השם של מדיניות עומסי העבודה. -
TOPOLOGY: הטופולוגיה של ה-TPU VM, לדוגמה4x4x8. למידע נוסף על הטופולוגיה של כל גרסת TPU, קראו את המאמר טופולוגיית TPU. -
REGION: האזור של מדיניות עומסי העבודה.
יצירת MIG
כדי ליצור קבוצת MIG אזורית שמכילה פרוסת TPU עם כמה מארחים, משתמשים בפקודה הבאה:
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE \
--default-action-on-vm-failure=do-nothing \
--workload-policy=WORKLOAD_POLICY_URL
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
MIG_NAME: השם של קבוצת ה-MIG. -
MIG_SIZE: הגודל של ה-MIG. -
INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שבה רוצים להשתמש כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:- לתבנית של הגדרות מכונה אזורית:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - לתבנית גלובלית של הגדרות מכונה:
INSTANCE_TEMPLATE_ID
- לתבנית של הגדרות מכונה אזורית:
-
ZONE: האזור של ה-MIG. -
WORKLOAD_POLICY_URL: כתובת ה-URL של מדיניות עומס העבודה שבה רוצים להשתמש כדי ליצור מכונות ב-MIG. לדוגמה:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
כדי ליצור קבוצת MIG אזורית שמכילה פרוסת TPU עם כמה מארחים, משתמשים בפקודה הבאה:
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--region=REGION \
--default-action-on-vm-failure=do-nothing \
--workload-policy=WORKLOAD_POLICY_URL \
--target-distribution-shape=any-single-zone \
--instance-redistribution-type=none
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
},
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS . -
MIG_NAME: השם של קבוצת ה-MIG. -
MIG_SIZE: מספר המכונות הווירטואליות ב-MIG. -
INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית של הגדרות מכונה שבה רוצים להשתמש כדי ליצור מכונות ב-MIG. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:- לתבנית של הגדרות מכונה אזורית:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - לתבנית גלובלית של הגדרות מכונה:
INSTANCE_TEMPLATE_ID
- לתבנית של הגדרות מכונה אזורית:
-
ZONE: האזור של ה-MIG. -
REGION: האזור של ה-MIG. -
WORKLOAD_POLICY_URL: כתובת ה-URL של מדיניות עומס העבודה שבה רוצים להשתמש כדי ליצור מכונות ב-MIG. לדוגמה:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
יצירת מכונות וירטואליות עם שמות בהתאמה אישית בקבוצת מכונות מנוהלת (MIG)
אפשר ליצור מכונות וירטואליות ב-MIG על ידי ציון שמות בהתאמה אישית לכל מכונה וירטואלית. האפשרות הזו שימושית לניפוי באגים ולוודא שהמכונות נוצרות בסדר מסוים.
קבוצות MIG שמכילות פרוסת TPU עם כמה מארחים משתמשות במדיניות של מצב Bulk של גודל היעד. כשיוצרים מכונות וירטואליות עם שמות בהתאמה אישית בקבוצת MIG כזו, חלים הכללים הבאים:
קודם צריך לוודא שאין מכונות וירטואליות בקבוצת ה-MIG. אם לקבוצת ה-VM יש מכונות וירטואליות, צריך לשנות את הגודל של קבוצת ה-VM לגודל היעד
0או ליצור קבוצת VM אחרת בגודל היעד0.אפשר להשתמש רק ב-API בארכיטקטורת REST כדי ליצור מכונות וירטואליות עם שמות בהתאמה אישית.
כדי ליצור מכונות וירטואליות עם שמות בהתאמה אישית, משתמשים באחת מהשיטות הבאות של API בארכיטקטורת REST:
לקבוצת MIG אזורית, משתמשים ב-
instanceGroupManagers.createInstances.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }לקבוצת MIG אזורית, משתמשים ב-
regionInstanceGroupManagers.createInstances.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME_1" }, { "name": "INSTANCE_NAME_2" }, ... ] }
מחליפים את ה-placeholders הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו נמצאת קבוצת ה-MIG. -
ZONE: האזור של ה-MIG. -
REGION: האזור של ה-MIG. -
INSTANCE_NAME_1,2,..: השמות של המכונות הווירטואליות שרוצים להוסיף לקבוצת ה-MIG שצוינה.