יצירת אשכול Slurm בניהול עצמי לעומסי עבודה של AI

במאמר הזה מוסבר איך להגדיר ולפרוס אשכול Slurm בניהול עצמי שמשתמש בסוגי מכונות A4X Max,‏ A4X,‏ A4,‏ A3 Ultra,‏ A3 Mega או A3 High. מידע נוסף על סוגי המכונות האלה שמיועדות להאצת ביצועים זמין במאמר בנושא סוגי מכונות עם GPU.

בשלבים שמתוארים במסמך הזה מוסבר איך ליצור אשכול Slurm באמצעות Cluster Toolkit. ‫Cluster Toolkit הוא כלי בקוד פתוח מבית Google שמפשט את ההגדרה והפריסה של אשכול באמצעות תוכניות בסיסיות. יש לכם שליטה מלאה על האשכול, אבל אתם גם אחראים לניהול שלו. אם אתם רוצים להימנע מהתקורה של ניהול אשכול ולהתמקד בהרצת עומס העבודה, אתם יכולים ליצור אשכול מנוהל באופן מלא באמצעות Cluster Director.

מגבלות

בהתאם לסוג המכונה שבה נעשה שימוש במכונות של Compute Engine באשכול, חלות המגבלות הבאות:

A4X Max

A4X

A4

  • לא מקבלים הנחות על שימוש קבוע והנחות גמישות תמורת התחייבות לשימוש על מקרים לדוגמה שבהם נעשה שימוש בסוג מכונה A4.
  • אפשר להשתמש בסוג מכונה A4 רק באזורים ותחומים מסוימים.
  • אי אפשר להשתמש בדיסקים לאחסון מתמיד (persistent disks) (אזוריים או של תחום מוגדר). אפשר להשתמש רק ב-Google Cloud Hyperdisk.
  • סוג המכונה A4 זמין רק בפלטפורמת המעבד Emerald Rapids.
  • אי אפשר לשנות את סוג המכונה של מופע לסוג מכונה A4 או מסוג מכונה A4. צריך ליצור מכונה חדשה עם סוג המכונה הזה.
  • סוגי מכונות A4 לא תומכים בדיירות בלעדית.
  • אי אפשר להריץ מערכות הפעלה של Windows בסוג מכונה A4.
  • במקרים של מופעי A4, כשמשתמשים ב-ethtool -S כדי לעקוב אחרי רשתות GPU, מוני יציאות פיזיות שמסתיימים ב-_phy לא מתעדכנים. זו התנהגות צפויה במקרים שבהם נעשה שימוש בארכיטקטורה של פונקציה וירטואלית (VF) של MRDMA. מידע נוסף זמין במאמר פונקציות MRDMA וכלים לניטור רשת.
  • אי אפשר לצרף דיסקים של Hyperdisk ML שנוצרו לפני 4 בפברואר 2026 לסוגי מכונות A4.

A3 Ultra

  • לא תקבלו הנחות על שימוש קבוע והנחות גמישות תמורת התחייבות לשימוש על מכונות וירטואליות מסוג A3 Ultra.
  • אפשר להשתמש בסוג המכונה A3 Ultra רק באזורים ותחומים מסוימים.
  • אי אפשר להשתמש בדיסקים לאחסון מתמיד (persistent disks) (אזוריים או של תחום מוגדר). אפשר להשתמש רק ב-Google Cloud Hyperdisk.
  • סוג המכונה A3 Ultra זמין רק בפלטפורמת המעבד Emerald Rapids.
  • אין תמיכה בשינויים בסוג המכונה עבור סוג המכונה A3 Ultra. כדי לעבור למכונה מהסוג הזה או ממנה, צריך ליצור מופע חדש.
  • אי אפשר להריץ מערכות הפעלה של Windows בסוג מכונה A3 Ultra.
  • סוגי המכונות A3 Ultra לא תומכים בדיירות בלעדית.
  • במקרים של מופעי A3 Ultra, כשמשתמשים ב-ethtool -S כדי לעקוב אחרי רשתות GPU, מוני יציאות פיזיות שמסתיימים ב-_phy לא מתעדכנים. זו התנהגות צפויה במקרים שבהם נעשה שימוש בארכיטקטורת MRDMA Virtual Function ‏ (VF). מידע נוסף זמין במאמר פונקציות MRDMA וכלים לניטור רשת.

