דף זה תורגם על ידי Cloud Translation API.
Switch to English

אדריכלות XLA

מדוע בנינו XLA?

היו לנו מספר יעדים עבור XLA לעבוד עם TensorFlow:

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

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

  • צמצם את ההסתמכות על אופציות מותאמות אישית. הסר את הצורך ב- Ops מותאמים אישית רבים על ידי שיפור הביצועים של Ops ברמה נמוכה התמזגו אוטומטית כדי להתאים לביצועים של Ops מותאמים אישית שהותכו ביד.

  • צמצם את טביעת הרגל הניידת. בטל את זמן הריצה של TensorFlow על ידי קומפיסת תת-הגרף מבעוד מועד והוצאת זוג קבצי אובייקט / כותרת שניתן לקשר ישירות ליישום אחר. התוצאות יכולות להפחית את טביעת הרגל למסקנה ניידת בכמה סדרי גודל.

  • שפר את הניידות. הקל יחסית על כתיבת backend חדש לחומרה חדשנית, ואז חלק גדול מתוכניות TensorFlow יפעלו ללא שינוי על אותה חומרה. זאת בניגוד לגישה של התמחות Ops מונוליטית בודדת עבור חומרה חדשה, הדורשת שכתוב של תוכניות TensorFlow כדי להשתמש באותם Ops.

איך XLA עובד?

שפת הקלט ל- XLA נקראת "HLO IR", או סתם HLO (High Level Operations). הסמנטיקה של HLO מתוארת בעמוד מבצע סמנטיקה . הכי נוח לחשוב על HLO כ- IR מהדר .

XLA לוקח גרפים ("חישובים") המוגדרים ב- HLO ומרכיב אותם להוראות מכונה לארכיטקטורות שונות. XLA הוא מודולרי במובן זה שקל לחרב מגב חלופי למטרות ארכיטקטורת HW חדשנית . ה- backend של המעבד עבור x64 ו- ARM64 כמו גם ה- back-up של NVIDIA GPU נמצאים בעץ המקור TensorFlow.

התרשים הבא מציג את תהליך ההידור ב- XLA:

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

לאחר השלב שאינו תלוי ביעד, XLA שולח את חישוב ה- HLO למגב. ה- backend יכול לבצע אופטימיזציות נוספות ברמת HLO, הפעם תוך התחשבות במידע ובצרכים ספציפיים. לדוגמא, ה- back back של XLA GPU עשוי לבצע מיזוג פעולה מועיל במיוחד עבור מודל התכנות של GPU ולקבוע כיצד לחלק את החישוב לזרמים. בשלב זה, גיבויים עשויים גם להתאים תבניות לפעולות מסוימות או שילובים שלהן לשיחות ספרייה מותאמות.

השלב הבא הוא יצירת קוד ספציפי למטרה. מעברי ה- CPU וה- GPU הכלולים ב- XLA משתמשים ב- LLVM לייצור IR ברמה נמוכה, אופטימיזציה ויצירת קוד. מגבים אלה פולטים את ה- LLVM IR הדרוש לייצוג חישוב ה- XLA HLO בצורה יעילה, ואז קוראים ל- LLVM לפליטת קוד מקורי מ- IR LLVM זה.

ה- backend של GPU תומך כרגע ב- GPUs של NVIDIA דרך ה- LLVM NVPTX backend; ה- backend של המעבד תומך במספר ISA של מעבד.