MLIR

סקירה כללית

MLIR, או Multi-Level Intermediate Representation, הוא פורמט ייצוג וספרייה של כלי עזר מהדרים שנמצאים בין ייצוג המודל לבין מהדרים/מבצעים ברמה נמוכה שמייצרים קוד ספציפי לחומרה.

MLIR היא, בליבה, תשתית גמישה לאופטימיזציה מודרנית של מהדרים. המשמעות היא שהוא מורכב ממפרט לייצוגי ביניים (IR) ומערכת כלים של קוד לביצוע טרנספורמציות על ייצוג זה. (בעגת המהדר, כשאתה עובר מייצוגים ברמה גבוהה יותר לייצוגים ברמה נמוכה יותר, ניתן לכנות טרנספורמציות אלו "הורדות").

MLIR מושפע מאוד מ- LLVM ומשתמש מחדש ללא בושה ברעיונות נהדרים רבים ממנו. יש לו מערכת סוגים גמישה, ומאפשרת ייצוג, ניתוח והמרת גרפים המשלבים מספר רב של רמות הפשטה באותה יחידת הידור. ההפשטות הללו כוללות פעולות TensorFlow, אזורי לולאה פוליהדרלית מקוננים, ואפילו הוראות LLVM ופעולות וסוגי חומרה קבועים.

אנו מצפים ש-MLIR יעניין קבוצות רבות, כולל:

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

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

דיאגרמת סקירה של MLIR