A3 Mega

A3 High

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

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

  1. בחירת אפשרות צריכה: האפשרות שתבחרו לצריכה תקבע איך תקבלו גישה למשאבי GPU ואיך תשתמשו בהם. מידע נוסף זמין במאמר בנושא בחירת אפשרות צריכה.
  2. קבלת קיבולת: התהליך לקבלת קיבולת שונה לכל אפשרות צריכה. כדי לקבל מידע על התהליך להשגת קיבולת לאפשרות הצריכה שבחרתם, אפשר לעיין במאמר סקירה כללית על קיבולת.
  3. מוודאים שיש לכם מספיק מכסת נפח ב-Filestore: לפני הפריסה, צריך לוודא שיש לכם מספיק מכסה ב-Filestore באזור היעד. הקיבולת המינימלית הנדרשת תלויה בסוגי המכונות באשכול:
    • A4X Max,‏ A4X,‏ A4,‏ A3 Ultra ו-A3 Mega: נדרש נפח מינימלי של 10 TiB ‏(10,240 GiB) של HIGH_SCALE_SSD (אזורי).
    • A3 High: נדרש נפח אחסון מינימלי של 2.5 TiB ‏ (2,560 GiB) מסוג BASIC_SSD (סטנדרטי).

    כדי לבדוק את המכסה או לבקש להגדיל אותה, אפשר לעיין במאמרים הבאים:

  4. התקנת Cluster Toolkit: כדי להקצות אשכולות Slurm, צריך להשתמש ב-Cluster Toolkit בגרסה v1.62.0 ואילך.

    הוראות להתקנת Cluster Toolkit מופיעות במאמר בנושא הגדרת Cluster Toolkit.

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

כדי לקבל את ההרשאות שדרושות לפריסת אשכול Slurm, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

הגדרת קטגוריית אחסון

תוכניות לניהול של אשכולות משתמשות במודולים של Terraform כדי להקצות תשתית בענן. מומלץ לאחסן את המצב מרחוק בקובץ שמופעל בו ניהול גרסאות כשעובדים עם Terraform. ב- Google Cloud, אפשר ליצור קטגוריה ב-Cloud Storage עם ניהול גרסאות מופעל.

כדי ליצור את הקטגוריה הזו ולהפעיל את ניהול הגרסאות מ-CLI, מריצים את הפקודות הבאות:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --default-storage-class=STANDARD --location=BUCKET_REGION \
    --uniform-bucket-level-access
gcloud storage buckets update gs://BUCKET_NAME --versioning

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

התקנת Cluster Toolkit

כדי להשתמש ב-Slurm עם Google Cloud, צריך להתקין את Cluster Toolkit. ב-Linux וב-macOS, מומלץ להתקין את חבילת ה-prebuilt.

אחרי שמתקינים את Cluster Toolkit, עוברים לספרייה שמכילה את הקובץ הבינארי gcluster:

  • אם התקנתם את חבילת ה-prebuilt, עוברים אל הספרייה gcluster-bundle:

    cd gcluster-bundle
  • אם יצרתם את הקובץ הבינארי מהמקור, עוברים אל cluster-toolkit:

    cd cluster-toolkit

    כדי לפרוס את האשכול הזה צריך Cluster Toolkit בגרסה v1.62.0 ומעלה. כדי לבדוק את הגרסה הנוכחית, מריצים את הפקודה הבאה:

    ./gcluster --version

יצירת קובץ פריסה

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

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

