תזמור

אם אתם מעוניינים באשכולות אימון של Gemini Enterprise Agent Platform, אתם יכולים לפנות לנציג המכירות שלכם כדי לקבל גישה.

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