יצירת מכונה וירטואלית שעברה אופטימיזציה באמצעות AI עם A4X

במאמר הזה מוסבר איך ליצור מכונות וירטואליות (VM) עצמאיות מסוג A4X. מידע נוסף על סוג המכונה הזה זמין במאמר A4X.

במאמר סקירה כללית על אפשרויות הפריסה תוכלו לקרוא על דרכים נוספות ליצירת מכונות וירטואליות או אשכולות.

מגבלות

כשיוצרים מכונה וירטואלית עצמאית מסוג A4X, חלות המגבלות הבאות:

כדאי גם לעיין בהגבלות על כללי מדיניות של מיקום.

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

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

  1. בחירת אפשרות צריכה: אפשרות הצריכה שתבחרו תקבע איך תקבלו את משאבי ה-GPU ותשתמשו בהם. מידע נוסף זמין במאמר בחירת אפשרות צריכה.
  2. השגת קיבולת: התהליך להשגת קיבולת שונה בכל אפשרות צריכה. במאמר סקירה כללית על קיבולת מוסבר איך מקבלים קיבולת לאפשרות הצריכה שבחרתם.

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

המסוף

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

gcloud

מפעילים את Cloud Shell במסוף Google Cloud .

הפעלת Cloud Shell

בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

REST

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

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

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

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

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

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

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

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

כדי ליצור מכונות וירטואליות, צריך את ההרשאות הבאות:

  • ‫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 בדיסק

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

יסודות A4X

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

מכונת A4X
מכונת A4X היא סוג מכונה יחיד של A4X שמחוברים אליו 4 מעבדי GPU.
בלוק משנה
בלוק משנה הוא היחידה הבסיסית של קיבולת A4X. ב-A4X, בלוק משנה מורכב מ-18 מכונות A4X (‏72 יחידות GPU). המכונות האלה יוצרות דומיין NVLink ומחוברות באמצעות מערכת NVLink עם כמה צמתים. כדי ליצור בלוק משנה של A4X, צריך להחיל מדיניות למיקום קומפקטי שמציינת טופולוגיה של 1x72.
חסימה
בלוק A4X מורכב מ-25 בלוקי משנה (דומיינים של NVLink), עם עד 450 מכונות A4X‏ (1,800 מעבדי GPU). תת-הבלוקים מיושרים בארכיטקטורת rail-aligned כדי לאפשר התאמה יעילה לעומס. כל בלוק משנה דורש מדיניות למיקום קומפקטי. לכן, לבלוק A4X אחד אפשר ליצור 25 כללי מדיניות למיקום קומפקטי.

בטבלה הבאה מפורטות אפשרויות הטופולוגיה שנתמכות במכונות A4X:

טופולוגיה (gpuTopology) מספר יחידות ה-GPU מספר המופעים
1x72 72 18

סקירה כללית

כדי ליצור מכונה עם סוג המכונה A4X:

  1. יצירת רשתות VPC
  2. יצירת מדיניות למיקום קומפקטי
  3. יצירת מכונה
  4. התקנת מנהלי התקנים של GPU
  5. אופציונלי: הפעלת מצב GPU עם כמה מופעים במקביל של NVIDIA

יצירת רשתות VPC

כדי להגדיר את הרשת לסוגי מכונות A4X, יוצרים שלוש רשתות VPC לממשקי הרשת הבאים:

  • ‫2 רשתות VPC רגילות לממשקי הרשת (NIC) של gVNIC. לאחר מכן, כרטיסי ה-NIC משתמשים ברשתות ה-VPC האלה לתקשורת בין מארחים.
  • רשת VPC אחת עם פרופיל הרשת RoCE לכרטיסי ה-NIC מסוג CX-7 כש יוצרים כמה בלוקי משנה של A4X. ברשת ה-VPC של RoCE למכונות וירטואליות צריכות להיות 4 רשתות משנה, אחת לכל CX-7 NIC. כרטיסי הרשת האלה משתמשים ב-RDMA over Converged Ethernet‏ (RoCE), שמספק תקשורת עם רוחב פס גבוה וזמן אחזור קצר, שחיונית להרחבה אופקית (scale out) לכמה בלוקי משנה של A4X.

למידע נוסף על סידור NIC, ראו בדיקת רוחב הפס של הרשת וסידור NIC.

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

