הכנה לאירועי תחזוקה

מכונות וירטואליות של TPU הן מקרים של מכונות וירטואליות של Compute Engine עם חומרת TPU מצורפת. מכונות וירטואליות ב-Compute Engine כפופות לאירועי תחזוקה של מכונות וירטואליות ב-Compute Engine. כל TPU מחובר למכונת VM ב-Compute Engine, כך ששימוש ביותר יחידות TPU (לדוגמה, ב-TPU slice) מגדיל את הסיכוי שאחת מהמכונות הווירטואליות שלכם תיתקל באירוע תחזוקה.

במאמר הזה מוסבר על גישות לטיפול באירועי תחזוקה של משימות אימון שפועלות לאורך זמן ביחידות Cloud TPU. מידע על טיפול באירועי תחזוקה של יחידות TPU ב-Google Kubernetes Engine ‏ (GKE) זמין במאמר ניהול שיבושים בצומתי GKE עבור יחידות GPU ו-TPU.

הצגת התראות לגבי תחזוקה קרובה

אתם יכולים לראות התראות על אירועי תחזוקה קרובים של המארח. כדי לצמצם את השיבושים בעומסי העבודה במהלך התחזוקה, מומלץ לעקוב אחרי חלונות הזמן לתחזוקה שנקבעו למכונה. מידע נוסף מופיע במאמר צפייה בהתראות על תחזוקה.

שימוש בנקודות ביקורת לשחזור מהיר מאירועי תחזוקה

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

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

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

לכל מסגרת ML יש מנגנונים שונים לשמירה ולטעינה של נקודות ביקורת. בדרך כלל, מודלים נתמכים של Cloud TPU כוללים שמירת נקודות ביקורת. מידע נוסף על יצירת נקודות ביקורת זמין במאמרים בנושא TensorFlow 2.x,‏ PyTorch או JAX/flax.

שימוש ב-Autocheckpoint

אתם יכולים להשתמש בתכונה Autocheckpoint כדי לשמור את ההתקדמות בתהליך האימון. לשם כך, צריך להגדיר את הקוד כך שישמור נקודת ביקורת לא מתוזמנת כשמתרחש אירוע תחזוקה. מידע נוסף על Autocheckpoint זמין במאמר בנושא Autocheckpoint ב-Cloud TPU.

ניסיון חוזר להריץ את סקריפט האימון

יכול להיות שסקריפט ההדרכה ייעצר כתוצאה מאירוע הפרעה. אפשר להשתמש בסקריפט bash כדי לנסות שוב ושוב להריץ את סקריפט ההדרכה עד שההדרכה תושלם. לדוגמה:

while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done

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

בצינורות אימון שמוכנים לייצור צריך להשתמש במערכת לניהול משאבים, כמו Google Kubernetes Engine‏ (GKE). מידע נוסף על שימוש ב-Google Kubernetes Engine עם מכונות וירטואליות של TPU זמין במאמר פריסת עומסי עבודה של TPU.

זיהוי כשלים ב-TPU ושחזור מהם

אם יחידת TPU לא משתחזרת מאירוע תחזוקה, אפשר להשתמש בסקריפט שחזור כדי לזהות את מצב ה-TPU, למחוק את ה-TPU וליצור אותו מחדש. דוגמה לסקריפט שחזור זמינה בקישור retry.sh. אם התהליך שמריץ את סקריפט ההדרכה קורס, אפשר לשנות את סקריפט השחזור כדי לנסות להריץ שוב את סקריפט ההדרכה.

מידע על מחיקה ויצירה מחדש של TPU באופן ידני מופיע במאמר בנושא ניהול משאבי TPU.

שימוש בתזמון איסוף

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

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

  • ביצוע משימות (זמין באמצעות --workload-type=AVAILABILITY_OPTIMIZED): סוג האוסף הזה מועיל לרוב עומסי העבודה של ביצוע משימות או הסקת מסקנות, שבהם נדרשת השבתה מינימלית בחלק ממקרים (עותקים) כדי להבטיח את המשכיות של השירות, גם במהלך אירועי תחזוקה. סוג האוסף serving מספק תזמון מדורג והפעלה של אירועי תחזוקה לקבוצה של מופעים. אפשר לציין אוסף להצגה רק ב-TPU v6e.

מידע נוסף על תזמון איסוף נתונים זמין במאמר בנושא תזמון איסוף נתונים של TPU לעומסי עבודה של הסקה.

זיהוי אירועי תחזוקה

כדי לזהות אם ומתי התרחש אירוע תחזוקה ב-TPU, אפשר להשתמש בפקודה gcloud compute tpus tpu-vm describe הבאה:

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

הפלט של הפקודה הזו מציג את המצב הנוכחי של ה-TPU ותיאור של אירוע התחזוקה האחרון. הפלט אמור להיראות כך:

health: HEALTHY
healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z

צפייה ביומני אירועי תחזוקה

אפשר לראות יומנים היסטוריים של אירועי תחזוקה ב-TPU ביומני ביקורת של אירועים במערכת.

  1. בתפריט הניווט במסוף Google Cloud , עוברים לדף Logs Explorer:

    כניסה לדף Logs Explorer

  2. כדי לראות אילו יחידות TPU הופסקו או הופעלו מחדש, משתמשים בשאילתת החיפוש הבאה:

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    בתוצאות מוצגים יומני רישום של כל ההפרעות והתיקונים של עובדי ה-TPU בטווח הזמן של החיפוש. היומנים כוללים:

    • התאריך והשעה של האירוע
    • סוג האירוע
    • באירועים מסוג terminate (סיום), הסיבה לסיום בשדה protoPayload.metadata.terminateReason

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