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

במאמר הזה מוסבר איך ליצור מכונות עצמאיות של Compute Engine שמשתמשות בסוגי מכונות עם אופטימיזציה למאיצים מסוג A4X Max. במאמר יצירת אשכול GKE שמותאם ל-AI ומשתמש במכונות A4X Max מוסבר איך יוצרים אשכול GKE שמשתמש במכונות A4X Max. במאמר סקירה כללית של אפשרויות הפריסה מוסבר על כל האפשרויות ליצירת מכונות ואשכולות.

סוג המכונה של A4X Max

מכונה של Compute Engine, או מכונה, היא משאב מחשוב שמתארח בתשתית של Google ויכול להיות מכונה וירטואלית (VM) או מכונת Bare Metal. מכונות A4X Max זמינות כמכונות Bare Metal, ששונות ממכונות וירטואליות בכך שהן מספקות גישה ישירה ולא וירטואלית לחומרה הפיזית הבסיסית. מידע נוסף על סוג המכונה A4X Max זמין במאמרים סדרת A4X Max ורוחב הפס של רשת ה-GPU במסמכי התיעוד של Compute Engine.

מגבלות

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

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

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

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

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

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

המסוף

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

gcloud

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

gcloud init

REST

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

    התקינו את ה-CLI של Google Cloud ואז היכנסו ל-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 Max

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

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

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

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

סקירה כללית

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

  1. יצירת רשתות VPC
  2. יצירת מדיניות למיקום קומפקטי
  3. יצירת מכונה
  4. התקנת מנהלי התקנים של GPU

יצירת רשתות VPC

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

  • ‫2 רשתות VPC רגילות לממשקי הרשת (NIC) של IDPF . לאחר מכן, כרטיסי ה-NIC משתמשים ברשתות ה-VPC האלה לתקשורת בין מארחים.
  • רשת VPC אחת עם פרופיל הרשת RoCE metal לכרטיסי ה-NIC מסוג CX-8 כשיוצרים כמה בלוקי משנה של A4X Max. רשת VPC מסוג RoCE למכונות Bare Metal יוצרת באופן אוטומטי תת-רשת אחת בשם default-subnet-1-RDMA_NAME_PREFIX-net לכל שמונת כרטיסי ה-NIC מסוג CX-8. כרטיסי ה-NIC האלה משתמשים ב-RDMA over Converged Ethernet‏ (RoCE), ומספקים תקשורת עם רוחב פס גבוה וזמן אחזור קצר, שחיונית להרחבה אופקית (scale out) לכמה בלוקי משנה של A4X Max.

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

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

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

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

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

Script

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

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

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

    
    
        #!/bin/bash
    
        # Create regular VPC network for the IDPF NICs
        gcloud compute networks create IDPF_NETWORK_PREFIX-net \
            --subnet-mode=custom \
            --mtu=8896 \
            --enable-ula-internal-ipv6
    
        # Create subnets for the IDPF NICs
        for N in $(seq 0 1); do
          gcloud compute networks subnets create IDPF_NETWORK_PREFIX-$N \
            --network=IDPF_NETWORK_PREFIX-net \
            --region=REGION \
            --stack-type=IPV6_ONLY \
            --ipv6-access-type=INTERNAL
        done
    
        gcloud compute firewall-rules create IDPF_NETWORK_PREFIX-internal \
          --network=IDPF_NETWORK_PREFIX-net \
            --action=ALLOW \
            --rules=tcp:0-65535,udp:0-65535,58 \
            --source-ranges=IP_RANGE
    
    
    
          
  2. אם אתם צריכים כמה בלוקי משנה של A4X Max, השתמשו בסקריפט הבא כדי ליצור את רשת ה-VPC של RoCE למכונות Bare Metal (roce-metal) והשתמשו בתת-הרשת שנוצרה באופן אוטומטי בשביל שמונת כרטיסי ה-NIC מסוג CX-8 בכל מכונת A4X Max.

    
    
        #!/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 RoCE VPC network for bare metal instances (roce-metal)
        gcloud compute networks create RDMA_NAME_PREFIX-net \
          --network-profile=ZONE-vpc-roce-metal \
          --subnet-mode custom \
          --mtu=8896
    
        # For RoCE VPC networks for bare metal instances, a single subnet named
        # default-subnet-1-RDMA_NAME_PREFIX-net is automatically provided.
        # For more details, see https://cloud.google.com/vpc/docs/rdma-network-profiles.
    
    
          
  3. מחליפים את מה שכתוב בשדות הבאים:

    • ‫IDPF_NETWORK_PREFIX: התחילית של השם בהתאמה אישית שמשמשת לרשתות VPC רגילות ולתת-רשתות של כרטיסי ה-NIC של IDPF.
    • ‫RDMA_NAME_PREFIX: התחילית של השם בהתאמה אישית של רשת ה-VPC של RoCE למכונות Bare Metal‏ (roce-metal) לכרטיסי הרשת CX-8.
    • ‫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 Max

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

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

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

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

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

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

gcloud

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

