3.星空加速卡X3教程--Benchmark测试(linux)



  • 1.1 概述

    注意:本教程基于《鲲云星空X3加速卡在Linux上的基本环境配置》中搭建好的环境进行。

    工程目录:uc-cr-example;uc-pyruntime

    该应用案例用于评估CAISA引擎性能和深度学习网络精度,涵盖网络如下表所示。

    ​表1-1 Benchmark

    企业微信截图_16034388194958.png

    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 msBatch 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


登录后回复