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

ניבים של MLIR

סקירה כללית

כדי להפריד בין יעדי חומרה ותוכנה שונים, ל- MLIR יש "ניבים", כולל:

  • TensorFlow IR המייצג את כל הדברים האפשריים בתרשימי TensorFlow.
  • XLA HLO IR, אשר נועד לנצל את יכולות ההרכבה של XLA (עם פלט בין היתר ל- TPU).
  • ניב אפיון ניסיוני, המתמקד בייצוגים ואופטימיזציות פוליאדרליות.
  • LLVM IR, שיש לו מיפוי 1: 1 בינה לבין הייצוג של LLVM עצמו, ומאפשר ל- MLIR לפלוט קוד GPU וקוד CPU באמצעות LLVM.
  • TensorFlow Lite, שיתורגם לקוד ריצה בפלטפורמות סלולריות.

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

מוסיף ל- MLIR

ל- MLIR אין רשימה קבועה / מובנית של פעולות ידועות ברחבי העולם (אין "מהותיות"). ניבים יכולים להגדיר סוגים מותאמים אישית לחלוטין, וכך MLIR יכולה לדגמן דברים כמו מערכת LLVM IR (הכוללת אגרגטים מהשורה הראשונה), הפשטות דומיין החשובות למאיצים המותאמים ל- ML כמו סוגים כמותיים, ואפילו מערכות מסוג Swift או Clang (אשר נבנים סביב צמתים של סוויפט / קלנג) בעתיד.

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