ניהול האשכול

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

אחרי שפורסים אשכול, אפשר לשנות או להסיר אותו באמצעות נקודות הקצה הבאות ל-Agent Platform API:

  • ‫Update: שינוי של הגדרות אשכול קיים.
  • ‫Delete: הסרה סופית של אשכול והמשאבים שלו.

אפשר לעדכן אשכול רק באמצעות Agent Platform API. אפשר למחוק אשכול באמצעות Agent Platform API או באמצעות מסוף Google Cloud .

במאמר הצגת אשכולות מוסבר איך להציג את כל האשכולות או אשכולות ספציפיים.

אימות

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

עדכון אשכול

‫UPDATE_PAYLOAD מציין את הנתיב המקומי לקובץ JSON שמגדיר את ה-ModelDevelopmentCluster המלא שרוצים לעדכן.

לדוגמה, כדי לעדכן את מספר הצמתים במאגר של אשכול עם מעבד (CPU) בלבד, משתמשים במטען הייעודי (payload) הבא בפורמט JSON:

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": UPDATED_MIN_NODE_COUNT,
        "max_node_count": UPDATED_MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": 1,
        "max_node_count": 1
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

gcurl -X PATCH -d @UPDATE_PAYLOAD https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
פרמטרים של שאילתה
  • ‫updateMask (מחרוזת, אופציונלי): FieldMask שמציין אילו שדות לעדכן במשאב של אשכול פיתוח המודלים. רק השדות שמופיעים ב-updateMask משתנים.

    אפשר לציין את השדות הבאים במשאב ModelDevelopmentCluster ב-updateMask:

    • labels
    • node_pools
    • orchestrator_spec.slurm_spec.partitions
    • orchestrator_spec.slurm_spec.default_partition_id
    • orchestrator_spec.slurm_spec.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.config
    • ‫orchestrator_spec.slurm_spec.scheduling ו-orchestrator_spec.slurm_spec.accounting: שדות קודמים שמוחלפים על ידי config. באשכול אפשר להשתמש רק באחד מהם. עדכון הגדרות אישיות ב-Slurm
    • orchestrator_spec.slurm_spec.node_sets
  • ‫updateMode (enum, אופציונלי): מציין את מצב העדכון. הערכים שאפשר לבחור הם:

    • ‫UPDATE_MODE_UNSPECIFIED: ערך ברירת המחדל, נחשב כ-USER_AND_SERVICE.
    • ‫USER_ONLY: החלת שינויים רק בשדות שצוינו על ידי המשתמש בבקשה. השירות לא ירענן שדות שמנוהלים על ידי השירות, כמו סקריפטים של הפעלה, פרולוג או אפילוג. כל מאגר צמתים גם נשאר בתמונת המכונה שפועלת בו כרגע, אלא אם אתם מגדירים את node_image בעצמכם, כך שעדכון של USER_ONLY שמשמיט את node_image לא ייצור מחדש את הצמתים.
    • ‫USER_AND_SERVICE: החלת שינויים בשדות שצוינו על ידי המשתמש, ומתן אפשרות לשירות לרענן את השדות שמנוהלים על ידי השירות.
    מומלץ להשתמש ב-USER_AND_SERVICE כדי לוודא שהאשכול מעודכן.

הפקודה הבאה מעדכנת גם את ההגדרות של מאגר הצמתים וגם את המחיצות של Slurm.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.partitions,node_pools&updateMode=USER_AND_SERVICE'
הערה חשובה לגבי שדות חוזרים

בשדות חוזרים, כמו node_pools,‏ prolog_bash_scripts ו-epilog_bash_scripts, ה-API תומך רק בפעולת החלפה מלאה. כדי להחליף את הרשימה הקיימת, המשתמש צריך לספק את כל רשימת הפריטים הצפויה במטען הייעודי (payload) של הבקשה.

שינוי המחיצה שמוגדרת כברירת מחדל

כדי לשנות את המחיצה שמוגדרת כברירת מחדל בלי לשלוח מחדש את partitions, מגדירים את default_partition_id ומציינים רק את orchestrator_spec.slurm_spec.default_partition_id ב-updateMask. עדכון שמסיר את המחיצה שצוינה ב-default_partition_id או משנה את השם שלה יידחה.

עדכון הגדרות אישיות של Slurm

אפשר לשנות את ההגדרות האישיות של Slurm באשכול פעיל. החלת ההגדרות האלה לא מפעילה מחדש או מרוקנת צמתים: השירות יוצר מחדש את slurm.conf וטוען מחדש את בקר Slurm, כך שהמשימות בתור ואלה שפועלות לא מושפעות.

תמיד יש סיכון שהצמתים יופעלו מחדש אחרי שהמשימות הפועלות יסתיימו, בגלל שינויים בתלויות הבסיסיות. עם זאת, הסיכון הזה מצטמצם במצב העדכון USER_ONLY.

יכול להיות שיעבור קצת זמן עד שההגדרות החדשות יופיעו ב-scontrol show config אחרי שהפעולה תסתיים.

