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

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

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

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

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

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

    gcloud

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

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

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

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

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

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

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

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

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

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

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

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

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

  1. יוצרים תבנית של הגדרות מכונה.
  2. יוצרים את ה-MIG.

יצירת תבנית של הגדרות מכונה

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

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה.
  • ‫MACHINE_TYPE: סוג המכונה של מכונת ה-TPU (לדוגמה, ct6e-standard-8t).
  • ‫IMAGE_FAMILY: משפחת תמונות מערכת ההפעלה של ה-TPU VM. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל --image. מידע נוסף על תמונות של מערכת ההפעלה זמין במאמר תמונות של מערכת ההפעלה.
  • ‫IMAGE_PROJECT: הפרויקט שמכיל את תמונת מערכת ההפעלה. בתמונות TPU, הערך הוא ubuntu-os-accelerator-images.

יצירת תבנית של הגדרות מכונה עבור VM במודל Spot מסוג TPU

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

יצירת תבנית של הגדרות מכונה עבור מכונה וירטואלית שמשויכת למקום שמור של 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. אם רוצים להתקין גרסה ספציפית של מערכת ההפעלה, משתמשים בדגל --image. מידע נוסף על תמונות של מערכות הפעלה זמין במאמר בנושא תמונות של מערכות הפעלה.

  • ‫IMAGE_PROJECT: הפרויקט שמכיל את תמונת מערכת ההפעלה. בתמונות TPU, הערך הוא ubuntu-os-accelerator-images.

יצירת תבנית של מכונה וירטואלית עם TPU Flex-start

הפקודה הבאה יוצרת תבנית של הגדרות מכונה שמשתמשת באפשרות הצריכה 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 הווירטואלית (לדוגמה, ct6e-standard-8t).
  • ‫DURATION: משך ההרצה המקסימלי של מכונת ה-TPU הווירטואלית. ב-REST, מציינים את הערך הזה כמחרוזת שמכילה את מספר השניות ואחריה האות s (לדוגמה, 3600s ל-1 שעה או 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: השם של המכונה הווירטואלית שרוצים להוסיף לקבוצת ה-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 שצוינה.

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