Gemini Enterprise Agent Platform כולל מערכת מקיפה לבדיקת תקינות, כדי להבטיח את המהימנות של צמתי מחשוב ואת היציבות של משימות Slurm. במערכת הזו יש אפשרויות שחזור אוטומטיות וידניות. תהליך אוטומטי פועל במהלך ביצוע המשימה כדי לעקוב אחרי רכיבים קריטיים כמו תקינות ה-GPU והשימוש בדיסק, ומחליף באופן אוטומטי צמתים שנכשלים. במקרים שבהם נדרשת התערבות של המשתמש,
אשכול האימון מספק reportFaultyNodesAPI, שמאפשר למחוק ידנית צומת פגום ספציפי או לדווח על חשד לכשל בחומרה במארח הבסיסי שלו.
הפעלת עומס עבודה לבדיקה כדי לוודא שהפונקציונליות של ה-GPU פועלת
שלב 1: מתחברים לצמתי האשכול באמצעות SSH
מ-Cloud Shell או ממסוף Google Cloud , מתחברים לצומת הכניסה באמצעות IAP. בדוגמה הבאה אפשר לראות את הפקודה עבור Cloud Shell:
gcloud compute ssh --zone $ZONE "Login Node Name" --tunnel-through-iap --project $PROJECT_ID
שלב 2: מריצים פקודת Slurm רגילה
אחרי שמתחברים לצומת הכניסה, מריצים כמה פקודות Slurm רגילות כדי לוודא שהאשכול פועל בצורה תקינה.
~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
partition1* up infinite 2 idle hcsa3m1236-a3mnodeset-[0-1]
בשלב הבא, שולחים משימה באצווה.
~$ sbatch --qos normal --wrap "echo start! && sleep 10s && echo done!"
אמור להופיע קובץ בשם slurm-job-id.out בספריית הבית.
שלב 3: מריצים עומס עבודה של GPU
שומרים את התוכן הבא כקובץ סקריפט בשם test.sh בספריית הבית.
#!/bin/bash
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:8
#SBATCH --job-name=nvidia_smi
srun nvidia-smi -L
מגדירים את ההרשאות של הסקריפט ל-755 כדי לאפשר את ההרצה שלו, ואז שולחים את משימת Slurm:
~$ sbatch ./test.sh
מערכת Slurm שומרת את הפלט של הסקריפט בקובץ בשם slurm-job-id.out.
הפלט אמור להיראות כך:
GPU 0: NVIDIA H100 80GB HBM3 (UUID: GPU-f75045e8-4d87-49d1-2eb9-39ec2baddf9b)
GPU 1: NVIDIA H100 80GB HBM3 (UUID: GPU-b91556d8-5215-d0ed-50b8-a88720e5b29c)
GPU 2: NVIDIA H100 80GB HBM3 (UUID: GPU-7600155a-0036-35f5-9489-a7b4ed0ce887)
GPU 3: NVIDIA H100 80GB HBM3 (UUID: GPU-a402e125-7841-033f-f08b-7921526c121f)
GPU 4: NVIDIA H100 80GB HBM3 (UUID: GPU-20eef8f8-b2c7-1716-5ce7-7f64475bd2c0)
GPU 5: NVIDIA H100 80GB HBM3 (UUID: GPU-65463286-e587-b52f-4d5b-8880eecbf0e7)
GPU 6: NVIDIA H100 80GB HBM3 (UUID: GPU-d5ff75e7-dd54-edf6-a684-33c26fc365e1)
GPU 7: NVIDIA H100 80GB HBM3 (UUID: GPU-26e81ae2-11fd-9d7e-95b6-c186e5173007)
GPU 0: NVIDIA H100 80GB HBM3 (UUID: GPU-e66a185a-b40c-81d9-d35d-19cab811df34)
GPU 1: NVIDIA H100 80GB HBM3 (UUID: GPU-d23e5cf7-afd8-bec2-1487-9e27eeb6aae0)
GPU 2: NVIDIA H100 80GB HBM3 (UUID: GPU-4dde1b05-ea5e-01e9-5c1e-e1c0d3b4b113)
GPU 3: NVIDIA H100 80GB HBM3 (UUID: GPU-3a0d734a-6fb8-d841-a97f-d6846553ea7f)
GPU 4: NVIDIA H100 80GB HBM3 (UUID: GPU-76fe0d37-08b2-a3a6-8ddf-55501426bc7c)
GPU 5: NVIDIA H100 80GB HBM3 (UUID: GPU-9e0a41e1-b399-8934-01af-6198b749c02a)
GPU 6: NVIDIA H100 80GB HBM3 (UUID: GPU-dddd09ee-c944-1098-9c4e-d96f8762ecb1)
GPU 7: NVIDIA H100 80GB HBM3 (UUID: GPU-df52c109-0ac1-30cc-226b-85b1a8a6bc16)
בדיקות תקינות אוטומטיות ושחזור
כדי להבטיח את המהימנות של הצמתים, אשכולות האימון עוקבים באופן רציף אחרי תקינות הצמתים באמצעות חבילת הבדיקות האוטומטיות הבאה. אשכולות האימון מריצים בדיקות תקינות במהלך הפרוֹלוֹג של Slurm (לפני שתהליך מתחיל) והאפילוג (אחרי שתהליך מסתיים).
חבילת בדיקות תקינות
- תקינות ה-GPU: מריץ אבחון מפורט של כל GPU בנפרד, כולל
nvidia-smi,dcgmiוxidמעקב אחר קוד. - השימוש בדיסק: בדיקה של שימוש גבוה בדיסק במחיצות קריטיות (
/,/mnt/localssd,/mnt/localdisk) כדי למנוע כשלים בעבודות בגלל חוסר מקום. - תקינות הרשת: מוודא שלממשקי הרשת הראשיים יש כתובת IPv4. אם נמצאת בעיה, המערכת מנסה לתקן אותה בעצמה על ידי איפוס הממשק.
- עומס על המעבד: המדד הזה מנטר את העומס הממוצע על המערכת ומתעד אזהרה אם הוא חורג מסף מוגדר מראש.
תהליך שחזור לאחר כשל
אם בדיקה מזהה שגיאה חמורה שלא ניתן לתקן, אשכולות האימון של פלטפורמת הסוכנים של Gemini Enterprise מפעילים באופן אוטומטי תהליך לשחזור במקרה של כשל. התהליך הרגיל כולל ניקוי של הצמתים הפגומים, הוספה מחדש של משימת Slurm המושפעת לתור, ואז מחיקה ויצירה מחדש של הצמתים המנוקים כדי להחזיר אותם למצב תקין.
השחזור האוטומטי הזה כפוף לתנאים הבאים:
מגבלת הפעלה מחדש: תהליך השחזור ידלג אם העבודה הרלוונטית ב-Slurm כבר הופעלה מחדש מספר מסוים של פעמים.
ניצול GPU: המערכת מדלגת על מחיקה ויצירה מחדש של הצומת גם אם העבודה שרצה בצומת לא משתמשת בכל מעבדי ה-GPU הזמינים. במקרה כזה, הצומת מנוקז רק כדי למנוע תזמון של משימות חדשות בו.
כל פעולת שחזור מתועדת ביומנים של הפרויקט כאירוע חוסן. כדי לראות תרשים של האירועים האלה בהשוואה למצב Slurm של הצמתים, אפשר לעיין במאמר בנושא מעקב אחרי אירועי חוסן באמצעות לוח בקרה.
ניהול ידני של צמתי מחשוב פגומים
אשכולות אימון מספקים ממשקי API לדיווח ידני על צמתי מחשוב פגומים ולניהול שלהם. זה שימושי במיוחד אם בדיקות תקינות אוטומטיות לא פותרות בעיה. אפשר להריץ את הפעולות האלה רק בצומת אחד בכל פעם.
| פעולה | תיאור | מתאים במיוחד ל |
|---|---|---|
| מחיקת הצומת | מסירה מהאשכול צומת פגום שצוין. זו פעולת ברירת המחדל. | שגיאות כלליות או כשצריך למחזר צומת שלא מגיב. |
| דיווח על מארח כפגום | מדווח על המארח הפיזי הבסיסי כפגום, ומתחיל תהליך תיקון או העברה. | כשלים אפשריים בחומרה במכונה הפיזית שמארחת את צומת ה-GPU. |
פעולה 1: מחיקת צומת פגום
הפעולה הזו מוחקת את הצומת שצוין. התוצאה של הפעולה הזו תלויה בסיווג של הצומת כ'סטטי' או כ'דינמי' על ידי Slurm:
צמתים סטטיים: אם האינדקס של צומת שנמחק קטן ממספר הצמתים המינימלי במאגר הצמתים, נוצר מחדש צומת מחשוב חדש עם אותו שם ואותן הגדרות.
צמתים דינמיים: אם האינדקס של צומת שנמחק גדול ממספר הצמתים המינימלי, הצומת נוצר מחדש רק אם יש עומס עבודה בהמתנה שמתוזמן עבורו. אחרת, הוא יוסר.
בדוגמאות האלה אנחנו משתמשים בכינוי gcurl, שהוא קיצור דרך נוח ומאומת לאינטראקציה עם נקודות הקצה של ה-API. הפקודה הבאה יוצרת כינוי ל-curl שכולל את כותרות ההרשאה הנדרשות.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
בקשת API למחיקת צומת
כדי למחוק צומת פגום, מריצים את בקשת ה-POST הבאה. הערך NODE_ID
צריך להיות בפורמט CLUSTER_ID-NODEPOOL_ID-INDEX.
gcurl -X POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID:reportFaultyNodes -d '{"nodeActions": [{"nodeId": "NODE_ID"}]}'
בדיקת סטטוס הפעולה
אפשר לעקוב אחרי התוצאה של פעולתreportFaultyNodes על ידי בדיקת סטטוס הפעולה.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
פעולה 2: דיווח על מארח כפגום
Google Cloud וליצור קשר עם צוות התמיכה.אם אתם חושדים בכשל בחומרה, אתם יכולים לדווח על המארח הפיזי של צומת GPU כפגום.
מכונות וירטואליות נתמכות: A3 Ultra ו-A4 High-GPU
מצב הצומת: צומת היעד צריך להיות במצב
RUNNINGלפני ששולחים קריאה ל-API. הוא ישתנה ל-REPAIRINGאם השיחה תצליח, ויחזור ל-RUNNINGאחרי שהמארח יתוקן או שהצומת ייווצר מחדש במארח חדש. הפעולה הזו מתבצעת על בסיס הכי טוב שאפשר.
דרישה מוקדמת: מתן תפקיד IAM
כדי להשתמש בתכונה הזו, צריך להעניק לסוכן השירות של Agent Platform את התפקיד Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1).
PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID\ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.iam.gserviceaccount.com" \ --role="roles/compute.instanceAdmin.v1"
בקשת API לדיווח על מארח
מבצעים את בקשת ה-POST הבאה כדי לדווח על המארח הבסיסי כפגום. כשעושים זאת, צריך לספק התנהגות אחת או יותר שנצפתה ותיאורים עבור faultReasons.
בשדה behavior צריך להשתמש באחד מהערכים הבאים:
| התנהגות | תיאור |
|---|---|
PERFORMANCE |
יש בעיות בביצועים של יחידות ה-GPU שמצורפות למכונה הווירטואלית בהשוואה ליחידות GPU אחרות באשכול, לא מופיעות שגיאות XID ביומנים, ומערכת Compute Engine לא מזהה תבניות כשל רגילות אחרות כמו השחתת נתונים שקטה. |
SILENT_DATA_CORRUPTION |
הנתונים במכונת ה-VM פגומים, אבל מכונת ה-VM ממשיכה לפעול. הסיבה לכך יכולה להיות בעיות כמו פגמים ב-vCPU, באגים בתוכנה או בעיות בקרנל. |
UNRECOVERABLE_GPU_ERROR |
זיהית שגיאת GPU שלא ניתן לשחזר עם XID. |
BEHAVIOR_UNSPECIFIED |
אתם לא בטוחים מה הבעיה במכונה הווירטואלית. |
הנה דוגמה לבקשת API.
gcurl -X POST \
https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID:reportFaultyNodes \
-d '{"nodeActions": [{"nodeId": "NODE_ID", "reportFaultyHost": {"faultReasons": [{"behavior": "BEHAVIOR_1", "description": "DESCRIPTION_1"}, {"behavior": "BEHAVIOR_2", "description": "DESCRIPTION_2"}]}}]}'
איך הכל משתלב יחד
בעזרת בדיקות תקינות אוטומטיות ואמצעי הבקרה הידניים שמפורטים בדף הזה, תוכלו לשמור על סביבת אימון עמידה במיוחד. ניהול יזום של תקינות האשכול על ידי מחיקת צמתים פגומים או דיווח על בעיות בחומרה מבטיח זמן פעולה מקסימלי והשלמה מוצלחת של משימות האימון. במקרה של בעיות מורכבות או בעיות שחוזרות על עצמן, מומלץ תמיד להתייעץ עם Google Cloud צוות התמיכה כדי לקבל אבחון מעמיק ועזרה.
המאמרים הבאים
הגדרת אשכול האימון לסבילות לתקלות היא שלב חשוב ביצירת תהליך עבודה מלא של MLOps שמוכן לייצור.
- מעקב אחר עבודות האימון וניפוי באגים בהן: אפשר לעקוב אחרי ההתקדמות, השימוש במשאבים והתקינות של עבודות האימון, כולל הסבר איך לזהות מתי צומת שוחזר או מתי עבודה הופעלה מחדש בגלל כשל.
- ארגון משימות עמידות באמצעות צינורות של Gemini Enterprise Agent Platform: בסביבות ייצור, אפשר להשתמש בצינורות של Gemini Enterprise Agent Platform כדי ליצור תהליך עבודה אוטומטי שניתן לחזרה, ששולח את משימות האימון העמידות שלכם לאשכול.
- ניהול המודל ופריסתו: אחרי שמשימת האימון העמידה מסתיימת, משתמשים במאגר המודלים של פלטפורמת Gemini Enterprise Agent כדי ליצור גרסה של ארטיפקט המודל לפני פריסת המודל לנקודת קצה כדי להציג בקשות הסקה אונליין.