ההגדרות ברמת האשכול נקראות orchestrator_spec.slurm_spec.config, ההגדרות של מאגר הצמתים נקראות orchestrator_spec.slurm_spec.node_sets וההגדרות של המחיצות נקראות orchestrator_spec.slurm_spec.partitions, והן כוללות את ה-config של כל מחיצה ואת החברות בה. כל מפה מוחלפת במלואה, באותו אופן כמו השדות החוזרים שתוארו קודם. שולחים את קבוצת הפרמטרים המלאה שרוצים. פרמטר שלא תכללו יוסר. כדי לנקות מפה, צריך לציין את הנתיב שלה ב-updateMask ולשלוח אותה ריקה.

הפקודה הבאה מפעילה את ההפקעה לפי עדיפות המחיצה באשכול קיים.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.config&updateMode=USER_ONLY'

כאשר update-payload.json מכיל, באופן חלקי:

{
  ...,
  "orchestrator_spec": {
    "slurm_spec": {
      ...,
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "REQUEUE",
        "PreemptExemptTime": "1:01",
        "SchedulerParameters": "bf_continue,bf_window=1440"
      }
    }
  }
}

מגדירים פרמטרים ברמת האשכול ב-config במקום ב-scheduling וב-accounting, שהוא מחליף. אשכול משתמש באחד מהם, ובקשה שמגדירה את שניהם נדחית.

אם קוראים ל-PATCH בלי updateMask, השירות משווה את כל המטען הייעודי (payload) לאשכול הנוכחי, כך שמטען ייעודי שמשמיט את ההגדרות האלה מוחק את מה שכבר קיים באשכול. מעבירים updateMask כדי להגדיר את היקף העדכון לשדות שרוצים לשנות. שדה שאתם מציינים את השם שלו אבל לא כוללים אותו במטען הייעודי (payload) יימחק.

כדי להעביר אשכול קיים מ-scheduling ומ-accounting אל config, שולחים כל הגדרה ב-config באמצעות השם שלה ב-slurm.conf, לדוגמה AccountingStorageEnforce או PriorityWeightQOS, משאירים את scheduling ואת accounting מחוץ למטען הייעודי (payload), ונותנים שם לכל השלושה ב-updateMask כדי שהשדות הישנים יותר יימחקו. אחרי זה, מספיק updateMask של orchestrator_spec.slurm_spec.config בלבד.

בחירת תמונה לצומת

מכיוון ש-node_pools מוחלף במלואו, מאגר צמתים במטען הייעודי (payload) של העדכון שמשמיט את node_image, פותר את בעיית תמונת ברירת המחדל הנוכחית של סוג המכונה שלו. ברירת המחדל הזו מתקדמת עם הזמן, כך שהשמטת node_image מעבירה את מאגר הצמתים לתמונה הזמינה האחרונה, שלרוב זה מה שרוצים: היא אוספת תיקוני באגים, אבטחה ומנהלי התקנים.

כדי לשמור על מאגר צמתים בתמונת דיסק ספציפית במהלך עדכונים, מגדירים את node_image לתמונת הדיסק הזו (לדוגמה, projects/IMAGE_PROJECT/global/images/IMAGE). אם קוראים את הערך הנוכחי מ-Get כדי לשלוח אותו בחזרה, חשוב לשים לב שאשכול שמעולם לא עודכן מדווח על node_image ריק, אלא אם node_image הוגדר כשהאשכול נוצר.

ההתנהגות אחרי העדכון וסטטוס האשכול

בקשה מוצלחת מחזירה פעולה ממושכת (LRO). אחרי זה אפשר לעקוב אחרי הסטטוס של הפעולה באמצעות הפקודה הבאה:

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
אחרי שפעולת העדכון מסתיימת, רוב השינויים נכנסים לתוקף באופן מיידי (או תוך 15 שניות של זמן הסנכרון של Slurm) ולא נדרשת פעולה נוספת. צריך ליצור מחדש את המשאבים רק אם משנים את תשתית המחשוב הבסיסית של האשכול, כולל שינויים במקורות האחסון ובסקריפטים לטעינה בזמן ההפעלה.

מחיקת אשכול

  gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
  

אם הפקודה מסתיימת ללא שגיאות, היא מחזירה מזהה של פעולה ממושכת, שאפשר לעקוב אחריה באמצעות הפקודה operations describe.

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

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

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

  • ניהול האימון באמצעות פלטפורמת הצינורות לעיבוד נתונים של סוכני Gemini Enterprise: אתם יכולים להפוך את כל מחזור החיים של משימות האימון לאוטומטי, מהכנת הנתונים ועד לרישום המודל, באמצעות צינורות עיבוד נתונים שמטרגטים את האשכול המנוהל שלכם.
  • מעקב אחרי משימות האימון וניפוי באגים: מעקב אחרי ההתקדמות והשימוש במשאבים, וזיהוי בעיות במשימות האימון המבוזרות שפועלות באשכול.
  • פריסת המודל להסקת מסקנות: אחרי שהמודלים אומנו ונרשמו, פורסים אותם בנקודת קצה של Gemini Enterprise Agent Platform כדי לשרת בקשות להסקת מסקנות אונליין בקנה מידה נרחב.
  • אופטימיזציה של העלויות: כדאי לבדוק באופן קבוע את השימוש באשכול ולמחוק אותו כשלא משתמשים בו באופן פעיל, כדי לצמצם את החיוב על חומרה שמורה.