MLIR

بررسی اجمالی

MLIR یا Multi-Level Intermediate Representation، فرمت نمایشی و کتابخانه ای از ابزارهای کامپایلر است که بین نمایش مدل و کامپایلرها/اجراکننده های سطح پایین که کد مخصوص سخت افزار را تولید می کنند، قرار می گیرد.

MLIR در قلب خود یک زیرساخت انعطاف پذیر برای بهینه سازی کامپایلرهای مدرن است. این بدان معناست که شامل مشخصاتی برای بازنمایی‌های میانی (IR) و یک جعبه ابزار کد برای انجام تبدیل‌ها در آن نمایش است. (در اصطلاح کامپایلر، همانطور که از نمایش های سطح بالاتر به نمایش های سطح پایین تر حرکت می کنید، این تبدیل ها را می توان "کاهش" نامید)

MLIR بسیار تحت تأثیر LLVM است و بی‌وقفه از بسیاری از ایده‌های عالی از آن استفاده می‌کند. این یک سیستم نوع انعطاف‌پذیر دارد و امکان نمایش، تجزیه و تحلیل و تبدیل نمودارها را با ترکیب سطوح مختلف انتزاع در یک واحد تلفیقی فراهم می‌کند. این انتزاعات شامل عملیات TensorFlow، نواحی حلقه چندوجهی تودرتو، و حتی دستورالعمل های LLVM و عملیات ها و انواع سخت افزار ثابت می شود.

ما انتظار داریم MLIR مورد توجه بسیاری از گروه ها باشد، از جمله:

  • محققان و پیاده‌سازان کامپایلر به دنبال بهینه‌سازی عملکرد و مصرف حافظه مدل‌های یادگیری ماشین هستند
  • سازندگان سخت‌افزار به دنبال راهی برای اتصال سخت‌افزار خود به TensorFlow، مانند TPU، سخت‌افزار عصبی قابل حمل در تلفن‌ها و سایر ASIC‌های سفارشی هستند.
  • افرادی که پیوندهای زبانی را می نویسند و می خواهند از بهینه سازی کامپایلرها و شتاب سخت افزاری استفاده کنند.

اکوسیستم TensorFlow شامل تعدادی کامپایلر و بهینه ساز است که در سطوح مختلف نرم افزار و پشته سخت افزاری کار می کنند. ما انتظار داریم که پذیرش تدریجی MLIR همه جنبه های این پشته را ساده کند.

نمودار نمای کلی MLIR