A4X Max

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a4xmax-bm-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_max_cluster_size: NUMBER_OF_INSTANCES
  a4x_max_reservation_name: RESERVATION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_INSTANCES: מספר המופעים של A4X Max bare metal באשכול. אפשר לציין כל מספר של מופעים. עם זאת, מופעי A4X Max מחוברים פיזית באמצעות מערכת NVLink מרובת צמתים בקבוצות של 18 מופעים (72 יחידות GPU) כדי ליצור דומיין NVLink.

    כדי להשיג ביצועים אופטימליים ברשת, מומלץ לציין ערך שהוא כפולה של 18 מופעים (לדוגמה, 18,‏ 36 או 54). כשיוצרים אשכול A4X Max, תוכנית ה-blueprint של A4X Max יוצרת ומחיל באופן אוטומטי מדיניות מיקום קומפקטית עם טופולוגיית GPU של 1x72 לכל קבוצה של 18 מכונות.

  • RESERVATION_NAME: השם של ההזמנה.

A4X

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a4xhigh-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_cluster_size: NUMBER_OF_VMS
  a4x_reservation_name: RESERVATION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות מסוג A4X באשכול. אפשר לציין כל מספר של מכונות וירטואליות. עם זאת, מכונות וירטואליות מסוג A4X מחוברות פיזית באמצעות מערכת NVLink מרובת צמתים בקבוצות של 18 מכונות וירטואליות (72 יחידות GPU) כדי ליצור דומיין NVLink.

    כדי להשיג ביצועים אופטימליים ברשת, מומלץ לציין ערך שהוא כפולה של 18 מכונות וירטואליות (לדוגמה, 18,‏ 36 או 54). כשיוצרים אשכול A4X, תוכנית ה-blueprint של A4X יוצרת ומחיל באופן אוטומטי מדיניות מיקום קומפקטית עם טופולוגיית GPU של 1x72 לכל קבוצה של 18 מכונות וירטואליות. מידע נוסף על טופולוגיית A4X זמין במאמר יסודות A4X.

  • RESERVATION_NAME: השם של ההזמנה.

A4

הפרמטרים שצריך להוסיף לקובץ הפריסה תלויים באפשרות הצריכה שבה אתם משתמשים לפריסה. בוחרים את הכרטיסייה שמתאימה למודל ההקצאה של אפשרות הצריכה.

הזמנה בלבד

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a4high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_reservation_name: RESERVATION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.
  • RESERVATION_NAME: השם של ההזמנה.

Flex-start

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a4high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_dws_flex_enabled: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הפריסה הזו מספקת צמתים סטטיים של מחשוב, כלומר, תמיד יש מספר קבוע של צמתים באשכול. אם רוצים להפעיל שינוי גודל אוטומטי של האשכול, משתמשים בקובץ examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml ועורכים את הערכים של node_count_static ושל node_count_dynamic_max כך שיתאימו לערכים הבאים:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a4h_cluster_size)

כרטיס Spot

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a4high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_enable_spot_vm: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

A3 Ultra

הפרמטרים שצריך להוסיף לקובץ הפריסה תלויים באפשרות הצריכה שבה אתם משתמשים לפריסה. בוחרים את הכרטיסייה שמתאימה למודל ההקצאה של אפשרות הצריכה.

הזמנה בלבד

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a3ultra-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_reservation_name: RESERVATION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.
  • RESERVATION_NAME: השם של ההזמנה.

Flex-start

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a3ultra-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_dws_flex_enabled: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הפריסה הזו מספקת צמתים סטטיים של מחשוב, כלומר, תמיד יש מספר קבוע של צמתים באשכול. אם רוצים להפעיל שינוי גודל אוטומטי של האשכול, משתמשים בקובץ examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml ועורכים את הערכים של node_count_static ושל node_count_dynamic_max כך שיתאימו לערכים הבאים:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3u_cluster_size)

כרטיס Spot

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם a3ultra-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_enable_spot_vm: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

A3 Mega

הפרמטרים שצריך להוסיף לקובץ הפריסה תלויים באפשרות הצריכה שבה אתם משתמשים לפריסה. בוחרים את הכרטיסייה שמתאימה למודל ההקצאה של אפשרות הצריכה.

