打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
一、搭建寒武纪MLU PyTorch开发环境
1、寒武纪提供了二次开发的PyTorch的开发docker image,可以快速搭建pytorch开发环境。从寒武纪FTP下载PyTroch开发镜像,下载地址如下:
ftp://download.cambricon.com:8821/product/MLU270/v1.5.0/docker-images/mlu270_v1.5.0_ubuntu16.04.pytorch_v1.0.tar.gz
2、启动docker开发环境:
假设MLU270驱动程序已安装(MLU270驱动安装方法另见《寒武纪Linux驱动安装手册-v4.4.4》),docker-ce已安装
docker load < mlu270_v1.5.0_ubuntu16.04.pytorch_v1.0.tar.gz
docker run -it --privileged --name pytorch-test-1.5.0 \
-v $PWD:/home/share \
cambricon/scm/dockerfile/mlu270_v1.5.0_ubuntu16.04.pytorch:v1.0 \
/bin/bash
--privileged选项可自动将系统的设备节点映射到docker容器中,也包括MLU270的设备节点
-v $PWD:/home/share可将当前工作目录映射到docker容器中的/home/share/
二、准备yolov3 pytorch模型
1、下载darknet预训练模型
mkdir /home/share/official_weight && cd /home/share/official_weight
wget https://pjreddie.com/media/files/yolov3.weights
2、激活pytorch虚拟环境
source /opt/cambricon/pytorch/src/catch/venv/pytorch/bin/activate
3、darknet模型转pytorch模型
寒武纪二次开发过的pytorch在docker容器内的/opt/cambricon/pytorch/src/catch,
catch提供了darknet模型转pytorch模型的工具convert_weight,可将darknet的weigths转换成pth
cd /opt/cambricon/pytorch/src/catch/examples/tools/convert_weight
python convert_weight.py -original_path /home/share/official_weight/ \
-original_name yolov3.weights \
-model_name yolov3 \
-save_name yolov3.pth \
-cfg_file cfg/yolov3.cfg
export TORCH_HOME=/home/share/models/pytorch_models
mkdir -p $TORCH_HOME/origin/checkpoints/ && mv yolov3.pth $TORCH_HOME/origin/checkpoints/
三、模型INT定点量化
1、准备数据集
export COCO_PATH_PYTORCH=/home/share/datasets
mkdir $COCO_PATH_PYTORCH
将COCO数据集解压到/home/share/datasets,下载地址如下:
ftp://download.cambricon.com:8821/product/MLU270/datasets/MLU270_datasets_COCO.tar.gz
2、执行模型量化
cd /opt/cambricon/pytorch/src/catch/examples/online/yolov3
mkdir -p $TORCH_HOME/int8/checkpoints/
python test.py --mlu false --jit false \
--quantization true --quantized_mode 1 \
--ann_dir $COCO_PATH_PYTORCH/COCO \
--coco_path $COCO_PATH_PYTORCH/COCO \
--image_number 100 \
--quantized_model_path $TORCH_HOME/int8/checkpoints/
四、验证推理精度
python test.py --mlu true --jit true \
--quantization false --quantized_mode 1 \
--ann_dir $COCO_PATH_PYTORCH/COCO \
--coco_path $COCO_PATH_PYTORCH/COCO \
--batch_size 1 --core_number 4 \
--image_number 1600
五、生成MLU220离线模型
1、先用同样的core_number、batch_size参数生成MLU270的离线模型,并在MLU270上验证结果正确性
cd /home/share/
python /opt/cambricon/pytorch/src/catch/examples/offline/genoff/genoff.py \
-model yolov3 -mname yolov3_mlu220_batchsize1_corenumber4 \
-mcore MLU220 -core_number 4 \
-batch_size 1 -in_height 416 -in_width 416 \
-modelzoo $TORCH_HOME/int8/
在当前目录下会生成2个文件:
离线模型文件:yolov3_mlu220_batchsize1_corenumber4.cambricon
离线模型摘要文件:yolov3_mlu220_batchsize1_corenumber4.cambricon_twins
打开yolov3_mlu220_batchsize1_corenumber4.cambricon_twins,检查输入的Layout和Shape是否和原模型一致。
热门帖子
精华帖子