יצירת אשכול 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

A3 Ultra

A3 Mega

A3 High

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

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

  1. בחירת אפשרות צריכה: אפשרות הצריכה שתבחרו תקבע איך תקבלו את משאבי ה-GPU ותשתמשו בהם. מידע נוסף זמין במאמר בחירת אפשרות צריכה.
  2. השגת קיבולת: התהליך להשגת קיבולת שונה בכל אפשרות צריכה. במאמר סקירה כללית על קיבולת מוסבר איך מקבלים קיבולת לאפשרות הצריכה שבחרתם.
  3. מוודאים שיש לכם מספיק מכסה ב-Filestore או ב-Google Cloud Managed Lustre: לפני הפריסה, צריך לוודא שיש לכם מספיק מכסה ב-Filestore או ב-Managed Lustre באזור ובאזור הזמין (zone) הרצויים. המכסה המינימלית הנדרשת תלויה בשירות האחסון ובסוגי המכונות באשכול:
    • ‫Managed Lustre:
      • ‫A4X Max: דורש מכסה של לפחות 18,000GiB‎ לנפח האחסון ומכסה של 9GBps‎ לקצב העברת הנתונים.
      • ‫A4X, ‏ A4, ‏ A3 Ultra, ‏ A3 Mega ו-A3 High: נדרשת מכסה של 36, 000GiB לפחות לנפח האחסון,ומכסה של 18GBps לפחות לקצב העברת הנתונים.
    • 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, צריך להשתמש בגרסה v1.62.0 ואילך של Cluster Toolkit.

    כדי להתקין את 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, מומלץ להתקין את החבילה המוכנה מראש.

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

  • אם התקנתם את החבילה המוגדרת מראש, עברו לספרייה 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 באשכול. אפשר לציין כל מספר של מכונות. עם זאת, מכונות 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_INSTANCES
  a4x_reservation_name: RESERVATION_NAME

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

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

    כדי להשיג ביצועי רשת אופטימליים, מומלץ לציין ערך שהוא כפולה של 18 מכונות (לדוגמה, 18, 36 או 54). כשיוצרים אשכול A4X, תוכנית ה-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_INSTANCES
  a4h_reservation_name: RESERVATION_NAME

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

  • ‫BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage שיצרתם בקטע הקודם.
  • ‫DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לבחור שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • ‫REGION: האזור שבו נמצאות המכונות השמורות.
  • ‫ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות ניהול החשבון סיפק את פרטי האזור והתחום כשהקיבולת סופקה.
  • ‫NUMBER_OF_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.
  • ‫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_INSTANCES
  a4h_dws_flex_enabled: true

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

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

הפריסה הזו מקצה צומתי מחשוב סטטיים, כלומר לאשכול יש מספר קבוע של צמתים בכל זמן נתון. אם רוצים להפעיל את ההתאמה האוטומטית לעומס באשכול, משתמשים בקובץ 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_INSTANCES
  a4h_enable_spot_vm: true

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

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

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_INSTANCES
  a3u_reservation_name: RESERVATION_NAME

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

  • ‫BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage שיצרתם בקטע הקודם.
  • ‫DEPLOYMENT_NAME: שם לפריסה. אם יוצרים כמה אשכולות, צריך לבחור שם ייחודי לכל אחד מהם.
  • PROJECT_ID: מזהה הפרויקט.
  • ‫REGION: האזור שבו נמצאות המכונות השמורות.
  • ‫ZONE: האזור שבו רוצים להקצות את האשכול. אם אתם משתמשים באפשרות צריכה שמבוססת על הזמנה, צוות ניהול החשבון סיפק את פרטי האזור והתחום כשהקיבולת סופקה.
  • ‫NUMBER_OF_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.
  • ‫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_INSTANCES
  a3u_dws_flex_enabled: true

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

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

הפריסה הזו מקצה צומתי מחשוב סטטיים, כלומר לאשכול יש מספר קבוע של צמתים בכל זמן נתון. אם רוצים להפעיל את ההתאמה האוטומטית לעומס באשכול, משתמשים בקובץ 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_INSTANCES
  a3u_enable_spot_vm: true

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

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

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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.
  • ‫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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.

הפריסה הזו מקצה צומתי מחשוב סטטיים, כלומר לאשכול יש מספר קבוע של צמתים בכל זמן נתון. אם רוצים להפעיל את ההתאמה האוטומטית לעומס באשכול, משתמשים בקובץ 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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.

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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.
  • ‫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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.

הפריסה הזו מקצה צומתי מחשוב סטטיים, כלומר לאשכול יש מספר קבוע של צמתים בכל זמן נתון. אם רוצים להפעיל את ההתאמה האוטומטית לעומס באשכול, משתמשים בקובץ 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_INSTANCES
  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_INSTANCES: מספר המכונות של Compute Engine שרוצים באשכול.

הקצאת אשכול Slurm

‫Cluster Toolkit מקצה את האשכול על סמך קובץ הפריסה שיצרתם בשלב הקודם ועל סמך תרשים האשכול שמוגדר כברירת מחדל. למידע נוסף על קובצי אימג' בהתאמה אישית או על פריסת Slurm עם קובץ אימג' של מערכת הפעלה בהתאמה אישית, ראו קובצי אימג' בהתאמה אישית של Slurm.

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

A4X Max

ה-blueprint של A4X Max משלב את Managed Lustre לאחסון של ספריית הבית עם ביצועים גבוהים (/home). ה-blueprint מגדיר באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר בין רשת ה-VPC ל-Managed Lustre. התוכנית גם מגדירה את Lustre networking‏ (LNet) בממשק הרשת הראשי eth0. מידע נוסף מופיע בסקירה הכללית על Managed Lustre.

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

A4X

התוכנית של A4X משלבת את Managed Lustre לאחסון בעל ביצועים גבוהים של ספריית הבית (/home). התוכנית מגדירה באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר בין רשת ה-VPC לבין Managed Lustre.

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

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

A4

מערך השיעור A4 משלב את Managed Lustre לאחסון של ספריית הבית בביצועים גבוהים (/home). המערך מגדיר באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר בין רשת ה-VPC לבין Managed Lustre.

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

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

A3 Ultra

המערך של A3 Ultra משלב את Managed Lustre לאחסון של ספריית הבית (/home) עם ביצועים גבוהים. המערך מגדיר באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר בין רשת ה-VPC לבין Managed Lustre.

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

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

A3 Mega

התוכנית של A3 Mega משלבת את Managed Lustre לאחסון בעל ביצועים גבוהים של ספריית הבית (/home). התוכנית מגדירה באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר את רשת ה-VPC שלכם עם Managed Lustre.

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

A3 High

התבנית של A3 High משלבת את Managed Lustre לאחסון של ספריית הבית בביצועים גבוהים (/home). התבנית מגדירה באופן אוטומטי גישה לשירות פרטי (PSA) כדי לקשר בין רשת ה-VPC לבין Managed Lustre.

./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 (NCCL)‎ שעברו אופטימיזציה לסביבת Google.

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

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

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

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

  2. בהתאם לסוג המכונה שבה משתמש האשכול, בוחרים באחת מהאפשרויות הבאות כדי לפרוס מחדש את האשכול ואת תשתית ה-IT שלו:

    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

כשמשמידים את האשכול, Cluster Toolkit מוחק באופן אוטומטי את המכונה המנוהלת של Lustre ואת כל הנתונים שמאוחסנים בה.

כדי להשמיד את אשכול Slurm:

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

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

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

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

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

כשהאשכול נמחק באמצעות Cluster Toolkit, הפלט דומה לזה:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

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