יצירת אשכול 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 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 מקצה את האשכול על סמך קובץ הפריסה שיצרתם בשלב הקודם ותרשים האשכול שמוגדר כברירת מחדל. מידע נוסף על תמונות בהתאמה אישית או על פריסת Slurm עם תמונת מערכת הפעלה בהתאמה אישית זמין במאמר בנושא תמונות בהתאמה אישית של 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

כברירת מחדל, תוכנית האב של האשכול פורסת מכונות וירטואליות שמשתמשות בתמונות מחשוב מתקדמות מוכנות מראש. התמונות האלה מוגדרות מראש עם מנהלי התקנים ותוכנות מיוחדים להרצת עומסי העבודה, כולל מנהלי התקנים של NVIDIA,‏ CUDA,‏ network fabrics וסוכני Slurm. כך אין צורך בבניית תמונות ידנית במהלך הפריסה. מידע נוסף על חבילות התוכנה המוכנות מראש ועל כלי ההגדרה שאתם פורסים זמין במאמר סקירה כללית של תמונות מתקדמות של מחשוב.

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

A4

כברירת מחדל, תוכנית האב של האשכול פורסת מכונות וירטואליות שמשתמשות בתמונות מחשוב מתקדמות מוכנות מראש. התמונות האלה מוגדרות מראש עם מנהלי התקנים ותוכנות מיוחדים להרצת עומסי העבודה, כולל מנהלי התקנים של NVIDIA,‏ CUDA,‏ network fabrics וסוכני Slurm. כך אין צורך בבניית תמונות ידנית במהלך הפריסה. מידע נוסף על חבילות התוכנה המוכנות מראש ועל כלי ההגדרה שאתם פורסים זמין במאמר סקירה כללית של תמונות מתקדמות של מחשוב.

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

A3 Ultra

כברירת מחדל, תוכנית האב של האשכול פורסת מכונות וירטואליות שמשתמשות בתמונות מחשוב מתקדמות מוכנות מראש. התמונות האלה מוגדרות מראש עם מנהלי התקנים ותוכנות מיוחדים להרצת עומסי העבודה, כולל מנהלי התקנים של NVIDIA,‏ CUDA,‏ network fabrics וסוכני Slurm. כך אין צורך בבניית תמונות ידנית במהלך הפריסה. מידע נוסף על חבילות התוכנה המוכנות מראש ועל כלי ההגדרה שאתם פורסים זמין במאמר סקירה כללית של תמונות מתקדמות של מחשוב.

./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.

כדי לפרוס מחדש את תשתית האשכול (cluster-env,cluster) בלי להריץ מודולים של בניית אימג'ים, מבצעים את הפעולות הבאות:

  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.

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