מדריכי הוראות

כדי ליצור את הרשתות, אתם יכולים להשתמש בהוראות הבאות:

ברשתות ה-VPC האלה, מגדירים ערך גדול יותר ליחידת השידור המקסימלית (MTU). במכונות מסוג A4X, הערך המומלץ של MTU הוא 8896 בייטים. כדי לבדוק את הגדרות ה-MTU המומלצות לסוגי מכונות אחרים של GPU, קראו את המאמר הגדרות MTU לסוגי מכונות של GPU.

Script

כדי ליצור את הרשתות, מבצעים את השלבים הבאים.

ברשתות ה-VPC האלה, מגדירים ערך גדול יותר ליחידת ההעברה המקסימלית (MTU). במכונות מסוג A4X, הערך המומלץ של MTU הוא 8896 בייטים. כדי לבדוק את הגדרות ה-MTU המומלצות לסוגי מכונות אחרים של GPU, קראו את המאמר הגדרות MTU לסוגי מכונות של GPU.

  1. כדי ליצור רשתות VPC רגילות ל-gVNIC, משתמשים בסקריפט הבא:

    
    
        #!/bin/bash
    
        # Create regular VPC networks and subnets for the gVNICs
        for N in $(seq 0 1); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
            --subnet-mode=custom \
            --mtu=8896
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --region=REGION \
            --range=192.168.$N.0/24
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --action=ALLOW \
            --rules=tcp:0-65535,udp:0-65535,icmp \
            --source-ranges=192.168.0.0/16
        done
    
        # Create SSH firewall rules
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
        # Assumes that an external IP is only created for vNIC 0
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
    
          
  2. אם אתם צריכים כמה בלוקי משנה של A4X, השתמשו בסקריפט הבא כדי ליצור את רשת ה-VPC של RoCE למכונות וירטואליות (roce) ואת תת-הרשתות לארבעת כרטיסי ה-NIC של CX-7 בכל מכונת A4X.

    
    
        #!/bin/bash
    
        # List and make sure network profiles exist in the machine type's zone
        gcloud compute network-profiles list --filter "location.name=ZONE"
    
        # Create network for RDMA NICs
        gcloud compute networks create RDMA_NAME_PREFIX-mrdma \
          --network-profile=ZONE-vpc-roce \
          --subnet-mode custom \
          --mtu=8896
    
        # Create subnets
        for N in $(seq 0 3); do
          gcloud compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
            --network=RDMA_NAME_PREFIX-mrdma \
            --region=REGION \
            --range=192.168.$((N+2)).0/24 # offset to avoid overlap with gVNICs
        done
    
    
          
  3. מחליפים את מה שכתוב בשדות הבאים:

    • ‫GVNIC_NAME_PREFIX: התחילית של השם בהתאמה אישית, שמשמשת לרשתות ה-VPC הרגילות ולרשתות המשנה של ה-gVNIC.
    • ‫RDMA_NAME_PREFIX: התחילית של השם בהתאמה אישית של רשת ה-VPC של RoCE למכונות וירטואליות (roce) ותת-רשתות לכרטיסי ה-NIC של CX-7.
    • ‫ZONE: מציינים אזור שבו סוג המכונה שרוצים להשתמש בה זמין, למשל us-central1-a. למידע על אזורים, קראו את המאמר זמינות של GPU לפי אזורים ותחומים.
    • ‫REGION: האזור שבו רוצים ליצור את רשתות המשנה. האזור הזה חייב להתאים לאזור שצוין. לדוגמה, אם האזור הוא us-central1-a, אז האזור הוא us-central1.
    • ‫IP_RANGE: טווח כתובות ה-IP שמשמש לכללי חומת האש של SSH.
  4. אופציונלי: כדי לוודא שמשאבי רשת ה-VPC נוצרו בהצלחה, בודקים את הגדרות הרשת במסוף Google Cloud :
    1. במסוף Google Cloud , נכנסים לדף רשתות VPC.

      כניסה לדף VPC networks

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

יצירת מדיניות למיקום קומפקטי

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

gcloud

כדי ליצור מדיניות למיקום קומפקטי, משתמשים בפקודה gcloud compute resource-policies create group-placement:

