Przegląd
MLIR, czyli wielopoziomowa reprezentacja pośrednia, to format reprezentacji i biblioteka narzędzi kompilatora, która znajduje się pomię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 tej reprezentacji. (W żargonie kompilatora, gdy przechodzisz z reprezentacji wyższego poziomu do reprezentacji niższego poziomu, transformacje te można nazwać „obniżeniami”)
MLIR pozostaje 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 wykresó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 ustalone operacje i typy sprzętowe.
Oczekujemy, że MLIR zainteresuje wiele grup, m.in.:
- Badacze i realizatorzy kompilatorów chcący zoptymalizować wydajność i zużycie pamięci w modelach 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 przyjęcie MLIR uprości każdy aspekt tego stosu.