ניהול האשכול

אם אתם מעוניינים באשכולות אימון של 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 המלא שרוצים לעדכן.

לדוגמה, כדי לעדכן את מספר הצמתים במאגר של אשכול עם מעבד בלבד, משתמשים במטען הייעודי (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, optional): מציין את מצב העדכון. הערכים שאפשר לבחור הם:

    • ‫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, השירות מבצע השוואה בין כל מטען הייעודי לבין האשכול הנוכחי, ולכן מטען ייעודי שבו ההגדרות האלה מושמטות ינקה את כל מה שכבר קיים באשכול. מעבירים updateMask כדי להגדיר את היקף העדכון לשדות שרוצים לשנות. שדה שנותנים לו שם אבל לא כוללים אותו במטען הייעודי (payload) נמחק.

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

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

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

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