יצירת אשכול Slurm של H4D עם יכולות ניהול משופרות

בדף הזה מוסבר איך ליצור אשכול Slurm למחשוב עתיר ביצועים (HPC) שמשתמש בגישה ישירה לזיכרון (RDMA) מרחוק עם מכונות וירטואליות מסוג H4D עם יכולות משופרות לניהול אשכולות. משתמשים ב-CLI של gcloud ובCluster Toolkit כדי להגדיר את האשכול.

סדרת המכונות H4D מיועדת במיוחד לעומסי עבודה תובעניים של HPC. ‫H4D מציעה מכונות וירטואליות עם יכולת שינוי גודל משופרת של עומסי עבודה באמצעות רשת Cloud RDMA עם תפוקה של 200Gbps. מידע נוסף על מכונות וירטואליות מסוג H4D שמותאמות לצריכת מעבד גבוהה ב- Google Cloudזמין במאמר סדרת מכונות H4D.

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

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

  1. Choose a consumption option (בחירת אפשרות צריכה): האפשרות שתבחרו תקבע איך תקבלו ותשתמשו במשאבי vCPU.
  2. קבלת קיבולת: קבלת קיבולת לאפשרות הצריכה שנבחרה.
  3. מידע נוסף זמין במאמר בנושא בחירת אפשרות צריכה וקבלת קיבולת.

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

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

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

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

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

תוכניות לניהול של אשכולות משתמשות במודולים של 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

מריצים את הפקודה הבאה כדי לוודא שאתם נמצאים בספרייה Cluster Toolkit:

cd cluster-toolkit

כדי לפרוס את האשכול הזה צריך Cluster Toolkit v1.70.0 או גרסה מתקדמת יותר. כדי לבדוק את הגרסה, אפשר להריץ את הפקודה הבאה:

./gcluster --version

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

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

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

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

הזמנה בלבד

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_reservation_name: RESERVATION_NAME

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

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

Flex-start

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_dws_flex_enabled: true

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

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

בפריסה הזו מוקצים צמתי מחשוב סטטיים, כלומר, תמיד יש מספר קבוע של צמתים באשכול. אם רוצים להפעיל שינוי גודל אוטומטי של האשכול, משתמשים בקובץ examples/h4d/hpc-slurm-h4d.yaml ועורכים את הערכים של node_count_static ושל node_count_dynamic_max כך שיתאימו לערכים הבאים:

      node_count_static: 0
      node_count_dynamic_max: $(vars.h4d_cluster_size)

Spot

כדי ליצור את קובץ הפריסה, משתמשים בכלי לעריכת טקסט כדי ליצור קובץ YAML בשם h4d-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
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_enable_spot_vm: true

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

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

הקצאת אשכול Slurm מסוג H4D

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

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

./gcluster deploy -d h4d-slurm-deployment.yaml examples/hpc-slurm-h4d/hpc-slurm-h4d.yaml --auto-approve

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

כדי לגשת לאשכול, צריך להיכנס לצומת הכניסה של Slurm. כדי להיכנס, אפשר להשתמש במסוף Google Cloud או ב-Google Cloud CLI.

המסוף

  1. עוברים לדף Compute Engine > VM instances.

    לדף VM instances

  2. מאתרים את צומת הכניסה. השם צריך להיות בפורמט DEPLOYMENT_NAME +login-001.

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

gcloud

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

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

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

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

  2. משתמשים בפקודה gcloud compute ssh כדי להתחבר לצומת הכניסה.

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

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

    • ZONE: האזור שבו נמצאות מכונות ה-VM של האשכול.
    • LOGIN_NODE: השם של צומת הכניסה שזיהיתם בשלב הקודם.

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

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

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

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

  2. מריצים את הפקודה הבאה:

    ./gcluster deploy -d h4d-slurm-deployment.yaml examples/h4d/h4d-slurm-deployment.yaml --only cluster-env,cluster --auto-approve -w
    

    הפקודה הזו מיועדת רק לפריסות מחדש שבהן כבר קיים קובץ אימג'. היא פורסת מחדש רק את האשכול ואת התשתית שלו.

כיבוי סופי של אשכול Slurm

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

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

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

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

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

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

    • DEPLOYMENT_FOLDER: השם של תיקיית הפריסה. בדרך כלל זה אותו הדבר כמו DEPLOYMENT_NAME.

בסיום ההסרה של האשכול אמורה להופיע הודעה דומה לזו שבהמשך:

  Destroy complete! Resources: xx destroyed.

הוראות מתקדמות לפריסה ידנית, כולל הסבר על השמדה נקייה של התשתית, מופיעות בתיקיית הפריסה שנמצאת בתיקיית השורש של Cluster Toolkit: DEPLOYMENT_FOLDER/instructions.txt

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