יצירת קבוצת MIG עם חלקי TPU של מארח יחיד

מסמך זה מתאר איך ליצור קבוצת מופעי מכונה מנוהלים (MIG) שיוצרת פרוסות TPU במארח יחיד. פרוסת TPU עם מארח יחיד ממפה למכונה וירטואלית (VM) אחת של TPU.

אפשר גם ליצור פרוסת TPU עם מארח יחיד כמכונת TPU עצמאית. מידע נוסף זמין במאמר יצירת TPU VM.

לפני שמתחילים

  • כדאי לעיין במגבלות ליצירת קבוצות MIG עם מכונות TPU.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    gcloud

    1. התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל.
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

דרישות מוקדמות

לפני שיוצרים פרוסת TPU במארח יחיד, צריך לבצע את הפעולות הבאות:

  1. בחירת גרסת ה-TPU: בוחרים את גרסת ה-TPU שמתאימה לעומס העבודה. במאמר גרסאות TPU מומלצות לפי סוגי עומסי עבודה תוכלו למצוא רשימה של גרסאות TPU לפי סוג עומס העבודה.

  2. בחירת אפשרות צריכה של TPU: בוחרים את אפשרות הצריכה שהכי מתאימה לעומס העבודה, למשך הזמן ולצרכי העלות שלכם. במאמר הזה מפורטות אפשרויות הצריכה לפי גרסאות TPU.

  3. בדיקת הזמינות של TPU במיקום המועדף: יחידות TPU זמינות באזורים ספציפיים של Google Cloud . כדי להשתמש בגרסת TPU, צריך לוודא שהיא זמינה באזור הרצוי. כאן מפורטת רשימת המיקומים של TPU.

  4. לוודא שיש לפרויקט מכסת TPU מספיקה: אם אתם יוצרים פרוסת TPU במארח יחיד עם מכונות וירטואליות על פי דרישה, Flex-start או Spot, אתם צריכים לוודא שיש לכם מכסת TPU מספיקה באזור שבו אתם רוצים להשתמש. כדי ליצור פרוסת TPU במארח יחיד שמשתמשת במקום שמור ל-TPU, לא צריך מכסת TPU כי המכסה נוצלה כשהמקום השמור נוצר. במאמר מכסת TPU מפורטים שמות המכסות של TPU, ובמאמר הצגה וניהול של מכסות מוסבר איך רואים את המכסות.

  5. בחירת טופולוגיה: בוחרים טופולוגיה שנתמכת בגרסת ה-TPU שנבחרה. טופולוגיית TPU – רשימה של הטופולוגיות שזמינות לכל גרסת TPU.

יצירת MIG עם כמה פרוסות TPU במארח יחיד

כדי ליצור כמה מכונות וירטואליות של TPU נפרדות ב-MIG:

  1. יוצרים תבנית של הגדרות מכונה.
  2. יוצרים את ה-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",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

מחליפים את ה-placeholders הבאים:

יצירת תבנית של הגדרות מכונה ל-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 הבאים:

יצירת תבנית של הגדרות מכונה ל-VM שקשור להזמנה של TPU

הפקודה הבאה יוצרת תבנית של הגדרות מכונה שמשתמשת באפשרות הצריכה reservation-bound:

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: מזהה הפרויקט ב- Google Cloud .
  • ‫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

הפקודה הבאה יוצרת תבנית של הגדרות מכונה שמשתמשת באפשרות הצריכה Flex-start:

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: מזהה הפרויקט ב- Google Cloud .
  • ‫INSTANCE_TEMPLATE_NAME: השם של התבנית של הגדרות המכונה.
  • ‫MACHINE_TYPE: סוג המכונה של ה-TPU VM (לדוגמה, ct6e-standard-8t).
  • ‫DURATION: משך ההפעלה המקסימלי של ה-TPU VM. ב-REST, מציינים את זה כמחרוזת שמכילה את מספר השניות ואחריו "s" (לדוגמה, 3600s לשעה אחת או 604800s ל-7 ימים).
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל --image. מידע נוסף על קובצי אימג' של מערכת ההפעלה
  • ‫IMAGE_PROJECT: הפרויקט שמכיל את קובץ האימג' של מערכת ההפעלה. בתמונות TPU, הערך הוא ubuntu-os-accelerator-images.

יצירת MIG

כדי ליצור קבוצת MIG אזורית שמכילה פרוסת TPU עם מארח יחיד, משתמשים בפקודה הבאה:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL"
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

מחליפים את ה-placeholders הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫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.

כדי ליצור קבוצת MIG אזורית שמכילה פרוסת TPU במארח יחיד, משתמשים בפקודה הבאה:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --region=REGION \
    --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,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "distributionPolicy": {
      "targetShape": "ANY_SINGLE_ZONE"
    },
    "updatePolicy": {
      "instanceRedistributionType": "NONE"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"

מחליפים את ה-placeholders הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫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.

יצירת מכונות וירטואליות עם שמות בהתאמה אישית בקבוצת מכונות מנוהלת (MIG)

אתם יכולים ליצור מכונות וירטואליות ב-MIG על ידי ציון שמות בהתאמה אישית לכל מכונה וירטואלית. האפשרות הזו שימושית לניפוי באגים ולוודא שהמכונות נוצרות בסדר מסוים.

gcloud

יוצרים מכונה וירטואלית עם שם בהתאמה אישית באמצעות הפקודה create-instance ומציינים את הדגל --instance. כדי ליצור כמה מכונות וירטואליות, חוזרים על הפקודה לכל מכונה וירטואלית. אחרת, צריך להשתמש ב-method של ה-API בארכיטקטורת REST כדי לציין כמה מכונות וירטואליות בבקשה אחת.

  • כדי ליצור קבוצת MIG אזורית, משתמשים בפקודה הבאה:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • כדי ליצור קבוצת MIG אזורית, משתמשים בפקודה הבאה:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

מחליפים את ה-placeholders הבאים:

  • ‫MIG_NAME: השם של קבוצת ה-MIG.
  • ‫ZONE: האזור של ה-MIG.
  • ‫REGION: האזור של ה-MIG.
  • ‫INSTANCE_NAME: השם של ה-VM שרוצים להוסיף ל-MIG שצוין.

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 שצוינה.

המאמרים הבאים