קטגוריה: זמן ריצה: חוסר התאמה במאגר הנתונים הזמני של קלט התוכנית
השגיאה הזו מתרחשת כשזמן הריצה של XLA מזהה חוסר התאמה בין הגודל של מאגר הזיכרון שתוכנית מהודרת מצפה לו לבין הגודל של המאגר שסופק בפועל בזמן הריצה.
הודעת שגיאה לדוגמה:
XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).
XLA backends: TPU
סקירה כללית
בהודעת השגיאה מצוינים גם הגודל הצפוי וגם הגודל בפועל, וגם הצורות והפריסות של הטנסורים. שימו לב שהשגיאות האלה עשויות להתרחש גם אם לשני טנסורים יש צורה זהה, אבל הגודל שלהם בזיכרון יכול להיות שונה אם הפריסה הפיזית שלהם (איך הנתונים מחולקים ומסודרים בחומרה) שונה.
הסיבות העיקריות לשגיאות האלה הן:
- חוסר התאמה בהגדרות של נקודת ביקורת ו-XLA – מודל מאומן ונקודת ביקורת נשמרת. הפריסה הפיזית של המשקלים בנקודת הבדיקה הזו נקבעת לפי הגרסה וההגדרה המדויקות של XLA (למשל, דגלי XLA) באותו זמן. בהמשך, נקודת הבדיקה הזו נטענת בסביבה אחרת שבה ההגדרה השתנתה. דגל חדש, ערך ברירת מחדל שונה או שינוי בקוד של המודל או של XLA יכולים לגרום לסביבת זמן הריצה לצפות בפריסה פיזית שונה של המשקלים. כשהמאגר הישן מנקודת הבדיקה מועבר לתוכנית XLA החדשה שעברה קומפילציה, זמן הריצה מחזיר שגיאה.
- פריסות ספציפיות לחומרה או לטופולוגיה – קומפיילר XLA יכול לבחור פריסות פיזיות שונות לטנסורים כדי לבצע אופטימיזציה של הביצועים בחומרה שונה. פריסה אופטימלית ל-TPU מדגם v4 יכולה להיות שונה מפריסה ל-TPU מדגם v5, או אפילו לפרוסות שונות של אותו שבב (למשל, 4x4x4 לעומת 4x8). השגיאה מתרחשת כשמודל עובר קומפילציה עם הנחה לגבי הפריסה של טופולוגיה מסוימת, אבל בזמן הריצה הוא מתוזמן בטופולוגיה אחרת, או שיש באג בלוגיקת הפריסה של הקומפיילר עבור רכיב חומרה ספציפי.
ניפוי באגים
- מוודאים שההגדרה עקבית בין ייצוא המודל לבין הפעלות חוזרות מנקודות ביקורת:
- מומלץ להימנע משימוש בנקודות בקרה ישנות עם קוד חדש, אלא אם אתם בטוחים שלא בוצעו שינויים שמשפיעים על הפריסה.
- ייצוא מחדש של המודל השמור: אם יש חשד לאי התאמה בין נקודת ביקורת לבין הגדרה, הפתרון הכי אמין הוא לייצא מחדש את המודל השמור באמצעות אותו בסיס קוד ואותה הגדרה (עדכניים) שבהם אתם משתמשים להסקת מסקנות או לכוונון עדין.
- בודקים אם יש שינויים בהגדרות (למשל, דגלים של XLA) בין שתי ההרצות.
- פריסות ספציפיות לחומרה או לטופולוגיה:
- אם מחליפים חומרה או טופולוגיות, צריך לבדוק אם יש אי התאמות בגרסת החומרה ובטופולוגיה.