הזמנה בלבד

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3mega-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_reservation_name: RESERVATION_NAME
  a3mega_partition_name: PARTITION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.
  • RESERVATION_NAME: השם של ההזמנה.
  • PARTITION_NAME: שם למחיצת Slurm.

Flex-start

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3mega-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_dws_flex_enabled: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הפריסה הזו מספקת צמתים סטטיים של מחשוב, כלומר, תמיד יש מספר קבוע של צמתים באשכול. אם רוצים להפעיל שינוי גודל אוטומטי של האשכול, משתמשים בקובץ examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml ועורכים את הערכים של node_count_static ושל node_count_dynamic_max כך שיתאימו לערכים הבאים:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3mega_cluster_size)

כרטיס Spot

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3mega-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_enable_spot_vm: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

A3 High

הפרמטרים שצריך להוסיף לקובץ הפריסה תלויים באפשרות הצריכה שבה אתם משתמשים לפריסה. בוחרים את הכרטיסייה שמתאימה למודל ההקצאה של אפשרות הצריכה.

הזמנה בלבד

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_reservation_name: RESERVATION_NAME
  a3_partition_name: PARTITION_NAME

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • TCPX_KERNEL_LOGIN,‏ TCPX_KERNEL_PASSWORD ו-KEYSERVER_UBUNTU_KEY: פרטי הכניסה הטכניים לתמונות שעברו אופטימיזציה ברמה A3 High. הערכים האלה מסופקים לכם על ידי צוות ניהול החשבון ב-Google Cloud. מידע נוסף זמין במאמר קבלת פרטי כניסה ל-GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו נמצאות המכונות השמורות.
  • ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות החשבון שלכם סיפק את המידע על האזור והאזור הזמין כשהקיבולת סופקה.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.
  • RESERVATION_NAME: השם של ההזמנה.
  • PARTITION_NAME: שם למחיצת Slurm.

Flex-start

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_dws_flex_enabled: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • TCPX_KERNEL_LOGIN,‏ TCPX_KERNEL_PASSWORD ו-KEYSERVER_UBUNTU_KEY: פרטי הכניסה הטכניים לתמונות שעברו אופטימיזציה ברמה A3 High. הערכים האלה מסופקים לכם על ידי צוות ניהול החשבון ב-Google Cloud. מידע נוסף זמין במאמר קבלת פרטי כניסה ל-GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הפריסה הזו מספקת צמתים סטטיים של מחשוב, כלומר, תמיד יש מספר קבוע של צמתים באשכול. אם רוצים להפעיל שינוי גודל אוטומטי של האשכול, משתמשים בקובץ examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml ועורכים את הערכים של node_count_static ושל node_count_dynamic_max כך שיתאימו לערכים הבאים:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3_static_cluster_size)

כרטיס Spot

כדי ליצור את קובץ הפריסה, יוצרים קובץ YAML בשם a3high-slurm-deployment.yaml ומוסיפים את התוכן הבא.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_enable_spot_vm: true

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

  • BUCKET_NAME: השם של הקטגוריה שלכם ב-Cloud Storage, שיצרתם בקטע הקודם.
  • DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לוודא שבוחרים שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • TCPX_KERNEL_LOGIN,‏ TCPX_KERNEL_PASSWORD ו-KEYSERVER_UBUNTU_KEY: פרטי הכניסה הטכניים לתמונות שעברו אופטימיזציה ברמה A3 High. הערכים האלה מסופקים לכם על ידי צוות ניהול החשבון ב-Google Cloud. מידע נוסף זמין במאמר קבלת פרטי כניסה ל-GPUDirect-TCPX.
  • SYSTEM_NETWORK_NAME: השם של רשת ה-VPC שבה רוצים להשתמש עבור רשת המערכת.
  • SYSTEM_SUBNET_NAME: השם של רשת המשנה שבה רוצים להשתמש עבור רשת המערכת.
  • CLUSTER_NAME: שם לאשכול Slurm.
  • REGION: האזור שבו רוצים להקצות את האשכול.
  • ZONE: האזור שבו רוצים להקצות את האשכול.
  • NUMBER_OF_VMS: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הקצאת אשכול Slurm

