歡迎關注我的公眾號 [極智視界],獲取我的更多筆記分享
O_o
>_<
o_O
O_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/toolspython genoff_test_resnet50。py
其中 genoff_test_resnet5。py 中內容:
import sysimport torchimport torch。nn as nnfrom torchvision。models。resnet import resnet50net = 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 量化及離線推理流程》