אחרי שפורסים אשכול, אפשר לשנות או להסיר אותו באמצעות נקודות הקצה הבאות ל-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:labelsnode_poolsorchestrator_spec.slurm_spec.partitionsorchestrator_spec.slurm_spec.default_partition_idorchestrator_spec.slurm_spec.login_node_pool_idorchestrator_spec.slurm_spec.prolog_bash_scriptsorchestrator_spec.slurm_spec.epilog_bash_scriptsorchestrator_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.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
מחיקת אשכול
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 כדי לשרת בקשות להסקת מסקנות אונליין בקנה מידה נרחב.
- אופטימיזציה של העלויות: כדאי לבדוק באופן קבוע את השימוש באשכול ולמחוק אותו כשלא משתמשים בו באופן פעיל, כדי לצמצם את החיוב על חומרה שמורה.