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

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

במאמר הזה מוסבר על גישות לטיפול באירועי תחזוקה של משימות אימון ארוכות טווח ב-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 זמין במאמר בנושא Cloud TPU Autocheckpoint.

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

יכול להיות שסקריפט ההדרכה ייעצר כתוצאה מאירוע הפרעה. אפשר להשתמש בסקריפט 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

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