ב-Gemini Enterprise Agent Platform, אשכולות האימון משתמשים ב-Simple Linux Utility for Resource Management (Slurm) ככלי לתזמור, לניהול ולתזמון של משימות באשכול.
Slurm היא מערכת נפוצה בקוד פתוח לניהול אשכולות ולתזמון משימות, והיא ידועה ביכולת ההתאמה שלה ובסבילות שלה לתקלות.
יכולות עיקריות של Slurm
- מערכת Slurm מקצה קבוצה של צמתי מחשוב לשימוש בלעדי של משימה ספציפית למשך תקופה מוגדרת. כך מובטח שלעבודה תהיה גישה ייעודית למשאבים שהיא צריכה כדי לפעול ללא הפרעות.
- Slurm מספק מסגרת לניהול מחזור החיים המלא של משימה – משליחה וביצוע ועד ניטור וסיום. המערכת הזו מיועדת במיוחד לטיפול במשימות מקבילות שפועלות על קבוצה של צמתים שהוקצו.
- Slurm מתחזק תור של משימות בהמתנה, באמצעות מנגנון מתוחכם לקביעת סדר עדיפויות כדי להקצות גישה למשאבי מחשוב. המערכת הזו מבטיחה ניצול הוגן ויעיל של משאבים באשכול, על ידי התחשבות בגורמים כמו גודל המשימה, סדר העדיפויות של המשתמש וזמן ההמתנה.
הגדרה בסיסית של אשכול
לפני שמריצים משימות, צריך להגדיר את המבנה הבסיסי של אשכול Slurm. בחלק הזה מפורטות הגדרות החובה, כולל איך לארגן צמתים של מחשוב במחיצות, איך לציין מאגר ייעודי של צמתים להתחברות ואיך להגדיר ספריית בית משותפת למשתמשים.
מחיצות
מחיצות מקבצות צמתים לקבוצות לוגיות, שיכולות להיות שימושיות לניהול סוגים שונים של מכונות או רמות גישה. הם מוגדרים כרשימה בשדה partitions של slurm_spec.
כל אובייקט של מחיצה מכיל את שדות החובה הבאים:
-
id: מזהה ייחודי של המחיצה. -
node_pool_ids: רשימה שמכילה את המזהים של מאגר אחד או יותר של צמתים ששייכים למחיצה הזו.
לדוגמה:
"partitions": [
{
"id": "a4",
"node_pool_ids": [ "a4" ]
}
]
צומתי התחברות
מאגר צומתי הכניסה מספק צמתים ייעודיים שמשמשים כנקודת הכניסה העיקרית למשתמשים כדי לקיים אינטראקציה עם האשכול. בשדה login_node_pool_id מציינים את המזהה הייחודי של המאגר.
לדוגמה:
"login_node_pool_id": "login"
אחסון בספריית הבית
בשדה home_directory_storage מציינים את מופע Filestore שיוטמע כספרייה /home בכל הצמתים באשכול. כך נוצרת ספריית בית משותפת ומתמשכת לכל המשתמשים.
צריך לציין את השם המלא של המשאב של מופע Filestore בתור הערך הזה.
לדוגמה:
"home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_NAME"
הגדרה מתקדמת של Slurm
אשכולות אימון של Gemini Enterprise Agent Platform מאפשרים לכם להתאים אישית קבוצה נבחרת של slurm.confפרמטרים, אבל חשוב לדעת שאפשר להגדיר את ההגדרות האלה רק במהלך היצירה הראשונית של האשכול, ואי אפשר לשנות אותן לאחר מכן.
ראיית חשבון
אשכולות האימון של Gemini Enterprise Agent Platform מאפשרים לכם להשתמש בתכונות מובנות של הנהלת חשבונות כדי לעקוב אחרי השימוש במשאבים באשכול. כדי לקבל מדריך מלא על מעקב אחרי מדדים כמו זמן מעבד ספציפי לעבודה ושימוש בזיכרון, אפשר לעיין במסמכי התיעוד הרשמיים של Slurm בנושא חשבונאות.
| פרמטר | ערך | דוגמה |
|---|---|---|
| AccountingStorageEnforce | מחרוזות מופרדות בפסיקים | associations,limits,qos |
קדימות ודחיקה
כדי לנהל את התזמון והתעדוף של משימות, אפשר להגדיר את ההפסקות של משימות ב-Slurm באמצעות אשכולות האימון של Gemini Enterprise Agent Platform. ההפסקות פועלות עם תוסף התעדוף הרב-גורמי כדי לקבוע אם צריך להשהות משימות שפועלות כדי לפנות מקום למשימות בעדיפות גבוהה יותר.
לסקירה כללית מלאה של המושגים, אפשר לעיין במסמכי העזרה הרשמיים של Slurm בנושא תוסף העדיפות הרב-גורמי והקדימות.
פרמטרים של קדימות
| פרמטר | ערך | דוגמה |
|---|---|---|
| PREEMPT_TYPE | String | preempt/partition_prio |
| PREEMPT_MODE | מחרוזות מופרדות בפסיקים | SUSPEND,GANG |
| PREEMPT_EXEMPT_TIME | String | 00:00:00 |
פרמטרים של עדיפות
| פרמטר | ערך | דוגמה |
|---|---|---|
| PRIORITY_TYPE | String | priority/multifactor |
| PRIORITY_WEIGHT_AGE | מספר שלם | 0 |
| PRIORITY_WEIGHT_ASSOC | מספר שלם | 0 |
| PRIORITY_WEIGHT_FAIRSHARE | מספר שלם | 0 |
| PRIORITY_WEIGHT_JOB_SIZE | מספר שלם | 0 |
| PRIORITY_WEIGHT_PARTITION | מספר שלם | 0 |
| PRIORITY_WEIGHT_QOS | מספר שלם | 0 |
| PRIORITY_WEIGHT_TRES | מחרוזות מופרדות בפסיקים | cpu=100,mem=150 |
סקריפטים של פתיח וסיום
אתם יכולים להגדיר סקריפטים מותאמים אישית של Bash שיפעלו אוטומטית בתחילת כל עבודה (פרוֹלוֹג) ובסופה (אֶפִילוֹג) באמצעות השדות הבאים:
-
prolog_bash_scripts: רשימה של מחרוזות, שכל אחת מהן מכילה את התוכן המלא של סקריפט Bash שיופעל לפני שהעבודה מתחילה. -
epilog_bash_scripts: רשימה של מחרוזות, שכל אחת מהן מכילה את התוכן המלא של סקריפט Bash שיופעל אחרי שהעבודה תסתיים.
האפשרות הזו שימושית להגדרת סביבת עבודה ייחודית או לביצוע משימות ניקוי אוטומטיות.
מפרט אשכול לדוגמה
בדוגמה הבאה מוצגת הגדרת JSON מלאה ליצירת אשכול אימון. אתם יכולים להתאים את המפרט הזה לצרכים שלכם.
{ // ... other cluster configurations ... "orchestratorSpec": { "slurmSpec": { "partitions": [ { "id": "a4", "node_pool_ids": ["a4"] } ], "login_node_pool_id": "login", "home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_ID", "accounting": { "accounting_storage_enforce": "ACCOUNTING_STORAGE_ENFORCE" }, "scheduling": { "priority_type": "PRIORITY_TYPE", "priority_weight_age": PRIORITY_WEIGHT_AGE, "priority_weight_assoc": PRIORITY_WEIGHT_ASSOC, "priority_weight_fairshare": PRIORITY_WEIGHT_FAIRSHARE, "priority_weight_job_size": PRIORITY_WEIGHT_JOB_SIZE, "priority_weight_partition": PRIORITY_WEIGHT_PARTITION, "priority_weight_qos": PRIORITY_WEIGHT_QOS, "priority_weight_tres": "PRIORITY_WEIGHT_TRES", "preempt_type": "PREEMPT_TYPE", "preempt_mode": "PREEMPT_MODE", "preempt_exempt_time": "PREEMPT_EXEMPT_TIME" }, "prolog_bash_scripts": [ "#!/bin/bash\necho 'First prolog script running'", "#!/bin/bash\necho 'Second prolog script running'" ], "epilog_bash_scripts": [ "#!/bin/bash\necho 'Epilog script running'" ] // ... other Slurm settings ... } } }
ניהול ותפעול של אשכולות
ניהול אשכול פעיל
אחרי שיוצרים את האשכול עם הגדרות החשבונאות והקדימות שבחרתם, אפשר להשתמש בכלי שורת הפקודה של Slurm כדי לנהל את חשבונות המשתמשים ולעקוב אחרי תזמון המשימות.
ניהול החשבון באמצעות sacctmgr
הפקודה sacctmgr היא הכלי העיקרי לניהול מידע על משתמשים וחשבונות במסד הנתונים של Slurm. לדוגמה, כדי להוסיף משתמש חדש לחשבון ולתת לו גישה למחיצה, מריצים את הפקודה הבאה:
sudo sacctmgr add User Accounts=<account> Partition=<partition> <user>
רשימה מקיפה של כל האפשרויות של sacctmgr זמינה במסמכי התיעוד הרשמיים של Slurm Accounting.
בדיקת העדיפות של העבודה
כדי לבדוק את רכיבי העדיפות של כל משימה בתור, משתמשים בכלי sprio. המידע הזה שימושי כדי להבין למה משימות מסוימות מתוזמנות להרצה לפני משימות אחרות.
פרטים נוספים על השימוש מופיעים במסמכי העזרה של sprioכלי השירות.
דוגמאות להפסקת פעולה
במסמכי התיעוד הרשמיים של Slurm יש כמה דוגמאות לשיטות שונות של קדימות. אפשר למצוא אותם בדף Slurm Preemption.
המאמרים הבאים
המאמר הזה מתמקד בשלבים האחרונים של מחזור החיים של למידת מכונה: ניהול, פריסה ומעקב אחרי המודלים המאומנים.
- פריסת המודל לצורך היסק: פורסים את המודל שאומן בנקודת קצה של Gemini Enterprise Agent Platform כדי להגיש בקשות להיסק אונליין בהיקף גדול.
- ניהול מחזור החיים של המודל: אפשר להשתמש ב-Gemini Enterprise Agent Platform מרשם המודלים כדי ליצור גרסאות של המודלים, להשוות ביניהם ולנהל אותם. אפשר להגדיר צינור להרשמה אוטומטית של מודל חדש אחרי אימון מוצלח.
- מעקב אחר הפעלות של צינורות עיבוד נתונים וביצועי מודלים:
- מעקב אחר צינורות: מעקב אחרי גרף הביצוע, הארטיפקטים והביצועים של הרצות צינורות כדי לנפות באגים ולבצע אופטימיזציה של התיזמור.
- מעקב אחרי המודל: אחרי הפריסה, צריך להגדיר מעקב כדי לזהות סחף ואנומליות בביצועי החיזוי של המודל. כך אפשר לשמור על הדיוק של המודל לאורך זמן.
- אופטימיזציה של העלויות וניהול מחזור החיים של האשכול: כשמשתמשים בצינורות אוטומטיים, צריך לנהל את מחזור החיים של האשכול על ידי התחשבות בתדירות ההרצה.
- אם מריצים את הצינור לעיתים רחוקות, כדאי להוסיף שלב אחרון לצינור כדי למחוק את האשכול ולחסוך בעלויות. בדרך כלל זה כולל יצירה של רכיב צינור בהתאמה אישית שקורא לפונקציית המחיקה.
- אם מריצים את העבודות לעיתים קרובות, כדאי להשאיר את האשכול פעיל כדי לקצר את זמן ההפעלה של העבודות.