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

news2024/9/24 7:20:11

目录

1 TPU-MLIR简介

2 开发环境搭建

2.1 下载镜像

2.2 下载SDK

2.3 创建容器

2.4 加载tpu-mlir

3 准备工作目录

4 onnx转mlir文件

5 mlir转INT8 模型

5.1 生成校准表

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 下载镜像

docker pull sophgo/tpuc_dev:latest

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

2.2 下载SDK

技术资料

从上面网址下载

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

2.3 创建容器

 docker run --privileged --name tpu_mlir -v $PWD:/workspace -it sophgo/tpuc_dev:latest

2.4 加载tpu-mlir

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 目录中。

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

4 onnx转mlir文件

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 生成校准表

	run_calibration.py yolov5s.mlir \
    --dataset ../calib \
    --input_num 200 \
    -o yolov5s_cali_table

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

5.2 便以为INT8对称量化模型

	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 执行代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ExperimentalWarning: The http2 module is an experimental API.

错误提示 Node.js:ExperimentalWarning: The fs.promises API is experimental原因是node的版本不是最新的,而在项目引入的模块是最新的,node.js的版本低于模块的版本: 解决方法: 1、升级版本 npm install -g npm 更新npm到最新版 npm ins…

【C++干货铺】 RAII实现智能指针

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 为什么需要智能指针? 内存泄漏 什么是内存泄漏,内存泄露的危害 内存泄漏的分类 堆内存泄漏(Heap leak) 系统资…

内衣洗衣机有必要买吗?五款好用的迷你洗衣机推荐

冬天正在临近,普通的衣服有日常的洗衣机洗,但内衣裤就成了很多小伙伴的困扰,在我们的观念中,内衣裤是绝对不可以和普通的衣服一起清洗,在冰冷的冬季还要手洗这些贴身衣物,真的很难受,所以拥有一…

fpga外置flash程序烧录流程

Fpga外置FLASH程序烧录流程: step1: 打开vivado2019.2软件,找到hardware manager选项,进入该功能界面; Step2: 确定连接状态,当JTAG正确连接到板卡的调试插针后,会在状态窗口显示…

RNN与NLP

目录 数据处理基础: 处理文本信息(text -> sequence): simple RNN模型: 这个教程的笔记: RNN模型与NLP应用(1/9):数据处理基础_哔哩哔哩_bilibili 数据处理基础: 不能用标量…

eBay在人工智能道路上的成败得失:衡量标准是关键

我是2006年加入eBay的。2009年,这家公司的运营状况非常糟糕,其股价创历史新低(远低于近24美元的历史高位),还出现削减各项成本、负增长、市场占有率降低、技术团队缺乏创新能力等情况。 简而言之,eBay公司…

[极客大挑战 2019]LoveSQL1

万能密码测试,发现注入点 注意这里#要使用url编码才能正常注入 测试列数,得三列 查看table,一个是geekuser另一个是l0ve1ysq1 查看column,有id,username,password,全部打印出来,…

未来已来:AI引领智能时代的多领域巨变

大家好,今天我们将深入探讨人工智能如何彻底改变我们的生活方式,领略未来的无限可能性。 1. 医疗革新:AI担任超级医生 医疗领域是AI最引人注目的战场之一。智能医学影像诊断系统,不仅能够精准识别病变,还能辅助医生提…

excel统计分析——Tukey‘s-b法多重比较

参考资料:生物统计学 Tukeys-b多重比较法是对Tukey法和S-N-K法的综合,取两种方法临界值的各1/2合成。临界值表达式为: 其中,m为秩次距,k为样本平均数的个数,df为误差项自由度, Tukey多重比较具…

计算机网络 第4章(网络层)

系列文章目录 计算机网络 第1章(概述) 计算机网络 第2章(物理层) 计算机网络 第3章(数据链路层) 计算机网络 第4章(网络层) 文章目录 系列文章目录1. 概述1.1 简介1.2 总结 2. 网络…

MATLAB知识点:var :计算方差(variance)

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.1节 var :计算方差(…

2024水果软件FL Studio21.2.3中文版破解注册机

FL Studio即“Fruity Loops Studio”,也就是众所周知的水果软件,一个全能音乐制作环境、数字音频工作站(DAW)。FL Studio可以用来进行编曲、剪辑、录音、混音,让你的计算机成为一个全功能录音室。 FL Studio 21 Win-安装包下载如下: https:…

【操作系统基础】【CPU访存原理】:寄存 缓存 内存 外存、内存空间分区、虚拟地址转换、虚拟地址的映射

存储器怎么存储数据、内存空间分区、虚拟地址转换 计算机的存储器:寄存 缓存 内存 外存(按功能划分) 计算机的处理器需要一个存储器来存储大量的指令和数据以便自己不断取指执行和访问数据。 内存(内存就是运行内存&#xff0c…

AI大模型中的Bert

1.全方位上下文理解:与以前的模型(例如GPT)相比,BERT能够双向理解上下文,即同时考虑一个词 的左边和右边的上下文。这种全方位的上下文理解使得BERT能够更好地理解语言,特别是在理解词义、 消歧等复杂任务上…

k8s图形化管理工具rancher

Rancher和K8s的关系,Rancher和K8s区别对比。简单来说,K8s(Kubernetes)为企业提供了一种一致的方式来管理任何计算基础架构,Rancher则是用于管理位于任何位置的Kubernetes集群的完整平台。如果用户是自己手动部署K8s集群…

一篇博客读懂排序

目录 一、常见的排序 二、冒泡排序 2.1基本思想: 2.2代码: 三、插入排序 3.1基本思想: 3.2思路讲解: 3.3代码: 3.4时间复杂度: 四、希尔排序 4.1基本思路: 4.2思路讲解:…

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…

JS高频面试题(下)

11. 线程和进程的区别 进程是资源分配的最小单元&#xff0c;线程是代码执行的最小单元。 一个应用程序可能会开启多个进程&#xff0c;进程之间数据不共享&#xff0c;一个进程内部可以开启多个线程&#xff0c;线程之间的数据可以共享的&#xff0c;所以多线程的情况下&…

【STM32】STM32学习笔记-W25Q64简介(37)

00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. 硬件电路04. W25Q64框图05. Flash操作注意事项06. 预留07. 附录 01. SPI简介 在大容量产品和互联型产品上&#xff0c;SPI接口可以配置为支持SPI协议或者支持I 2 S音频协议。SPI接口默认工作在SPI方式&#xff0c;可以…

uniapp page宽度设置为750rpx,子元素宽度100%,大小不一致

uniapp page宽度设置为750rpx&#xff0c;子元素宽度100%&#xff0c;大小不一致。 原因是我在page加了margin: 0 auto;去掉就正常了&#xff08;但是如果在超大屏幕还是会出现&#xff0c;我猜是使用rpx导致的&#xff0c;rpx渲染成页面时会转成精确到一个小数点几位数的rem&a…