יצירת אשכול Slurm בניהול עצמי עם מכונה וירטואלית מסוג A4
בדף הזה מוסבר איך ליצור ולפרוס במהירות אשכול Slurm שעבר אופטימיזציה באמצעות AI, באמצעות סוגי מכונות שעברו אופטימיזציה למאיצים מסוג A4, ה-CLI של gcloud ו Cluster Toolkit.
סוגי מכונות שעברו אופטימיזציה להאצת A4 מגיעים עם מעבדי GPU מסוג NVIDIA B200 שמצורפים אליהם, והם מתוכננים במיוחד לחישובים אינטנסיביים של AI כדי לעזור לאשכול Slurm שלכם לטפל ביעילות בהדרכה ובהסקת מסקנות של מודלים בקנה מידה גדול. מידע נוסף על סוגי מכונות וירטואליות מותאמות למאיצי A4 ב- Google Cloudזמין במאמר סוגי מכונות וירטואליות עם GPU.
לחלופין, אפשר להשתמש ב-Cluster Director כדי ליצור אשכול Slurm שמבוסס על A4. Cluster Director הוא שירות מנוהל שמפשט ומבצע אוטומטית את פריסת האשכולות, וכך מצמצם את התקורה התפעולית. מידע נוסף זמין במאמר בנושא יצירת אשכול Slurm בניהול מלא עם שתי מכונות וירטואליות מסוג A4.
לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :
סקירה כללית של המדריך
במדריך הזה מוסבר איך להגדיר אשכול Slurm שעבר אופטימיזציה באמצעות AI, באמצעות סוגי מכונות שעברו אופטימיזציה למאיצי A4. בפרט, תגדירו אשכול עם מכונות וירטואליות של Compute Engine, תיצרו קטגוריה של Cloud Storage לאחסון המודולים הדרושים של Terraform ותגדירו מופע של Filestore להקצאת אשכול Slurm. כדי להשלים את השלבים במדריך הזה, צריך לבצע את התהליך הבא:
- מגדירים את הפרויקט ב- Google Cloud עם ההרשאות הנדרשות לשימוש במדריך הזה ועם משתני הסביבה להזמנת המכונה.
- יצירת קטגוריה של Cloud Storage.
- מגדירים את משתני הסביבה של האחסון.
- מגדירים את Cluster Toolkit.
- עוברים לספרייה Cluster Toolkit.
- יוצרים קובץ YAML של פריסת Slurm.
- הקצאת אשכול Slurm באמצעות תוכנית.
- מתחברים לאשכול Slurm.
לפני שמתחילים
- איך מזמינים בלוק קיבולת למכונת
a4-highgpu-8gאחת. מוודאים שיש לכם מספיק מכסת Filestore כדי להקצות את אשכול Slurm. צריך קיבולת אזורית של לפחות 10,240 GiB (שנקראת גם קיבולת SSD בקנה מידה גבוה).
כדי לבדוק את המכסה של Filestore, פותחים את הדף Quotas & System limits במסוף Google Cloud ומסננים את הטבלה כך שיוצגו רק משאבי Filestore.
- הוראות מפורטות לבדיקת מכסות של Filestore זמינות במאמר איך רואים את המכסות ל-API ספציפי.
- אם אין לכם מספיק מכסה, אתם יכולים לבקש להגדיל את המכסה.
מפעילים את ממשקי ה-API של Compute Engine, Filestore, Cloud Storage, Service Usage ו-Cloud Resource Manager:
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לפריסת אשכול Slurm, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- אדמין לניהול נפח האחסון (
roles/storage.admin) בפרויקט - Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות עצמו
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
עלויות
העלות של הפעלת המדריך הזה משתנה בהתאם לכל קטע שמשלימים, כמו הגדרת המדריך או הפעלת עבודות. אפשר להשתמש במחשבון התמחור כדי לחשב את העלות.
כדי להעריך את העלות של ההגדרה במדריך הזה, משתמשים במפרטים הבאים:
- הקיבולת של Filestore (standard) לכל אזור: 10,240 GiB.
- דיסק מתמיד סטנדרטי: 50GB
pd-standardלצומת הכניסה של Slurm. - דיסקים מתמידים שמבוססים על ביצועים (SSD): 50GB
pd-ssdעבור בקר Slurm. - VM instance: 1
a4-highgpu-8g.
הפעלת Cloud Shell
במדריך הזה משתמשים ב-Cloud Shell, שהיא סביבת מעטפת לניהול משאבים שמתארחים ב- Google Cloud.
ב-Cloud Shell מותקן מראש Google Cloud CLI. ה-CLI של gcloud הוא ממשק שורת הפקודה העיקרי ל- Google Cloud. מפעילים את Cloud Shell:
נכנסים למסוף Google Cloud .
לוחצים על Activate Cloud Shell
בפינה הימנית העליונה של המסוף.
מתחיל סשן של Cloud Shell ומופיעה הנחיה של שורת הפקודה.
משתמשים בשורת הפקודה הזו כדי להריץ פקודות של gcloud ושל Cluster Toolkit.
הגדרת משתנים של קיבולת להזמנת מכונות
ב-Cloud Shell, מגדירים את משתני הסביבה הבאים של קיבולת ההזמנה. משתני הסביבה האלה מגדירים ערכי placeholder כדי להגדיר את הפרויקט שלכם כך שתהיה לו גישה למכונת a4-highgpu-8g שהזמנתם.
export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID export A4_RESERVATION_NAME=A4_RESERVATION_NAME export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME export A4_REGION=A4_REGION export A4_ZONE=A4_ZONE export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
A4_RESERVATION_PROJECT_ID: מזהה הפרויקט שקיבל את בלוק השריון של סוג מכונת A4. Google Cloud -
A4_RESERVATION_NAME: השם של הזמנת ה-GPU שמשמשת בפרויקט. לדוגמה,a4high-exr. -
A4_DEPLOYMENT_NAME: שם ייחודי לפריסת אשכול Slurm. לדוגמה,my-slurm-cluster-deployment. -
A4_REGION: האזור שבו פועל בלוק ההזמנה של מכונת A4 שמורה. לדוגמה,us-central1. -
A4_ZONE: האזור שמכיל את המכונות השמורות. המחרוזת הזו חייבת לכלול גם את האזור וגם את האזור. לדוגמה,us-central1-a. -
A4_DEPLOYMENT_FILE_NAME: שם ייחודי לקובץ ה-YAML של תוכנית ה-Slurm. אם תעברו על ההדרכה הזו יותר מפעם אחת, תצטרכו לבחור שם פריסה ייחודי בכל פעם.
מעבר לפרויקט שאושר לשימוש ב-A4
עוברים אל Google Cloud הפרויקט שבו יש בלוק של מקום שמור שאושר עבור סוג המכונה A4:
gcloud config set project ${A4_RESERVATION_PROJECT_ID}יצירת קטגוריה של Cloud Storage
כשפורסים תוכנית לניהול ומודולים שלה, Terraform יוצרת קובץ מצב שממפה את התוכנית למשאבים בענן. כדי לשמור על תיעוד מהימן של התשתית, מומלץ לאחסן את קובצי המצב של Terraform במיקום מרוחק עם הפעלת ניהול גרסאות, כמו קטגוריה של Cloud Storage עם הפעלת ניהול גרסאות.
כדי לאחסן את קובץ המצב, יוצרים קטגוריה של Cloud Storage עם הפעלת ניהול גרסאות מ-Cloud Shell:
gcloud storage buckets create gs://${BUCKET_NAME} \
--project=${A4_RESERVATION_PROJECT_ID} \
--default-storage-class=STANDARD \
--location=${BUCKET_LOCATION} \
--uniform-bucket-level-access
gcloud storage buckets update gs://${BUCKET_NAME} --versioning
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה החדשה ב-Cloud Storage, שצריך לעמוד בקריטריונים לשמות של קטגוריות. -
A4_RESERVATION_PROJECT_ID: מזהה הפרויקט שקיבל את בלוק השריון של סוג מכונת A4. Google Cloud -
BUCKET_LOCATION: Google Cloud האזור שבו רוצים ליצור את הקטגוריה ב-Cloud Storage, למשלus-central1. קובץ המצב שלכם נשמר במיקום הזה ב-Terraform.
הגדרת משתנים של נפח האחסון
ב-Cloud Shell, יוצרים את משתני הסביבה עבור הקטגוריה שיצרתם בשלב הקודם.
export BUCKET_NAME=BUCKET_NAME export BUCKET_LOCATION=BUCKET_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה. -
BUCKET_LOCATION: האזור שבו נמצאת הקטגוריה.
הגדרת Cluster Toolkit
כדי ליצור אשכול Slurm ב Google Cloud פרויקט, אפשר להשתמש ב Cluster Toolkit כדי לטפל בפריסה ובהקצאת המשאבים של האשכול. Cluster Toolkit היא תוכנה בקוד פתוח שמוצעת על ידי Google Cloudכדי לפשט את תהליך הפריסה של עומסי עבודה ב- Google Cloud.
כדי להגדיר את Cluster Toolkit:
התקנת Cluster Toolkit
כדי להתקין את Cluster Toolkit, מורידים ומחלצים את חבילת הקבצים הבינאריים שנבנתה מראש עבור הפלטפורמה שלכם. אפשר לייצא ארכיונים בפורמט ZIP וגם בפורמט tar (.tgz).
- עוברים אל דף הגרסאות של Cluster Toolkit ב-GitHub.
- מורידים את החבילה שמתאימה לפלטפורמה ולארכיטקטורה שלכם. אלה האפשרויות הזמינות:
gcluster_bundle_linux_amd64.zipאוgcluster_bundle_linux_amd64.tgzgcluster_bundle_linux_arm64.zipאוgcluster_bundle_linux_arm64.tgzgcluster_bundle_mac_amd64.zipאוgcluster_bundle_mac_amd64.tgzgcluster_bundle_mac_arm64.zipאוgcluster_bundle_mac_arm64.tgz
- בטרמינל, מחלצים את קובצי החבילה לספרייה חדשה:
-
אם הורדתם חבילת ZIP, מחלצים את הקבצים באמצעות הפקודה
unzip:unzip BUNDLE_FILENAME -d cluster-toolkit
-
אם הורדתם חבילת tar, מחלצים את הקבצים באמצעות הפקודה
tar:mkdir -p cluster-toolkit tar -xzf BUNDLE_FILENAME -C cluster-toolkit
מחליפים את
BUNDLE_FILENAMEבשם החבילה שהורדתם. -
- עוברים לספרייה החדשה:
cd cluster-toolkit
- מאמתים את ההתקנה:
./gcluster --version
בפלט מוצגת הגרסה הנוכחית של Cluster Toolkit שבה אתם משתמשים.
אחרי שמתקינים את הקובץ הבינארי, אפשר לפרוס אשכולות כדי להריץ את המשימות או את עומסי העבודה.
יצירת קובץ פריסה
בספרייה Cluster Toolkit, יוצרים קובץ YAML של פריסת Slurm.
nano ${A4_DEPLOYMENT_FILE_NAME}.yamlמדביקים את התוכן הבא בקובץ ה-YAML.
--- terraform_backend_defaults: type: gcs configuration: bucket: BUCKET_NAME vars: deployment_name: A4_DEPLOYMENT_FILE_NAME project_id: A4_RESERVATION_PROJECT_ID region: A4_REGION zone: A4_ZONE a4h_reservation_name: A4_RESERVATION_NAME a4h_cluster_size: 1כדי לשמור את הקובץ ולצאת ממנו, מקישים על Ctrl+O > Enter > Ctrl+X.
הקצאת משאבים לאשכול Slurm
כדי להקצות את אשכול Slurm, מריצים את פקודת הפריסה הבאה. הפקודה הזו מקצה את אשכול Slurm באמצעות קובץ התוכנית examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml.
ב-Cloud Shell, מתחילים ליצור את האשכול.
./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve
התחברות לאשכול
אחרי הפריסה, מתחברים למסוף Google Cloud כדי לראות את האשכול.
נכנסים לדף VM instances במסוףGoogle Cloud דרך Compute Engine.
מאתרים את צומת הכניסה (
a4high-login-001או דומה).לוחצים על SSH כדי להתחבר.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
השמדת אשכול Slurm
מומלץ לנקות את המשאבים כשאין בהם יותר צורך.
כברירת מחדל, בתוכניות A4 High מופעלת הגנה מפני מחיקה במופע Filestore. כשמשמידים את אשכול Slurm, צריך להשבית את ההגנה מפני מחיקה לפני שמריצים את פקודת ההשמדה.
השבתת ההגנה מפני מחיקה
כדי להשבית את ההגנה מפני מחיקה כשמעדכנים מופע, משתמשים בפקודה דומה לזו:
gcloud filestore instances update INSTANCE_NAME \
--no-deletion-protection
מחליפים את INSTANCE_NAME בשם המכונה שרוצים לערוך. לדוגמה, my-genomics-instance.
כדי למצוא את INSTANCE_NAME, אפשר להריץ את הפקודה gcloud filestore instances
list. הפקודה הזו מציגה רשימה של כל מופעי Filestore בפרויקט הנוכחי Google Cloud , כולל השמות, המיקומים (אזורים), הרמות, הקיבולת והסטטוס שלהם.
אחרי שמריצים את הפקודה, מחפשים את מופע Filestore שתואם למכונת a4-highgpu-8g שמופעלת במדריך הזה.
השמדת אשכול Slurm
לפני שמריצים את הפקודה destroy, עוברים אל ספריית השורש של Cluster Toolkit. כברירת מחדל,
DEPLOYMENT_FOLDERנמצא בשורש של ספריית Cluster Toolkit.השמדת האשכול:
./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
מחליפים את
DEPLOYMENT_FOLDERבשם של תיקיית הפריסה. בדרך כלל זה אותו הדבר כמוDEPLOYMENT_NAME.
בסיום ההשמדה, תופיע הודעה דומה לזו:
Destroy complete! Resources: xx destroyed.
מחיקת קטגוריית האחסון
אחרי שמוודאים שהפקודה הקודמת הסתיימה ללא שגיאות, מוחקים את הקטגוריה של Cloud Storage:
gcloud storage buckets delete gs://${BUCKET_NAME}
פתרון בעיות
שגיאה: ל-Cloud Shell אין אפשרות להקצות את האשכול כי לא נשאר מקום באחסון.
השגיאה הזו עשויה להופיע אם אתם משתמשים ב-Cloud Shell בתדירות גבוהה ונגמר לכם נפח האחסון.
כדי לפתור את הבעיה, אפשר לעיין במאמר בנושא השבתה או איפוס של Cloud Shell.
שגיאה: כבר קיים אשכול או תוכנית עם השם הזה.
יכול להיות שתראו את השגיאה הזו אם אתם משתמשים בפרויקט שכבר נעשה בו שימוש בשמות הקבצים המדויקים שמופיעים במדריך הזה. לדוגמה, אם מישהו אחר בארגון שלכם השלים את כל השלבים במדריך הזה.
כדי לפתור את הבעיה, צריך לעבור שוב על ההדרכה ולבחור שם ייחודי לקובץ הפריסה, ואז להריץ מחדש את הפקודה provision the Slurm cluster עם קובץ הפריסה החדש.
המאמרים הבאים
- משימות מתקדמות ב-Slurm:
- איך מנהלים אירועים שמאורגנים על ידי המארח
- ניהול אירועים של מארחים במכונות וירטואליות
- ניהול אירועים למארחים בהזמנות שונות
- איך רואים את הטופולוגיה של מכונת חישוב
- מעקב אחרי מופעי מחשוב באשכול Slurm
- דיווח על מארח עם בעיה