? 歡迎關注我的公眾號 [極智視界],獲取我的更多筆記分享
? O_o ? >_< ? o_O ? O_o ? ~_~ ? o_O
? 本文介紹了在寒武紀 MLU 中進行 resnet50 量化與離線推理的流程,
? 本文主要介紹了 Cambricon pytorch 環境搭建、resnet50量化、resnet50 離線推理,resnet 系列是標準模型,其他模型也可參考該流程執行,
文章目錄
- 1、Cambricon Pytorch 環境配置
- 2、resnet50 量化推理
- 2.1 模型量化
- 2.2 轉離線模型
- 2.3 離線推理
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 !

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336333.html
標籤:其他
下一篇:Ubuntu下編譯OpenCV
