概要
さまざまなハードウェアやソフトウェアのターゲットを区別するために、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 の未知の部分を尊重するため、より低いレベルによって処理されるのを待機します。