Ringkasan
MLIR, atau Representasi Menengah Multi-Level, adalah format representasi dan pustaka utilitas kompiler yang berada di antara representasi model dan kompiler/pelaksana tingkat rendah yang menghasilkan kode khusus perangkat keras.
MLIR, pada intinya, adalah infrastruktur fleksibel untuk kompiler pengoptimalan modern. Ini berarti terdiri dari spesifikasi untuk representasi perantara (IR) dan toolkit kode untuk melakukan transformasi pada representasi itu. (Dalam bahasa kompiler, saat Anda berpindah dari representasi tingkat yang lebih tinggi ke representasi tingkat yang lebih rendah, transformasi ini dapat disebut "penurunan")
MLIR sangat dipengaruhi oleh LLVM dan tanpa malu-malu menggunakan kembali banyak ide hebat darinya. Ini memiliki sistem tipe yang fleksibel, dan memungkinkan representasi, analisis, dan transformasi grafik yang menggabungkan beberapa tingkat abstraksi dalam unit kompilasi yang sama. Abstraksi ini mencakup operasi TensorFlow, region loop polihedral bersarang, dan bahkan instruksi LLVM serta jenis dan operasi perangkat keras tetap.
Kami berharap MLIR menarik bagi banyak kelompok, termasuk:
- Peneliti dan pelaksana kompiler yang ingin mengoptimalkan kinerja dan konsumsi memori model pembelajaran mesin
- Pembuat perangkat keras mencari cara untuk menghubungkan perangkat keras mereka ke TensorFlow, seperti TPU, perangkat keras saraf portabel di ponsel, dan ASIC khusus lainnya
- Orang yang menulis binding bahasa yang ingin memanfaatkan pengoptimalan kompiler dan akselerasi perangkat keras.
Ekosistem TensorFlow berisi sejumlah kompiler dan pengoptimal yang beroperasi di berbagai tingkat tumpukan perangkat lunak dan perangkat keras. Kami mengharapkan adopsi MLIR secara bertahap untuk menyederhanakan setiap aspek dari tumpukan ini.