模型推理寒武纪mluresnet50量化及离线推理流程(代码片段)

极智视界 极智视界     2023-01-20     233

关键词:

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

O_o>_<o_OO_o~_~o_O

  本文介绍了在寒武纪 MLU 中进行 resnet50 量化与离线推理的流程。

  本文主要介绍了 Cambricon pytorch 环境搭建、resnet50量化、resnet50 离线推理,resnet 系列是标准模型,其他模型也可参考该流程执行。

1、Cambricon Pytorch 环境配置

  这个之前写过一篇文章《【经验分享】寒武纪MLU270 源码编译 pytorch-mlu》,关于 Cambricon Pytorch 的编译与环境搭建可以参考。

  按流程搭建好 Cambricon Pytorch 环境后,确认一下环境是否正常,打开 $PYTORCH_HOME/build/lib(/opt/cambricon/pytorch/src/pytorch/build/lib),若编译生成了 libtorch_python.so 和 libtorch.so 等文件,则说明 Cambricon PyTorch 编译成功:


2、resnet50 量化推理

2.1 模型量化

cd $HOME/pytorch/tools
./quanti_model.sh

  其中 quanti_model.sh 中的内容:

python quantification_tool.py -model_name resnet50 -data_scale 1.0 -mean 0.485 0.456 0.456 -std 0.229 0.224 0.225 -resize 224 -crop 224 -used_images_num 5 -quantize_mode int8 -save_model_path /opt/cambricon/pytorch/models/int8 -save_name resnet50-19c8e357
  • 参数说明:
    • -model_name:模型名称;
    • -data_scale:最大值和最小值缩放比例;
    • -mean:量化参数均值;
    • -std:量化参数方差;
    • -resize:预处理中对图像大小的调整;
    • -crop:裁剪图像大小;
    • -used_images_num:量化时使用的图片数量;
    • -quantize_mode:量化精度;
    • -save_model_path:模型量化后的保存路径;
    • -save_name:模型量化后的名称;

  来看一下终端的输出:


2.2 转离线模型

  安装 python3-tk

sudo apt install python3-tk

  执行离线模型转换:

cd $HOME/pytorch/tools

python genoff_test_resnet50.py

  其中 genoff_test_resnet5.py 中内容:

import sys
import torch
import torch.nn as nn
from torchvision.models.resnet import resnet50

net = resnet50(pretrained=False, progress=True)
net.load_state_dict(torch.load('/opt/cambricon/pytorch/models/int8/resnet50-19c8e357.pth',map_location='cpu'),strict=False)
net.eval().float().mlu()
net.set_core_number(16)
example_mlu = torch.randn(16,3,224,224,dtype=torch.float).mlu()
net = torch.jit.trace(net,example_mlu, check_trace=False)
net(example_mlu)
net.save('/opt/cambricon/pytorch/models/resnet50_int8_offline',True)


2.3 离线推理

  执行离线推理:

cd $HOME/pytorch/tools

./inference_resnet50.sh

  其中 inference_resnet50.sh 中内容:

/opt/cambricon/pytorch/src/pytorch/test/offline_examples/build/clas_offline_multicore/clas_offline_multicore -offlinemodel /opt/cambricon/pytorch/models/resnet50_int8_offline.cambricon -images file_list_for_release -labels synset_words.txt -simple_compile 2 -input_format 0
  • 参数说明:
    • -offlinemodel:离线模型的路径;
    • -images:图片列表文本文件;
    • -labels:标签文件;
    • -simple_compile:使能简单编译功能,Cambricon Runtime 根据离线模型 core_number 和 batch_size 参数自动分配最优的软硬件资源;
    • -input_format:指定运行网络时输入图片的通道顺序,依据该参数对输入图片进行相应的前处理。支持 RGB、RGBA 和 ARGB 三种输入图片的通道顺序。0 表示 RGB,1 表示 RGBA,2 表示 ARGB;

  最终的推理结果输出如下:


  以上分享了一下 寒武纪 MLU 上前端为 Cambricon Pytorch 时的 resnet50 int8 量化、转离线模型及离线推理的流程,对寒武纪上其他模型的量化推理应该也有借鉴作用。


 【公众号传送】

《【模型推理】寒武纪 MLU resnet50 量化及离线推理流程》



扫描下方二维码即可关注我的微信公众号【极智视界】,获取更多AI经验分享,让我们用极致+极客的心态来迎接AI !

模型推理谈谈为什么量化能加速推理(代码片段)

... o_O O_o ~_~ o_O 本文主要讨论一下为什么量化能加速模型推理。 前面已经写过几篇关于模型量化相关的文章:《【模型推理】谈谈几种量化策略:MinMax、KLD、ADMM、EQ》、《【模型推理】谈谈模型量化组织方式》、... 查看详情

