MLIR 方言

概要

さまざまなハードウェアやソフトウェアのターゲットを区別するために、MLIR には、次のような「方言」が含まれています。

  • TensorFlow IR: TensorFlow グラフで可能なことすべてを代表する方言です。
  • XLA HLO IR: XLA のコンパイル機能(特に TPU への出力)を利用するように設計されています。
  • 実験的なアフィン方言: 多面体表現と最適化に焦点が当てられています。
  • LLVM IR: LLVM と LLVM 独自表現が 1 対 1 でマッピングされているため、MLIR は LLVM を介して GPU や CPU コードを発行できます。
  • TensorFlow Lite: モバイルプラットフォームの実行コードに変換します。

各方言は、「これは二項演算子であり、入力と出力の型が同じです」のように、不変式が配置された一連の定義済み演算で構成されています。

MLIR に追加する

MLIR には、グローバルに知られている演算の固定/組み込みリストはありません(「組み込み」はありません)。方言は、完全にカスタムの型を定義できるため、MLIR は、LLVM IR 型システム(第一次集計を持つ)や、量子化型などの ML 最適化アクセラレータで重要なドメインの抽象化、さらに、将来的には Swift や Clang 型システム(Swift/Clang 宣言ノード周りに構築されるシステム)などをモデル化することができます。

新しい低レベルコンパイラを接続する場合は、新しい方言を作成し、TensorFlow Graph 方言と作成した方言間の低下を作成すると良いでしょう。これにより、ハードウェアとコンパイラメーカーのパスが円滑化されます。また、同じモデルで異なるレベルの方言をターゲットすることもできます。より高いレベルのオプティマイザは IR の未知の部分を尊重するため、より低いレベルによって処理されるのを待機します。