Przegląd
MLIR lub Multi-Level Intermediate Representation to format reprezentacji i biblioteka narzędzi kompilatora, która znajduje się między reprezentacją modelu a kompilatorami/wykonawcami niskiego poziomu, które generują kod specyficzny dla sprzętu.
MLIR jest w istocie elastyczną infrastrukturą dla nowoczesnych kompilatorów optymalizujących. Oznacza to, że składa się ze specyfikacji reprezentacji pośrednich (IR) i zestawu narzędzi kodu do wykonywania transformacji na tej reprezentacji. (W żargonie kompilatora, gdy przechodzisz od reprezentacji wyższego poziomu do reprezentacji niższego poziomu, te przekształcenia można nazwać „obniżeniami”)
MLIR jest pod silnym wpływem LLVM i bezwstydnie wykorzystuje z niego wiele wspaniałych pomysłów. Posiada elastyczny system typów i umożliwia reprezentowanie, analizowanie i przekształcanie grafów łączących wiele poziomów abstrakcji w tej samej jednostce kompilacji. Te abstrakcje obejmują operacje TensorFlow, zagnieżdżone regiony pętli wielościennych, a nawet instrukcje LLVM oraz naprawione operacje i typy sprzętowe.
Spodziewamy się, że MLIR zainteresuje wiele grup, w tym:
- Badacze i wdrożeniowcy zajmujący się kompilatorami, którzy chcą zoptymalizować wydajność i zużycie pamięci modeli uczenia maszynowego
- Producenci sprzętu szukający sposobu na podłączenie swojego sprzętu do TensorFlow, takiego jak TPU, przenośny sprzęt neuronowy w telefonach i inne niestandardowe układy ASIC
- Osoby piszące powiązania językowe, które chcą skorzystać z optymalizacji kompilatorów i akceleracji sprzętowej.
Ekosystem TensorFlow zawiera wiele kompilatorów i optymalizatorów, które działają na wielu poziomach stosu oprogramowania i sprzętu. Oczekujemy, że stopniowe przyjmowanie MLIR uprości każdy aspekt tego stosu.