יצירת Flex-start VM

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

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

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

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

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

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

    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 .

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות ליצירת מכונה וירטואלית עצמאית עם תשלום גמיש לפי שימוש, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין מכונות של Compute ‏ (v1) (roles/compute.instanceAdmin.v1) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

כדי ליצור מכונת Flex-start עצמאית, נדרשות ההרשאות הבאות:

  • compute.instances.create בפרויקט
  • כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM)‏: ‫compute.images.useReadOnly בקובץ אימג'
  • כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית: ‫compute.snapshots.useReadOnly בקובץ snapshot
  • כדי להשתמש בתבנית של מכונה ליצירת המכונה הווירטואלית: compute.instanceTemplates.useReadOnly בתבנית של המכונה
  • כדי לציין רשת משנה למכונה הווירטואלית: ‫compute.subnetworks.use בפרויקט או ברשת המשנה שנבחרה
  • כדי לציין כתובת IP סטטית למכונה הווירטואלית: ‫compute.addresses.use בפרויקט
  • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC: ‫compute.subnetworks.useExternalIp בפרויקט או ברשת המשנה שנבחרה
  • כדי להקצות רשת מדור קודם למכונה הווירטואלית: ‫compute.networks.use בפרויקט
  • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם: ‫compute.networks.useExternalIp בפרויקט
  • כדי להגדיר מטא-נתונים של המכונה הווירטואלית: ‫compute.instances.setMetadata בפרויקט
  • כדי להגדיר תגים למכונה הווירטואלית: ‫compute.instances.setTags במכונה הווירטואלית
  • כדי להגדיר תוויות למכונה הווירטואלית: ‫compute.instances.setLabels במכונה הווירטואלית
  • כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית: ‫compute.instances.setServiceAccount במכונה הווירטואלית
  • כדי ליצור דיסק חדש למכונה הווירטואלית: ‫compute.disks.create בפרויקט
  • כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה: ‫compute.disks.use בדיסק
  • כדי לצרף דיסק קיים במצב קריאה-בלבד: ‫compute.disks.useReadOnly בדיסק

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

יצירת Flex-start VM

אם אתם רוצים ליצור Flex-start VM שמשתמשת בסוג מכונה שונה מ-A2,‏ G4,‏ G2 או N1, תוכלו להיעזר במאמרים הבאים:

כדי ליצור Flex-start VM מסוג A2 או G2 שמציין מדיניות למיקום קומפקטי לזמן אחזור מינימלי ברשת, צריך להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST. אחרת, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף Create an instance במסוף Google Cloud .

    כניסה לדף Create an instance

  2. בחלונית Machine configuration (הגדרות המכונה), מבצעים את הפעולות הבאות:

    1. בשדה Name, מזינים שם ל-Flex-start VM.

    2. מציינים את האזור והתחום שבהם רוצים ליצור את המכונה הווירטואלית. אפשר לציין רק אזור ואזור זמינות נתמכים לסוגי המכונות A2,‏ G4,‏ G2 או N1.

    3. בהתאם לעומס העבודה שרוצים להריץ, מציינים סוג מכונה באופן הבא:

      • כדי לציין סוג מכונה וירטואלית שעברה אופטימיזציה למאיץ, מבצעים את הפעולות הבאות:

        1. לוחצים על הכרטיסייה GPUs (מעבדים גרפיים).

        2. ברשימה GPU type (סוג ה-GPU), בוחרים סוג GPU, חוץ מ-NVIDIA GB200 192GB.

        3. ברשימה Number of GPUs (מספר יחידות ה-GPU), בוחרים את מספר יחידות ה-GPU שרוצים לצרף למכונה הווירטואלית.

        4. אופציונלי: אם דגם ה-GPU שלכם תומך בתחנות עבודה וירטואליות (vWS) של NVIDIA RTX לעומסי עבודה של גרפיקה, ואתם מתכננים להריץ עומסי עבודה עתירי גרפיקה, בוחרים באפשרות הפעלת תחנת עבודה וירטואלית (NVIDIA GRID).

      • כדי לציין סוג מכונה H4D:

        1. לוחצים על הכרטיסייה Compute optimized (אופטימיזציה של מחשוב).

        2. בעמודה סדרה, בוחרים באפשרות H4D.

  3. בתפריט הניווט, לוחצים על מתקדם. בחלונית Advanced שמופיעה, מבצעים את הפעולות הבאות:

    1. בקטע Provisioning model, ברשימה VM provisioning model, בוחרים באפשרות Flex-start.

    2. בשדה Enter number of hours (הזנת מספר השעות) מזינים את משך הזמן המקסימלי שבו רוצים שהמכונה הווירטואלית תפעל. הערך צריך להיות בין 0.01 (0.01 שעות או 36 שניות) לבין 168 (168 שעות או שבעה ימים).

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

      • אם העומס שלכם מחייב אתכם ליצור את מכונת ה-VM באזור ספציפי, אתם צריכים לציין משך זמן בין 90 שניות לבין שעתיים. ככל שהמשך ארוך יותר, כך גדל הסיכוי להשיג משאבים.

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

    4. בשדה On VM termination, בוחרים אם להפסיק את הפעילות של Flex-start VM או למחוק אותה בסוף משך ההפעלה:

      • כדי למחוק את המכונה הווירטואלית, לוחצים על מחיקה.

      • כדי לעצור את מכונת ה-VM, בוחרים באפשרות עצירה.

  4. כדי ליצור את Flex-start VM, לוחצים על Create.

