3.星空加速卡X3教程--Benchmark测试(linux)
-
1.1 概述
注意:本教程基于《鲲云星空X3加速卡在Linux上的基本环境配置》中搭建好的环境进行。
工程目录:uc-cr-example;uc-pyruntime
该应用案例用于评估CAISA引擎性能和深度学习网络精度,涵盖网络如下表所示。
表1-1 Benchmark 1.2 uc-cr-example
1.2.1 编译测试工程
在
uc-cr-example/cr-example
路径下,请按照如下步骤进行编译。cd ~/workspace/X30032009/uc-cr-example/cr-example mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DRBHOME=/usr/local make cd ~/workspace/X30032009/uc-cr-example/cr-example/BenchMarkProcessors cd third_party/cocoapi/PythonAPI make
为了方便,用户也可以直接使用该路径下预置的compile脚本完成以上编译工作。
cd ~/workspace/X30032009/uc-cr-example/cr-example ./compile
1.2.2 运行和评估
针对已提供的网络,已预置了运行脚本在cr-example-utils/scripts中,方便用户运行,如下所示。
在~/workspace/X30032009/uc-cr-example/cr-example-utils/scripts中:
- run_cls_inception_v4.sh
- run_cls_resnet_v1_101.sh
- run_cls_resnet_v1_50.sh
- run_cls_vgg_16.sh
- run_cls_vgg_19.sh
- run_det_kynet_ssd.sh
- run_det_ssd_fpn.sh
- run_det_yolov3.sh
- run_seg_deeplab_v3.sh
- run_seg_unet.sh
更详细的操作可通过以下指令查阅。
cd ~/workspace/X30032009/uc-cr-example/cr-example /build/image_runner --help
1.3 uc-pyruntime
cr-example主要提供的为RbRuntime的C/C++接口使用样例,该工程则提供python接口的调用样例代码。python的源码放置于
uc-pyruntime/
中。针对已提供的网络,已预置了运行脚本在
pyruntime-utils/scripts
中,方便用户运行,如下所示。corerain@0e7f9c15aa46:~/workspace/X30032009/uc-pyruntime/pyruntime-utils/scripts$ ls -la -rwxrwxr-x. 1 1001 1001 1610 Jun 28 10:54 run_det_ssd_resnet_50.sh -rwxrwxr-x. 1 1001 1001 1172 Jun 22 06:09 run_seg_unet_industrial.sh
1.4 运行推理
cd ~/workspace/X30032009/uc-<uc name>/<uc name>-utils/scripts ./run_<net type>_<net name>.sh infer
运行打印如下所示
... all layer takes 3.540904 ms Done! Computing Inference Results from Output Tensor Done! Processed 2845 images Average Run time(ms): 4.15662
all layer takes 3.540904 ms
为Batch Size
为4的时候硬件运行所需要的时间,作为加速引擎的实测性能指标。1.5 评估精度
cd ~/workspace/X30032009/uc-<uc name>/<uc name>-utils/scripts ./run_<net type>_<net name>.sh eval
网络对应的<net type>和<net name>如下表所示
表 1‑5 网络列表 网络名称 <uc name> <net type> <net name> ResNet50 cr-example cls resnet_v1_50 ResNet101 cr-example cls resnet_v1_101 VGG16 cr-example cls vgg_16 VGG19 cr-example cls vgg_19 Inception V4 cr-example cls inception_v4 Yolo V3 cr-example det yolov3 SSD-FPN cr-example det ssd_fpn *KY-SSD cr-example det kynet_ssd *U-Net cr-example seg unet Deeplab V3 cr-example seg deeplab_v3 SSD-ResNet50 pyruntime det ssd_resnet_50 U-Net Industrial pyruntime seg unet_industrial 分类网络精度评估的打印如下所示
Top-1 Accuracy is 0.76206 Top-5 Accuracy is 0.92784
这里采用Top-1作为评价指标,例如当前显示精度为0.76206。
目标检测网络精度评估的打印如下所示
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.364 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.894 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.084 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.166 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.323 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.404 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.270 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.422 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.427 Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.320 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.391 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.461
这里采用IoU=0.5,作为评价指标,例如当前显示精度为0.894。
语义分割网络精度评估的打印如下所示
Pixel Acc:0.9680 Mean Acc:0.9617 Mean IoU:0.9085
打印部分为三种精度标准:Pixel Acc为像素级别的精度,Mean Acc为逐类(Class)的平均精度,Mean IoU为IoU的平均精度。在表3-1中分别以Pixel、Class和IoU表示。
1.6 评估精度损失
将CAISA运行的计算精度与原始网络的精度(见表3-1)相减,即可得到CAISA架构的精度损失。如需原始网络可在
corerain-models/reference-models
中找到对应的参考网络。1.7 示例
以ResNet50为例,脚本的使用方法如下。
运行推理
cd ~/workspace/X30032009/uc-cr-example/cr-example-utils/scripts ./run_cls_resnet_v1_50.sh infer
运行评估
cd ~/workspace/X30032009/uc-cr-example/cr-example-utils/scripts ./run_cls_resnet_v1_50.sh eval
其他更加详细的使用可以参考鲲云星空加速卡X3用户手册.pdf。