TPU-MLIR 是一个专注于 AI 芯片的 TPU 编译器开源工程,提供了一套完整的工具链,可以将不同框架下预训练过的深度学习模型,转化为可以在 TPU 上运行的二进制文件 bmodel,从而实现更高效的推理。
MLIR (Multi-Level Intermediate Representation) 是一种用来构建可重用和可扩展编译基础设施的新方法,由 LLVM 原作者 Chris Lattner 在 Google 工作时期开发,MLIR 目的是做一个通用、可复用的编译器框架,解决软件碎片化,改进异构硬件的编译,显著减少构建特定领域编译器的成本。
整体架构
特性
TPU-MLIR 相对其他编译工具,有以下几个优势:
- 简单:通过阅读开发手册与工程中已包含的样例,用户可以了解模型转化流程与原理,快速上手。并且,TPU-MLIR基于当前主流的编译器工具库MLIR进行设计,用户也可以通过它来学习MLIR的应用。
- 便捷:该工程已经提供了一套完备的工具链,用户可以直接通过现有接口快速地完成模型的转化工作,不用自己适配不同的网络。
- 通用:目前 TPU-MLIR 已经支持 TFLite 以及 onnx 格式,这两种格式的模型可以直接转化为 TPU 可用的 bmodel。如果不是这两种格式呢?实际上 onnx 提供了一套转换工具,可以将现在市面上主流深度学习框架编写的模型转为 onnx 格式,然后就能继续转为 bmodel 了。
- 精度与效率并存:模型转换的过程中有时会产生精度损失,TPU-MLIR 支持 INT8 对称和非对称量化,在大幅提高性能的同时又结合原始开发企业的 Calibration 与 Tune 等技术保证了模型的高精度。不仅如此,TPU- MLIR 中还运用了大量图优化和算子切分优化技术,以保证模型的高效运行。
评论