יצירת אשכול 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 באזור היעד. הקיבולת המינימלית הנדרשת תלויה בסוגי המכונות באשכול:
    • 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.

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

הפעלת 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_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: מספר המכונות הווירטואליות שרוצים עבור האשכול.

הקצאת אשכול H4D Slurm

‫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

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