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

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

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

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

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

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

  4. מוודאים שיש לכם מספיק מכסת קיבולת ב-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 (סטנדרטי).

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

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

    כדי להתקין את Cluster Toolkit, קראו את המאמר הגדרת Cluster Toolkit.

מפעילים את Cloud Shell במסוף Google Cloud .

הפעלת Cloud Shell

בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

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

בתרשימי האשכולות נעשה שימוש במודולים של 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_INSTANCES
  h4d_reservation_name: RESERVATION_NAME

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

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

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

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

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

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

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

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

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

ב-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: האזור שבו נמצאות המכונות הווירטואליות של האשכול.
    • ‫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
    

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

השמדת אשכול Slurm

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

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

  2. לפני שמריצים את פקודת ההשמדה, עוברים לספריית הבסיס של 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

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