5.1. MLIR-迁移工具概述

TPU-MLIR是算能的智能视觉深度学习处理器编译器工程,该工程提供了一套完整的工具链, 其可以将不同框架下预训练的神经网络, 转化为可以在算能智能视觉深度学习处理器上高效运算的模型文件 bmodel 。

TPU-MLIR 工具链具有迭代更新快、适应性强、易于部署、适配性强等多种优点,我们推荐使用TPU-MLIR来实现模型的转换。

代码已经开源到 github: https://github.com/sophgo/tpu-mlir

论文<https://arxiv.org/abs/2210.15016> 描述了TPU-MLIR的整体设计思路。

算丰系列智能视觉深度学习处理器平台仅支持BModel模型加速,用户需要首先进行模型迁移,通过使用算丰MLIR工具链,可以把其他框架下训练好的模型转换为BModel,使之能在算丰系列智能视觉深度学习处理器上运行。

MLIR已直接支持绝大部分开源框架(Pytorch、ONNX、TFLite、Caffe等)下的算子和模型,其他模型(TensorFlow、PaddlePaddle等)需要转换为ONNX模型后,再行转换,如图 TPU-MLIR工具链的整体架构 所示,更多的网络层和模型也在持续支持中。

关于模型的支持情况和转换方法,详情请查看《 TPU-MLIR开发参考手册 》,本章也提供了快速部署入门方法,请顺序查看下一小节内容。

TPU-MLIR的整体架构如下图所示:

../_images/mlir_framework.png

图 5.1 TPU-MLIR的整体架构

我们提供的TPU-MLIR工具链能更高效地帮助用户实现模型迁移。对于BM1684/BM1684X平台来说,它既支持float32模型,也支持int8量化模型,其模型转换流程以及章节介绍如图:

TPU-MLIR模型转换流程如下图:

../_images/mlir_model_trans.png

图 5.2 TPU-MLIR模型转换流程

转模型需要在指定的docker执行, 主要分两步, 一是通过 model_transform.py 将原始模型 转换成mlir文件, 二是通过 model_deploy.py 将mlir文件转换成BModel。

其中,生成FLOAT模型时,model_deploy.py 工具支持输出 F32/F16/BF16 三种浮点数据类型, 具体请参考 FLOAT 模型生成(MLIR) 。INT8模型, 则需要准备量化数据集、调用 run_calibration.py 生成校准表, 然后将校准表传给 model_deploy.py。如果INT8模型不满足精度需要, 可以调用 run_qtable.py 生成量化表, 用来决定哪些层采用浮点计算, 然后传给 model_deploy.py 生成混精度模型。具体请依次参考 使用 TPU-MLIR 进行模型量化

TPU-MLIR工具链提供了model_transform.py和model_deploy.py模型转换脚本, model_transform.py 工具会对各种框架的模型进行离线转换,生成mlir格式的模型文件, model_deploy.py 能够实现一键转换MLIR(算能科技自定义的模型中间格式框架)框架下的模型:生成智能视觉深度学习处理器能够执行的指令流并序列化保存为BModel文件;当执行在线推理时, 由BMRuntime负责BModel模型的读取、数据的拷贝传输、智能视觉深度学习处理器推理的执行以及计算结果的读取等。

备注

若您在使用过程中遇到问题,可联系我们获取技术支持。