gcloud compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --gpu-topology=1x72 \
    --region=REGION

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

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

REST

כדי ליצור מדיניות למיקום קומפקטי, שולחים בקשת POST ל-method‏ resourcePolicies.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "gpuTopology": "1x72"
    }
  }

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

  • PROJECT_ID: מזהה הפרויקט.
  • ‫POLICY_NAME: השם של המדיניות למיקום קומפקטי.
  • ‫REGION: האזור שבו רוצים ליצור את המדיניות למיקום קומפקטי. מציינים את האזור שמכיל את התחום שבו מתכננים ליצור מכונות, ומוודאים שסוג המכונה שרוצים להשתמש בו זמין באזור הזה. למידע על אזורים, קראו את המאמר זמינות של GPU לפי אזורים ותחומים.

יצירת מכונה מסוג A4X

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

  • יצירת מכונה בדומיין NVLink עם 72 מעבדי GPU (טופולוגיית 1x72): האפשרות הזו מתאימה במיוחד לעומסי עבודה של אימון מבוזר בקנה מידה גדול, כוונון והסקת מסקנות בכמה צמתים, שדורשים תקשורת בין מעבדי GPU עם רוחב פס גבוה וזמן אחזור קצר, בעד 18 מכונות (72 מעבדי GPU) במארג NVLink עם כמה צמתים. צריך להשתמש במדיניות למיקום קומפקטי.
  • יצירת מכונה עצמאית עם 4 מעבדי GPU‏ (NVL4): האפשרות הזו מתאימה לעומסי עבודה בצומת יחיד, להסקת מסקנות ממודלים קטנים יותר, לעיבוד באצווה ולפיתוח אינטראקטיבי שמתאימים ל-4 מעבדי GPU ודורשים רק קישור בין צמתים באמצעות NVLink. כדי לחלק בלוק משנה של הזמנה למכונות וירטואליות עצמאיות, צריך לטרגט בלוק משנה ספציפי. לא צריך מדיניות למיקום קומפקטי.

יצירת מכונה בדומיין NVLink עם 72 יחידות GPU (טופולוגיית 1x72)

כדי לקבל טופולוגיית GPU של 1x72, צריך ליצור 18 מכונות A4X. כשיוצרים את המכונות, מחילים את המדיניות למיקום קומפקטי שמציינת את השדה gpuTopology. החלת המדיניות מבטיחה ש-Compute Engine ייצור את כל 18 המכונות מסוג A4X בבלוק משנה אחד כדי להשתמש בדומיין NVLink. אם בבלוק המשנה אין מספיק קיבולת למכונה מסוג A4X, הבקשה ליצירת המכונה נכשלת.

כדי ליצור מכונת A4X שמתחברת ל-18 המכונות בדומיין NVLink, צריך להחיל את המדיניות למיקום קומפקטי ולהגדיר רשת RDMA עם multi-NIC.

כדי ליצור מכונה מסוג A4X, בוחרים באחת מהאפשרויות הבאות.

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

gcloud

כדי ליצור את מכונת A4X, משתמשים ב פקודה gcloud compute instances create.

מכונות A4X תומכות בסוגי ההזמנות הבאים:

  • מקומות שמורים לעתיד בגושי קיבולת
  • מקומות שמורים לעתיד במצב תזמון

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

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-highgpu-4g \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address 
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

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

  • ‫INSTANCE_NAME: השם של מכונת A4X.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. צריך להשתמש באזור שנמצא באותו אזור של המדיניות למיקום קומפקטי. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫GVNIC_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC הרגילות ואת רשתות המשנה שמשתמשות ב-gVNIC.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION: שם ההזמנה, בלוק או בלוק משנה בתוך הזמנה. כדי לראות את שם ההזמנה או את הבלוקים הזמינים, עיינו במאמר הצגת הקיבולת השמורה. בהתאם לדרישות שלכם לגבי מיקום המכונה, בוחרים באחת מהאפשרויות הבאות:
    • כדי ליצור מכונות A4X בכל בלוק:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • כדי ליצור מכונות A4X בבלוק ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • כדי ליצור מכונות A4X בבלוק משנה ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • ‫TERMINATION_ACTION: אם המכונה של A4X תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסוף תקופת שמירת המקום.

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

REST

