利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤

目录

[1 TPU-MLIR简介](#1 TPU-MLIR简介)

[2 开发环境搭建](#2 开发环境搭建)

[2.1 下载镜像](#2.1 下载镜像)

[2.2 下载SDK](#2.2 下载SDK)

[2.3 创建容器](#2.3 创建容器)

[2.4 加载tpu-mlir](#2.4 加载tpu-mlir)

[3 准备工作目录](#3 准备工作目录)

[4 onnx转mlir文件](#4 onnx转mlir文件)

[5 mlir转INT8 模型](#5 mlir转INT8 模型)

[5.1 生成校准表](#5.1 生成校准表)

[5.2 便以为INT8对称量化模型](#5.2 便以为INT8对称量化模型)

参考文献:


之前是用nntc转算能科技的模型的,这次技术支持建议我使用mlir工具进行模型转换,于是看一下mlir的介绍资料和使用方法,并做一下笔记。

1 TPU-MLIR简介

上图就是tpu-mlir的整体架构图,主要分两步, 一是通过 model_transform.py 将原始模型 转换成mlir文件, 二是通过 model_deploy.py 将mlir文件转换成bmodel/cvimodel。

如果要转INT8模型, 则需要调用 run_calibration.py 生成校准表, 然后传给 model_deploy.py

如果INT8模型不满足精度需要, 可以调用 run_qtable.py 生成量化表, 用来决定哪些层采用浮点计算, 然后传给 model_deploy.py 生成混精度模型。

2 开发环境搭建

2.1 下载镜像

bash 复制代码
docker pull sophgo/tpuc_dev:latest

官网文档上说的是用v2.2,这里直接拉取最新的镜像。

2.2 下载SDK

技术资料

从上面网址下载

下载完之后解压,里面包含很多内容

2.3 创建容器

bash 复制代码
 docker run --privileged --name tpu_mlir -v $PWD:/workspace -it sophgo/tpuc_dev:latest

2.4 加载tpu-mlir

bash 复制代码
cd /workspace/Release_v2312-LTS/Release_v2312-LTS/tpu-mlir_20231116_054500/tpu-mlir_v1.3.140-g3180ff37-20231116
source envsetup.sh

3 准备工作目录

建立 model_yolov5s 目录, 注意是与tpu-mlir同级目录; 并把模型文件和图片文件都 放入 model_yolov5s 目录中。

bash 复制代码
cd ..
mkdir model_yolov5s
cd model_yolov5s
#然后把onnx模型和图片拷贝到当前目录
mkdir workspace
cd workspace

4 onnx转mlir文件

bash 复制代码
model_transform.py \
    --model_name yolov5s \
    --model_def ../jishui_20231007.onnx \
    --input_shapes [[1,3,640,640]] \
    --mean 0.0,0.0,0.0 \
    --scale 0.0039216,0.0039216,0.0039216 \
    --keep_aspect_ratio \
    --pixel_format rgb \
    --output_names 326,378,430 \
    --test_input ../calib/00a3b6b267584c2ea01ec50a84432e56.jpg \
    --test_result yolov5s_top_outputs.npz \
    --mlir yolov5s.mlir

--output_names 320,340,354 这里的三个具体名字通过用netron看onnx模型文件确定,

5 mlir转INT8 模型

5.1 生成校准表

bash 复制代码
	run_calibration.py yolov5s.mlir \
    --dataset ../calib \
    --input_num 200 \
    -o yolov5s_cali_table

这里calib文件夹里面是校准图片,里面是200张图片和200个标注文件。

5.2 便以为INT8对称量化模型

bash 复制代码
	model_deploy.py \
    --mlir yolov5s.mlir \
    --quantize INT8 \
    --calibration_table yolov5s_cali_table \
    --chip bm1684x \
    --test_input yolov5s_in_f32.npz \
    --test_reference yolov5s_top_outputs.npz \
    --tolerance 0.85,0.45 \
    --model yolov5s_1684x_int8_sym.bmodel

参考文献:

TPU-MLIR快速入门手册 --- TPU-MLIR 1.2 文档

https://github.com/sophgo/tpu-mlir

利用nntc工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤_算能的镜像-CSDN博客

技术资料

TPU-MLIR敏感层搜索功能介绍 | TPUMLIR 开源工具链项目 | 通用 AI 编译器工具链项目,高效将模型编译生成 TPU 执行代码

相关推荐
陈 洪 伟9 个月前
SOPHON算能科技新版SDK环境配置以及C++ demo使用过程
sdk·算能科技
陈 洪 伟1 年前
深度学习算法模型转成算能科技平台xx.bmodel模型的方法步骤
算能科技