بررسی اجمالی
برای تفکیک اهداف مختلف سخت افزاری و نرم افزاری، 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 (که در آینده حول گره های اعلان Swift/Clang) ساخته می شوند.
اگر میخواهید یک کامپایلر سطح پایین جدید وصل کنید، میتوانید یک گویش جدید و کاهشهای بین گویش TensorFlow Graph و گویش خود ایجاد کنید. این مسیر را برای سازندگان سخت افزار و کامپایلر هموار می کند. شما حتی می توانید گویش ها را در سطوح مختلف در یک مدل هدف قرار دهید. بهینهسازهای سطح بالاتر به بخشهای ناآشنا IR احترام میگذارند و منتظر سطح پایینتری برای مدیریت آن هستند.