gcloud

כדי ליצור מכונה וירטואלית מסוג A2,‏ G4,‏ G2 או N1 Flex-start, משתמשים בפקודה gcloud compute instances create עם הדגלים הבאים:

  • הדגל --request-valid-for-duration

  • הדגל --provisioning-model=FLEX_START

  • הדגל --instance-termination-action

  • הדגל --max-run-duration

  • הדגל --maintenance-policy=TERMINATE

כדי ליצור Flex-start VM, מריצים את הפקודה הבאה:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE

מחליפים את מה שכתוב בשדות הבאים:

  • VM_NAME: השם של ה-VM החדש.

  • MACHINE_TYPE: סוג המכונה לשימוש ב-Flex-start VM. אם מציינים סוג מכונה G4,‏ G2 או N1, צריך לשים לב לנקודות הבאות:

    • בסוגי מכונות G4 או G2, אפשר לציין תחנות עבודה וירטואליות (vWS) של NVIDIA RTX לשימוש בעומסי עבודה שדורשים הרבה גרפיקה. כדי לעשות זאת, מוסיפים את הדגל --accelerator לפקודה באופן הבא:

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=VWS_ACCELERATOR_TYPE
      

      מחליפים את מה שכתוב בשדות הבאים:

      • VWS_ACCELERATOR_COUNT: מספר ה-NVIDIA RTX vWS שנדרש לעומס העבודה. המספר הזה צריך להיות זהה למספר ה-GPU שמצורפים לסוג המכונה G4 או G2 שבו רוצים להשתמש.

      • VWS_ACCELERATOR_TYPE: סוג המאיץ של NVIDIA RTX vWS שבו רוצים להשתמש. מציינים אחד מהערכים הבאים:

        • לסוגי מכונות G4: nvidia-rtx-pro-6000-vws

        • לסוגי מכונות G2: nvidia-l4-vws

    • בסוגי מכונות N1, צריך לציין את מספר יחידות ה-GPU ואת הסוג שלהן כדי לצרף אותן למכונה הווירטואלית. אחרת, יצירת המכונה הווירטואלית תיכשל. כדי לצרף GPU למכונה וירטואלית מסוג N1, מוסיפים את הדגל --accelerator לפקודה באופן הבא:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      מחליפים את מה שכתוב בשדות הבאים:

  • ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית. אפשר לציין רק אזור נתמך לסוגי מכונות A2,‏ G4,‏ G2 או N1.

  • VALID_FOR_DURATION: הזמן המקסימלי להמתנה להקצאת המשאבים המבוקשים. הערך צריך להיות בפורמט של מספר הימים, השעות, הדקות או השניות, ואחריו d, h, m ו-s בהתאמה. לדוגמה, מציינים 30m ל-30 דקות או 1h2m3s לשעה, שתי דקות ושלוש שניות. בהתאם לדרישות האזוריות של עומס העבודה, מציינים את אחד מהמשכים הבאים כדי להגדיל את הסיכויים לכך שבקשת יצירת ה-VM תצליח:

    • אם עומס העבודה מחייב אתכם ליצור את המכונה הווירטואלית באזור ספציפי, אתם צריכים לציין משך זמן בין 90 שניות (90s) לשעתיים (2h). ככל שמשך הזמן ארוך יותר, כך גדל הסיכוי שתקבלו משאבים.

    • אם המכונה הווירטואלית יכולה לפעול בכל תחום באזור, צריך לציין משך של אפס שניות (0s). הערך הזה מציין ש-Compute Engine יקצה משאבים רק אם הם זמינים באופן מיידי. אם בקשת היצירה נכשלת כי המשאבים לא זמינים, צריך לנסות שוב את הבקשה באזור אחר.

  • TERMINATION_ACTION: האם לעצור או למחוק את המכונה הווירטואלית (VM) בסיום משך ההרצה שלה. מציינים אחד מהערכים הבאים:

    • כדי לעצור את המכונה הווירטואלית: STOP

    • כדי למחוק את המכונה הווירטואלית: DELETE

  • RUN_DURATION: הזמן המקסימלי שהמכונה הווירטואלית פועלת לפני שמערכת Compute Engine מפסיקה או מוחקת אותה באופן אוטומטי. צריך לעצב את הערך כמספר הימים, השעות, הדקות או השניות, ואחריו d, h, m ו-s בהתאמה. הערך צריך להיות בין 10 דקות לשבעה ימים.

