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

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

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

מגבלות

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

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

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

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

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

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

המסוף

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

gcloud

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

הפעלת 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 מצורפים.
Sub-block
תת-בלוק הוא היחידה הבסיסית של קיבולת 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. אופציונלי: הפעלת מצב NVIDIA Multi-Instance GPU

יצירת רשתות VPC

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

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

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

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

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

כדי ליצור את הרשתות, אפשר לפעול לפי ההוראות הבאות:

ברשתות ה-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. נכנסים לדף VPC networks במסוף Google Cloud .

      מעבר לרשתות VPC

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

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

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

gcloud

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

gcloud beta 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/beta/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): האפשרות הכי טובה לעומסי עבודה של צומת יחיד, הסקת מסקנות של מודלים קטנים יותר, עיבוד באצווה ופיתוח אינטראקטיבי שמתאים לארבע יחידות GPU ודורש רק שיתוף פעולה בין צמתים באמצעות NVLink. כדי לחלק בלוק משנה של הזמנה למקרים עצמאיים, צריך לטרגט בלוק משנה ספציפי של הזמנה. לא צריך מדיניות למיקום קומפקטי.

יצירת מכונה בדומיין NVLink עם 72 יחידות GPU ‏ (1x72 topology)

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

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

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

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

gcloud

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

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

  • מקומות שמורים לעתיד ב-AI Hypercomputer
  • הזמנות עתידיות במצב יומן

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

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 ואת תת-הרשתות שמשתמשות בכרטיסי NIC של 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: האם מערכת Compute Engine תפסיק (STOP) או תמחק (DELETE) את מכונת A4X בסוף תקופת ההזמנה.

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

REST

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

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

  • מקומות שמורים לעתיד ב-AI Hypercomputer
  • הזמנות עתידיות במצב יומן

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

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 ואת תת-הרשתות שמשתמשות בכרטיסי NIC של 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: האם מערכת Compute Engine תפסיק (STOP) או תמחק (DELETE) את מכונת A4X בסוף תקופת ההזמנה.

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

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

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

לפני שיוצרים מופעי 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 לתקשורת בין צמתים בדומיינים מחולקים.

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

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

gcloud

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

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

  • מקומות שמורים לעתיד ב-AI Hypercomputer
  • הזמנות עתידיות במצב יומן

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

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 ואת תת-הרשתות שמשתמשות בכרטיסי NIC של RDMA.
  • RESERVATION_NAME: השם של ההזמנה.
  • BLOCK_NAME: השם של בלוק ספציפי בהזמנה.
  • SUB_BLOCK_NAME: השם של תת-הבלוק הספציפי בתוך הבלוק.
  • TERMINATION_ACTION: האם מערכת Compute Engine תפסיק (STOP) או תמחק (DELETE) את מכונת A4X בסוף תקופת ההזמנה.

REST

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

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

  • מקומות שמורים לעתיד ב-AI Hypercomputer
  • הזמנות עתידיות במצב יומן

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

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 ואת תת-הרשתות שמשתמשות בכרטיסי NIC של RDMA.
  • RESERVATION_NAME: השם של ההזמנה.
  • BLOCK_NAME: השם של בלוק ספציפי בהזמנה.
  • SUB_BLOCK_NAME: השם של תת-הבלוק הספציפי בתוך הבלוק.
  • TERMINATION_ACTION: האם מערכת Compute Engine תפסיק (STOP) או תמחק (DELETE) את מכונת A4X בסוף תקופת ההזמנה.

התקנת דרייברים של GPU

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

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

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

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