模型推理谈谈模型量化组织方式(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化组织方式。 在我的这篇《【模型推理】谈谈推理引擎的推理组织流程》文章里对模型量化策略进行了一些介绍,有兴趣的同学可以翻看一下。今天这里主要... 查看详情

推理实践丨如何使用mindstudio进行pytorch模型离线推理

...的任务是AscendPytorch离线推理,即对给定的已经训练好的模型参数和推理脚本,在Ascend310/710和Tesla设备上进行推理应用。本文分享自华为云社区《​​使用MindStudio进行Pytorch模型离线推理​​》,作者:袁一博。本教程所示例的任... 查看详情

tflite 量化推理非常慢

...:2020-02-0911:30:27【问题描述】:我正在尝试将经过训练的模型从检查点文件转换为tflite。我正在使用tf.lite.LiteConverter。浮点转换以合理的推理速度进行得很好。但是INT8转换的推理速度很慢。我尝试通过输入一个非常小的网络进... 查看详情

推理实践丨如何使用mindstudio进行pytorch模型离线推理

...任务是AscendPytorch离线推理,即对给定的已经训练好的模型参数和推理脚本,在Ascend310/710和Tesla设备上进行推理应用。本文分享自华为云社区《使用MindStudio进行Pytorch模型离线推理》,作者:袁一博。本教程所示例... 查看详情

模型推理谈谈非线性激活函数的量化方式(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一聊深度学习模型量化中对激活函数的处理方式。 之前已经写过几篇关于模型量化的文章:《【模型推理】谈谈几种量化策略:MinMax、KLD、ADMM、EQ》、《【模型推理】谈谈模... 查看详情

markdown使用mxnet实现生产级神经网络模型量化推理(代码片段)

查看详情

模型推理ncnn模型转换及量化流程(代码片段)

...规范 O_o >_< o_O O_o ~_~ o_O 本文介绍一下ncnn模型转换及量化流程,以from_darknetyolov4为例。 关于ncnn的ubuntu和windows安装方法可以参考我之前写的:《【嵌入式AI】ubuntu安装ncnn》、《【经验分享】win10qm 查看详情

模型推理谈谈几种量化策略:minmaxkldadmmeq(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化相关策略。 模型小型化是算法部署的关键技术,模型小型化的过程通常用模型量化来描述。量化通常是高比特位到低比特位的映射过程,量化的对象既... 查看详情

模型推理谈谈为什么卷积加速更喜欢nhwclayout(代码片段)

...积)有NCHW(pytorch、caffe),NHWC(Tensorflow,也是TVMGPU和寒武纪MLUCore上更喜欢的dataLayout),CHW(TensorRT里不考虑动态batch的话是把N拿出来了,只剩三维),N 查看详情

模型训练与推理中为什么需要使用gpu?基本概念梳理

...片的概况。随着AI尤其是ChatGPT的大火,像英伟达、国内的寒武纪等GPU芯片/AI芯片厂商股价也随之大幅攀升。(寒武纪股价)GPU就是我们日常所说的“显卡”,那么为什么显卡和AI有关系呢?而美国政府又为什么要出台关于GPU的芯... 查看详情

量化感知训练实践:实现精度无损的模型压缩和推理加速(代码片段)

简介:本文以近期流行的YOLOX[8]目标检测模型为例,介绍量化感知训练的原理流程,讨论如何实现精度无损的实践经验,并展示了量化后的模型能够做到精度不低于原始浮点模型,模型压缩4X、推理加速最高2.3X... 查看详情

模型推理tengine模型转换及量化(代码片段)

...范 O_o >_< o_O O_o ~_~ o_O 本文介绍一下Tengine模型转换及量化流程。 Tengine同ncnn一样,也是优秀的端侧推理框架,前面写过一篇《ncnn模型转换及量化流程》,有兴趣的同学可以查阅。 下面开始。文章目... 查看详情

模型推理量化实现分享三:详解aciq对称量化算法实现(代码片段)

...f0c;前面还有一、二,有兴趣的同学可以查阅 (1)《【模型推理】量化实现分享一:详解min-max对称量化算法实现》; (2)《【模型推理】量化实现分享二:详解KL对称量化算法实现》; ACIQ和前面的量化策略类似... 查看详情

模型推理比特大陆se5边缘盒子caffessd量化与转换部署模型(代码片段)

...本教程详细记录了在比特大陆SE5边缘盒子上对caffeSSD检测模型进行量化和转换部署模型的方法。文章目录1、准备ssd模型2、转换fp32bmodel2.1转fp32bmodel2.2、模型精度验证3、Int8量化与模型转换3.1模型转换fp32umodel3.2模型转换int8umodel3.2.1... 查看详情

基于cafferesnet-50网络实现图片分类(仅推理)的实验复现

...现图片分类(仅推理)为例,学习如何在已经具备预训练模型的情况下,将该模型部署到昇腾AI处理器上进行推理。本文分享自华为云社区《​​【CANN训练营】【2022第二季】【新手班】基于CaffeResNet-50网络实现图片分类(仅推理... 查看详情

ppq~openppl之多平台量化部署工具来啦!

...经支持Turing系列显卡和多种DSP的INT8量化推理。面对大量模型的多平台量化部署需求,一款支持多平台量化部署的工具必不可少,PPLQuantizationTool(PPQ)应运而生。——推理库后端会对模型做大量的联合定点和图融合优化,我们写入... 查看详情

模型推理量化实现分享二:详解kl对称量化算法实现(代码片段)

...实现,以Tengine的实现为例。 前面已经写过一篇《【模型推理】量化实现分享一:详解min-max对称量化算法实现》,有兴趣的同学可以查阅。这是上一篇的续集,也是量化实现详解的第二篇。 量化背景就不多做... 查看详情