אם רוצים להחיל מדיניות למיקום קומפקטי על מכונת Flex-start VM מסוג A2 או G2, צריך לכלול את הדגל --resource-policies בפקודה:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --resource-policies=POLICY_NAME

מחליפים את POLICY_NAME בשם של מדיניות למיקום קומפקטי קיימת. אפשר ליצור Flex-start VM רק באותו אזור שבו נמצאת מדיניות המיקום.

REST

כדי ליצור מכונה וירטואלית מסוג A2,‏ G4,‏ G2 או N1 עם תשלום לפי שימוש, שולחים בקשת POST אל ה-method‏ instances.insert. בגוף הבקשה, כוללים את השדות הבאים:

  • השדה params.requestValidForDuration.

  • השדה scheduling.provisioningModel מוגדר ל-FLEX_START.

  • השדה scheduling.instanceTerminationAction.

  • השדה scheduling.maxRunDuration.

  • השדה scheduling.onHostMaintenance מוגדר ל-TERMINATE.

כדי ליצור Flex-start VM, שולחים בקשת POST באופן הבא:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

  • ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית. אפשר לציין רק אזור נתמך לסוגי מכונות A2,‏ G4,‏ G2 או N1.

  • VM_NAME: השם של ה-VM החדש.

  • MACHINE_TYPE: סוג המכונה לשימוש ב-Flex-start VM. אם מציינים סוג מכונה G4,‏ G2 או N1, כדאי לשים לב לנקודות הבאות:

    • בסוגי מכונות G4 או G2, אפשר לציין תחנות עבודה וירטואליות (vWS) של NVIDIA RTX לשימוש בעומסי עבודה שדורשים הרבה גרפיקה. כדי לעשות זאת, כוללים את השדה guestAccelerators בגוף הבקשה באופן הבא:

      "guestAccelerators": [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
        }
      ]
      

      מחליפים את מה שכתוב בשדות הבאים:

      • VWS_ACCELERATOR_COUNT: מספר ה-NVIDIA RTX vWS שנדרש לעומס העבודה. המספר הזה צריך להיות זהה למספר ה-GPU שמצורפים לסוג המכונה G4 או G2 שבו רוצים להשתמש.

      • VWS_ACCELERATOR_TYPE: סוג המאיץ של NVIDIA RTX vWS שרוצים להשתמש בו. מציינים אחד מהערכים הבאים:

        • לסוגי מכונות G2: nvidia-l4-vws
        • לסוגי מכונות G4: nvidia-rtx-pro-6000-vws
    • בסוגי מכונות N1, צריך לציין את מספר יחידות ה-GPU ואת הסוג שלהן כדי לצרף אותן למכונה הווירטואלית. אחרת, יצירת המכונה הווירטואלית תיכשל. כדי לצרף GPU למכונה וירטואלית מסוג N1, צריך לכלול את השדה guestAccelerators בגוף הבקשה באופן הבא:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

      מחליפים את מה שכתוב בשדות הבאים:

  • IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה, לדוגמה, debian-cloud. מידע נוסף על פרויקטים של תמונות נתמכות זמין במאמר בנושא תמונות ציבוריות.

  • IMAGE: מציינים אחת מהאפשרויות הבאות:

    • גרסה ספציפית של תמונת מערכת ההפעלה – לדוגמה, debian-12-bookworm-v20240617.

    • משפחת תמונות, שצריכה להיות בפורמט family/IMAGE_FAMILY. הערך הזה מציין שימוש בקובץ האימג' העדכני ביותר של מערכת ההפעלה שלא הוצא משימוש. לדוגמה, אם מציינים family/debian-12, נעשה שימוש בגרסה העדכנית ביותר במשפחת קובצי האימג' של Debian 12. מידע נוסף על השימוש בסטים של תמונות זמין במאמר בנושא שיטות מומלצות לשימוש בסטים של תמונות.

  • VALID_FOR_DURATION: הזמן המקסימלי בשניות להמתנה להקצאת המכונה הווירטואלית. בהתאם לדרישות האזוריות של עומס העבודה, מציינים את אחד משני משכי הזמן הבאים כדי להגדיל את הסיכויים שהבקשה ליצירת מכונה וירטואלית תצליח:

    • אם עומס העבודה מחייב אתכם ליצור את המכונה הווירטואלית באזור ספציפי, אתם צריכים לציין משך זמן בין 90 שניות (90) לשעתיים (7200). ככל שמשך הזמן ארוך יותר, כך גדל הסיכוי שתקבלו משאבים.

    • אם המכונה הווירטואלית יכולה לפעול בכל תחום באזור, צריך לציין משך של אפס שניות (0). הערך הזה מציין ש-Compute Engine יקצה משאבים רק אם הם זמינים באופן מיידי. אם בקשת היצירה נכשלת כי המשאבים לא זמינים, צריך לנסות שוב את הבקשה באזור אחר.

  • TERMINATION_ACTION: האם לעצור או למחוק את המכונה הווירטואלית (VM) בסיום משך ההרצה שלה. מציינים אחד מהערכים הבאים:

    • כדי לעצור את המכונה הווירטואלית: STOP

    • כדי למחוק את המכונה הווירטואלית: DELETE

  • RUN_DURATION: הזמן המקסימלי, בשניות, שהמכונה הווירטואלית פועלת לפני ש-Compute Engine עוצר או מוחק אותה באופן אוטומטי. הערך צריך להיות בין 600 (600 שניות, או 10 דקות) לבין 604800 (604,800 שניות, או שבעה ימים).

אם רוצים להחיל מדיניות למיקום קומפקטי על מכונה וירטואלית מסוג A2 או G2 עם Flex-start VM, צריך לכלול את השדה resourcePolicies בבקשה:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

מחליפים את מה שכתוב בשדות הבאים:

  • REGION: האזור שבו קיימת מדיניות למיקום קומפקטי. אפשר ליצור Flex-start VM רק באותו אזור שבו נמצאת מדיניות המיקום.

  • POLICY_NAME: השם של מדיניות המיקום הקומפקטי.

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

נסו בעצמכם

אנחנו ממליצים למשתמשים חדשים ב-Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של Compute Engine בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300 $להרצה, לבדיקה ולפריסה של עומסי העבודה.

אני רוצה לנסות את Compute Engine בחינם