כדי ליצור את מכונת A4X, שולחים בקשת POST ל-method‏ instances.insert.

מכונות A4X תומכות בסוגי ההזמנות הבאים:

  • מקומות שמורים לעתיד בגושי קיבולת
  • מקומות שמורים לעתיד במצב תזמון

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-highgpu-4g",
  "name": "INSTANCE_NAME",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
     ],
  "reservationAffinity": {
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values": [
      "RESERVATION"
    ]
  },
  "scheduling": {
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

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

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את מכונת A4X.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. צריך להשתמש באזור שנמצא באותו אזור של המדיניות למיקום קומפקטי. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫INSTANCE_NAME: השם של מכונת A4X.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫NETWORK_PROJECT_ID: מזהה הפרויקט של הרשת.
  • ‫GVNIC_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC הרגילות ואת רשתות המשנה שמשתמשות ב-gVNIC.
  • ‫REGION: האזור של רשת המשנה.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION: שם ההזמנה, בלוק או בלוק משנה בתוך הזמנה. כדי לראות את שם ההזמנה או את הבלוקים הזמינים, עיינו במאמר הצגת הקיבולת השמורה. בהתאם לדרישות שלכם לגבי מיקום המכונה, בוחרים באחת מהאפשרויות הבאות:
    • כדי ליצור מכונות A4X בכל בלוק:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • כדי ליצור מכונות A4X בבלוק ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • כדי ליצור מכונות A4X בבלוק משנה ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • ‫TERMINATION_ACTION: אם המכונה של A4X תיעצר (STOP) או תימחק (DELETE) ב-Compute Engine בסוף תקופת שמירת המקום.

  • ‫PROJECT_ID: מזהה הפרויקט של המדיניות למיקום קומפקטי.
  • ‫REGION: האזור של המדיניות למיקום קומפקטי.
  • ‫POLICY_NAME: השם של המדיניות למיקום קומפקטי.

יצירת מכונה עצמאית עם 4 מעבדי GPU‏ (NVL4)

‫NVL4 מחלק את דומיין NVLink כדי ליצור מכונות נפרדות ב-NVLink fabric. כדי ליצור מכונות NVL4 עצמאיות, צריך לציין איזה בלוק משנה בתוך ההזמנה רוצים לחלק למחיצות. מכיוון שכל מכונה של A4X פועלת באופן עצמאי, אין צורך להשתמש במדיניות למיקום קומפקטי. יש תמיכה מלאה בתקשורת NVLink עם ארבעה מעבדי GPU בתוך הצומת לעומסי עבודה בתוך המכונה.

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

  • טירגוט קיבולת ובלוק משנה: כדי ליצור מכונות NVL4 עצמאיות, צריך לטרגט בלוק משנה ספציפי של בקשה לשמירת מקום. היחידה האטומית של קיבולת שמורה היא בלוק משנה שלם, שהוא דומיין NVLink של 18 מכונות או 72 יחידות GPU. אי אפשר להזמין מכונות NVL4 בודדות בנפרד. כשפורסים מכונות NVL4, מקצים בלוק משנה שמור לעד 18 צמתים עצמאיים. אתם יכולים גם לשתף הזמנה של בלוק משנה מפרויקט מארח עם פרויקטים של צרכנים.
  • שינויים בהגדרות ובחלוקה הסטטית למחיצות: פריסות של בלוקי משנה הן סטטיות. כדי לשנות את ההגדרות של בלוק משנה, למשל לעבור מדומיין NVLink עם 1x72 כמה צמתים למכונות NVL4 עצמאיות, או להיפך, צריך למחוק את כל המכונות הקיימות בבלוק המשנה הזה לפני שיוצרים אותן מחדש עם ההגדרות החדשות.
  • פריסות מעורבות בבלוק משנה: אתם יכולים להקצות מכונות באותה הקצאה של בלוק משנה גם למכונות עצמאיות של Compute Engine וגם למאגרי צמתים של GKE. לדוגמה, הקצאה של 12 מכונות עצמאיות של Compute Engine לפיתוח ו-6 מכונות במאגר צמתים של GKE.
  • הגדרת NCCL ו-NVLS: אם אתם מריצים עומסי עבודה מבוזרים באמצעות NCCL במכונות NVL4, השביתו את NVLink SHARP על ידי הגדרת משתנה הסביבה NCCL_NVLS_ENABLE=0. Google Cloud לא מגדיר קבוצות CUDA multicast לתקשורת בין כמה צמתים בדומיינים מחולקים למחיצות.

אם שריינתם בלוק משנה שלם, שמורכב מ-18 מכונות או 72 יחידות GPU, ואתם רוצים לפרוס את כל 18 המכונות העצמאיות של A4X, הפעילו את פקודת היצירה 18 פעמים, וודאו שכל פקודה מטרגטת את אותו בלוק משנה של ההזמנה.

כדי ליצור מכונה עצמאית של A4X עם ארבעה מעבדי GPU, בוחרים באחת מהאפשרויות הבאות:

gcloud

כדי ליצור את מכונת A4X, משתמשים ב פקודה gcloud compute instances create.

מכונות A4X תומכות בסוגי ההזמנות הבאים:

  • מקומות שמורים לעתיד בגושי קיבולת
  • מקומות שמורים לעתיד במצב תזמון

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

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-highgpu-4g \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address 
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --reservation-affinity=specific \
    --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure

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

  • ‫INSTANCE_NAME: השם של מכונת A4X.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫GVNIC_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC הרגילות ואת רשתות המשנה שמשתמשות ב-gVNIC.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION_NAME: שם ההזמנה.
  • ‫BLOCK_NAME: השם של בלוק ספציפי בתוך ההזמנה.
  • ‫SUB_BLOCK_NAME: השם של הבלוק המשני הספציפי בתוך הבלוק.
  • ‫TERMINATION_ACTION: אם המכונה של A4X תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסוף תקופת שמירת המקום.

REST

כדי ליצור את מכונת A4X, שולחים בקשת POST ל-method‏ instances.insert.

מכונות A4X תומכות בסוגי ההזמנות הבאים:

  • מקומות שמורים לעתיד בגושי קיבולת
  • מקומות שמורים לעתיד במצב תזמון

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-highgpu-4g",
  "name": "INSTANCE_NAME",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
     ],
  "reservationAffinity": {
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values": [
      "RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME"
    ]
  },
  "scheduling": {
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  }
}

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

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את מכונת A4X.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫INSTANCE_NAME: השם של מכונת A4X.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫NETWORK_PROJECT_ID: מזהה הפרויקט של הרשת.
  • ‫GVNIC_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC הרגילות ואת רשתות המשנה שמשתמשות ב-gVNIC.
  • ‫REGION: האזור של רשת המשנה.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION_NAME: שם ההזמנה.
  • ‫BLOCK_NAME: השם של בלוק ספציפי בתוך ההזמנה.
  • ‫SUB_BLOCK_NAME: השם של הבלוק המשני הספציפי בתוך הבלוק.
  • ‫TERMINATION_ACTION: אם המכונה של A4X תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסוף תקופת שמירת המקום.