במכונות A4X Max אפשר להשתמש בסוגי ההזמנות הבאים:

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

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

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-maxgpu-4g-metal \
    --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=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-0 \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-1,no-address \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --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 Max.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. צריך להשתמש באזור שנמצא באותו אזור של המדיניות למיקום קומפקטי. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IDPF_NETWORK_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת IDPF.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION: שם ההזמנה, בלוק או בלוק משנה בתוך הזמנה. כדי לראות את שם ההזמנה או את הבלוקים הזמינים, עיינו במאמר הצגת הקיבולת השמורה. בהתאם לדרישות שלכם לגבי מיקום המכונה, בוחרים באחת מהאפשרויות הבאות:
    • כדי ליצור מכונות A4X Max בכל בלוק בודד:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • כדי ליצור מכונות A4X Max בבלוק ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • כדי ליצור מכונות A4X Max בבלוק משנה ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • ‫TERMINATION_ACTION: אם המכונה של A4X Max תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסיום תקופת שמירת המקום.

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

REST

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

במכונות A4X Max אפשר להשתמש בסוגי ההזמנות הבאים:

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

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-maxgpu-4g-metal",
  "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/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-0"
    },
    {
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-1"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    }
  ],
  "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 Max.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. צריך להשתמש באזור שנמצא באותו אזור של המדיניות למיקום קומפקטי. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫INSTANCE_NAME: השם של מכונת A4X Max.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫NETWORK_PROJECT_ID: מזהה הפרויקט של הרשת.
  • ‫IDPF_NETWORK_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת IDPF.
  • ‫REGION: האזור של רשת המשנה.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION: שם ההזמנה, בלוק או בלוק משנה בתוך הזמנה. כדי לראות את שם ההזמנה או את הבלוקים הזמינים, עיינו במאמר הצגת הקיבולת השמורה. בהתאם לדרישות שלכם לגבי מיקום המכונה, בוחרים באחת מהאפשרויות הבאות:
    • כדי ליצור מכונות A4X Max בכל בלוק בודד:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • כדי ליצור מכונות A4X Max בבלוק ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • כדי ליצור מכונות A4X Max בבלוק משנה ספציפי:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • ‫TERMINATION_ACTION: אם המכונה של A4X Max תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסיום תקופת שמירת המקום.

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

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

‫NVL4 מחלק את דומיין NVLink כדי ליצור מכונות נפרדות ב-NVLink fabric. כדי ליצור מכונות NVL4 עצמאיות, צריך לציין איזה בלוק משנה בתוך ההזמנה רוצים לחלק למחיצות. מכיוון שכל מכונה של A4X Max פועלת באופן עצמאי, אין צורך להשתמש במדיניות למיקום קומפקטי. יש תמיכה מלאה בתקשורת 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 Max, הפעילו את פקודת היצירה 18 פעמים, וודאו שכל פקודה מטרגטת את אותו בלוק משנה של הזמנה.

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

gcloud

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

במכונות A4X Max אפשר להשתמש בסוגי ההזמנות הבאים:

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

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

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-maxgpu-4g-metal \
    --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=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-0 \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-1,no-address \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --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 Max.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IDPF_NETWORK_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת IDPF.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION_NAME: שם ההזמנה.
  • ‫BLOCK_NAME: השם של בלוק ספציפי בתוך ההזמנה.
  • ‫SUB_BLOCK_NAME: השם של הבלוק המשני הספציפי בתוך הבלוק.
  • ‫TERMINATION_ACTION: אם המכונה של A4X Max תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסיום תקופת שמירת המקום.

REST

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

במכונות A4X Max אפשר להשתמש בסוגי ההזמנות הבאים:

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

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-maxgpu-4g-metal",
  "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/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-0"
    },
    {
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-1"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    }
  ],
  "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 Max.
  • ‫ZONE: האזור שבו סוג המכונה שרוצים להשתמש בה זמין. למידע על אזורים, קראו את המאמר זמינות GPU לפי אזורים ותחומים.
  • ‫INSTANCE_NAME: השם של מכונת A4X Max.
  • ‫DISK_SIZE: גודל דיסק האתחול ב-GB. למידע נוסף, קראו את המאמר מגבלות הגודל של Google Cloud Hyperdisk או מגבלות הגודל של Persistent Disk, בהתאם לסוג הדיסק.
  • ‫IMAGE_PROJECT: מזהה הפרויקט של קובץ האימג' של מערכת ההפעלה.
  • ‫IMAGE_FAMILY: משפחת קובצי האימג' של מערכת ההפעלה שבה רוצים להשתמש. רשימה של כל מערכות ההפעלה הנתמכות
  • ‫NETWORK_PROJECT_ID: מזהה הפרויקט של הרשת.
  • ‫IDPF_NETWORK_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת IDPF.
  • ‫REGION: האזור של רשת המשנה.
  • ‫RDMA_NAME_PREFIX: התחילית של השם שציינתם כשיצרתם את רשתות ה-VPC ואת רשתות המשנה שמשתמשות בכרטיסי רשת של RDMA.
  • ‫RESERVATION_NAME: שם ההזמנה.
  • ‫BLOCK_NAME: השם של בלוק ספציפי בתוך ההזמנה.
  • ‫SUB_BLOCK_NAME: השם של הבלוק המשני הספציפי בתוך הבלוק.
  • ‫TERMINATION_ACTION: אם המכונה של A4X Max תופסק (STOP) או תימחק (DELETE) ב-Compute Engine בסיום תקופת שמירת המקום.

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

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

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