‫Cluster Toolkit מקצה את האשכול על סמך קובץ הפריסה שיצרתם בשלב הקודם ותרשים האשכול שמוגדר כברירת מחדל. מידע נוסף על התוכנה שמותקנת על ידי התוכנית, כולל מנהלי ההתקנים (דרייברים) של NVIDIA ו-CUDA, זמין במאמר מידע נוסף על תמונות בהתאמה אישית של Slurm.

כדי להקצות את האשכול, בוחרים אחת מהאפשרויות הבאות להרצת הפקודה עבור סוג המכונה מתוך ספריית Cluster Toolkit. השלב הזה נמשך בערך 20-30 דקות.

A4X Max

./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --auto-approve

A4X

./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --auto-approve

A4

./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

A3 Ultra

./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --auto-approve

A3 Mega

./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --auto-approve

A3 High

./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --auto-approve

התחברות לאשכול Slurm

כדי לגשת לאשכול, צריך להתחבר לצומת הכניסה של Slurm. אם נתקלתם בשגיאות כשניסיתם להתחבר לצומת, כדאי לעיין במאמר בנושא פתרון שגיאות ב-SSH.

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

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    לדף VM instances

  2. מאתרים את צומת הכניסה, שהשם שלו הוא DEPLOYMENT_NAME-login-001.

  3. בשורה של הצומת, בעמודה Connect, לוחצים על SSH.

gcloud

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

  1. כדי לזהות את צומת הכניסה, משתמשים בפקודה gcloud compute instances list הבאה:

    gcloud compute instances list \
        --filter="name ~ login" \
        --format "value(name)" \
        --zones=ZONE
    

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

  2. כדי להתחבר לצומת הכניסה, משתמשים בפקודה gcloud compute ssh עם הדגל --tunnel-through-iap:

    gcloud compute ssh LOGIN_NODE \
        --tunnel-through-iap \
        --zone=ZONE
    

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

    • ZONE: האזור שבו הצומת קיים.

    • LOGIN_NODE: השם של צומת הכניסה.

בדיקת ביצועי הרשת באשכול Slurm

מומלץ לאמת את הפונקציונליות של אשכולות שהוקצו. כדי לעשות זאת, משתמשים בבדיקות NCCL, שהן בדיקות של NVIDIA Collective Communications Library (ספריית תקשורת קולקטיבית של NVIDIA‏, NCCL) שעברו אופטימיזציה לסביבת Google.

פריסה מחדש של אשכול Slurm

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

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

  1. התחברות לאשכול

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

    A4X Max

    ./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4X

    ./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4

    ./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Ultra

    ./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Mega

    ./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 High

    ./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

השמדת אשכול Slurm

כברירת מחדל, בתוכניות A4X Max,‏ A4X,‏ A4 ו-A3 Ultra מופעלת הגנה מפני מחיקה במופע Filestore. כדי למחוק את מופע Filestore כשמשמידים את אשכול Slurm, צריך להשבית את ההגנה מפני מחיקה לפני שמריצים את פקודת ההשמדה. הוראות מפורטות זמינות במאמר בנושא הגדרה או הסרה של הגנה מפני מחיקה במופע קיים.

כדי להרוס את אשכול Slurm:

  1. אם עדיין לא עשיתם זאת, מתנתקים מהאשכול .

  2. לפני שמריצים את הפקודה destroy, עוברים אל ספריית השורש של Cluster Toolkit.

  3. כדי להרוס את האשכול, מריצים את הפקודה הבאה:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    מחליפים את DEPLOYMENT_FOLDER בשם של תיקיית הפריסה.

כש-Cluster Toolkit משמיד את האשכול, הפלט דומה לזה:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

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