התקנת מנהלי התקנים של GPU

אחרי שיוצרים מכונה, היא לא יכולה להשתמש ב-GPU שלה אלא אם מנהלי ההתקנים הנכונים של ה-GPU כבר מותקנים. אם לא ציינתם קובץ אימג' של מערכת ההפעלה שכולל מנהלי התקנים של GPU, עיינו במאמר התקנת מנהלי התקנים של GPU במסמכי התיעוד של Compute Engine.

אופציונלי: הפעלת מצב NVIDIA Multi-Instance GPU

מצב Multi-Instance GPU ‏ (MIG) הוא תכונה שאפשר להפעיל ב-NVIDIA GPU נתמך. אחרי שיוצרים מכונה, אפשר להפעיל מצב MIG ב-GPU יחיד שמחובר למכונה. כשהמצב MIG מופעל, ה-GPU הבודד מחולק לעד שבעה מכונות GPU נפרדות. כל מכונה פועלת בו-זמנית, ולכל אחת מהן יש זיכרון, מטמון ובלוקי SM ‏(Streaming Multiprocessor) משלה. לאחר מכן, תוכלו להריץ עומסי עבודה שונים במכונות ה-GPU האלה במקביל. מידע נוסף על השימוש במצב MIG מופיע במאמר Multi-Instance GPU (MIG) User Guide במסמכי התיעוד של NVIDIA.

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