MLIR

概要

MLIR またはマルチレベル中間表現は、モデル表現と、ハードウェア固有のコードを生成する低レベルのコンパイラ/ Executor 間に位置するコンパイラユーティリティの表現形式とライブラリです。

MLIR は、最新の最適化コンパイラのための柔軟なインフラストラクチャです。 これは、中間表現(IR)の仕様と、その表現に対して変換を実行するためのコードツールキットで構成されていることを意味します。 (コンパイラ用語では、高レベルの表現から低レベルの表現に移行する際に、これらの変換は「Lowering」と呼ばれます)

MLIR は、LLVM から大きく影響されており、それから得る多数の優れたアイデアを惜しみなく再利用します。柔軟な型システムを持ち合わせ、同一のコンパイルユニットで複数の抽象レベルを組み合わせることで、グラフの表現、解析、および変換を実現します。これらの抽象には、TensorFlow 演算やネストされた多面体ループ領域のほか、LLVM 指示および固定ハードウェア演算と型が含まれます。

次のような多くのグループが MLIR への関心を持つことを期待しています。

  • 機械学習モデルのパフォーマンスとメモリ消費の最適化を目指すコンパイラ研究者および実装者
  • TPU、電話のポータブルニューラルハードウェア、その他のカスタム ASIC など、ハードウェアを TensorFlow に接続する方法を求めているハードウェアメーカー
  • コンパイラとハードウェアアクセラレーションの最適化を利用する、言語バインディングを記述する人

TensorFlow エコシステムには、ソフトウェアとハードウェアの複数のスタックで動作する多数のコンパイラとオプティマイザが含まれます。このスタックのあらゆる面を単純化するために、MLIR が徐々に採用されることを期待しています。

MLIR overview diagram