Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Dialekty MLIR

Przegląd

Aby oddzielić różne cele sprzętowe i programowe, MLIR ma „dialekty”, w tym:

  • TensorFlow IR, który reprezentuje wszystkie możliwe rzeczy na wykresach TensorFlow.
  • XLA HLO IR, który został zaprojektowany tak, aby wykorzystać możliwości kompilacji XLA (z wyjściem między innymi do TPU).
  • Eksperymentalny dialekt afiniczny, który koncentruje się na wielościennych reprezentacjach i optymalizacjach.
  • LLVM IR, który ma mapowanie 1: 1 między nim a własną reprezentacją LLVM, umożliwiając MLIR emitowanie kodu GPU i procesora za pośrednictwem LLVM.
  • TensorFlow Lite, co przełoży się na uruchamianie kodu na platformach mobilnych.

Każdy dialekt składa się z zestawu zdefiniowanych operacji, które mają umieszczone na sobie niezmienniki, takie jak: „To jest operator binarny, a wejścia i wyjścia mają te same typy”.

Dodawanie do MLIR

MLIR nie ma ustalonej / wbudowanej listy globalnie znanych operacji (brak „wewnętrznych”). Dialekty mogą definiować całkowicie niestandardowe typy, w ten sposób MLIR może modelować takie rzeczy, jak system typu LLVM IR (który ma agregaty pierwszej klasy), abstrakcje domeny ważne dla akceleratorów zoptymalizowanych pod kątem ML, takich jak typy kwantowane, a nawet systemy typu Swift lub Clang (które są budowane wokół węzłów deklaracji Swift / Clang) w przyszłości.

Jeśli chcesz podłączyć nowy kompilator niskiego poziomu, możesz utworzyć nowy dialekt i obniżenia między dialektem TensorFlow Graph a Twoim dialektem. Ułatwia to drogę twórcom sprzętu i kompilatorów. W tym samym modelu można nawet kierować reklamy na dialekty na różnych poziomach; optymalizatory wyższego poziomu będą uwzględniać nieznane części IR i czekać, aż niższy poziom go obsłuży.