MLIR

概述

MLIR(多级中间表示)是编译器实用工具的表示格式和库,它位于模型表示与生成硬件特定代码的低级编译器/执行器之间。

MLIR 本质上是用于现代优化编译器的灵活基础架构。这意味着它由一个中间表示 (IR) 规范和一个用于对该表示执行转换的代码工具包组成。(用编译器领域的话来说,当您从高级表示转换为低级表示时,此类转换可以被称为“降级”。)

MLIR 深受 LLVM 的影响,并且明显重用了后者的许多绝佳创意。它有一个灵活的类型系统,并允许在同一编译单元中结合多个级别的抽象来表示、分析和转换计算图。这些抽象包括 TensorFlow 运算、嵌套多面体循环区域,甚至包括 LLVM 指令和固定硬件运算与类型。

我们希望 MLIR 能引起许多群体的关注,其中包括:

  • 希望优化机器学习模型的性能与内存消耗的编译器研究员和实现者
  • 正在想办法将自己的硬件(例如 TPU、手机中可移植的神经网络硬件以及其他自定义专用集成电路 (ASIC))连接至 TensorFlow 的硬件制造商
  • 在编写语言绑定时想利用优化编译器和硬件加速的人士

TensorFlow 生态系统包含许多在软件和硬件堆栈的多个级别上运行的编译器和优化器。我们希望逐步采用 MLIR 来简化此堆栈的各个方面。

MLIR overview diagram