7.星空加速卡X3教程--RainBuilder使用(win)



  • 星空加速卡X3教程02--RainBuilder使用(win)

    通过本教程,用户能够了解或掌握:

    1. 加速卡编译器RainBuilder介绍
    2. 加速卡编译器RainBuilder使用方法

    一、资料下载

    星空加速卡X3相关的工程文件下载地址如下:

    文件名称 下载地址
    *X3-win ftp://cloud.corerain.com/X3-win/
    *corerain-datasets ftp://cloud.corerain.com/corerain-datasets/
    *corerain-models ftp://cloud.corerain.com/corerain-models/
    corerain-public-tools ftp://cloud.corerain.com/corerain-public-tools/
    备注:带*标识的为工程运行必须项。

    corerain-datasets文件夹内包含应用案例所需的数据集,其工程结构如下。

     corerain-datasets
    ├─ 01-imagenet.tar
    ├─ 02-coco.tar
    ├─ 03-fddb.tar
    ├─ 04-cityscape.tar
    ├─ 05-coco2017.tar
    └─ 06-dagm2007class1.tar
    

    corerain-models文件夹内包含应用案例所需的网络模型,其工程结构如下。

     corerain-models
     ├─ caisa-models
     └─ reference-models
    

    corerain-public-tools文件夹中会包含一些公共工具,如Linux环境下docker的离线安装包和docker镜像等。用户可根据需要下载。

     corerain-public-tools
    ├─ cr-docker-cpu.tar
    ├─ cr-docker-gpu.tar
    ├─ docker_installer_19_03_5.tar
    └─ ...
    

    开始测试前需要将对应的工程和数据进行解压。例如进入对应路径解压uc-cr-example.zip

    进入corerain-datasets分别解压每一个数据包,当前的例子是~/workspace/corerain-datasets

    cd ~/workspace/corerain-datasets
    tar -xvf 01-imagenet.tar
    tar -xvf 02-coco.tar
    tar -xvf 03-fddb.tar
    tar -xvf 04-cityscape.tar
    

    Note:

    注意:使用本教程时请注意按照教程01已经配置好RainBuilder安装环境

    二、RainBuilder介绍

    鲲云工具链RainBuilder是鲲云CAISA架构对应的开发和部署工具链,包含编译器(RbCompiler)、运行时(RbRuntime)和驱动(RbDriver)三个部分,其中编译器用于将已训练好的深度学习网络转译成CAISA引擎兼容的表达形式,运行时和驱动共同组成了CAISA加速处理是的软件层程序。

    该教程主要目的在于帮助用户了解如何使用RbCompiler将TensorFlow、Caffe和ONNX框架的模型转换成RbRuntime可运行的中间表达式(SG-IR)。

    通过本教程的操作,用户会获得如caisa-models中存放的模型的SG-IR,用户在完成对应模型的操作后,便可使用自己生产的SG-IR作为输入代替benchmark教程中对应的输入进行运行,实现CAIS引擎部署和运行的全流程操作。

    RainBuilder支持的前端和该案例所涵盖的应用项如下表所示。

    2.2.png

    RainBuilder的前端操作主要围绕脚本指令RbCli进行,在Git bash中,输入如下指令。

    RbCli
    

    会有如下指令使用打印。

    Usage: RbCli [OPTIONS] COMMAND [ARGS]...
    
      RbCompiler CLI: a command-line tool for the RainBuilder Compiler.
    
    Options:
      --debug / --no-debug
      -v, --version
      --help                Show this message and exit.
    
    Commands:
      caffe    	Generate SG IR from given caffe model
      onnx  	Generate SG IR from given onnx model
      quant  	Quant SG from given SG IR
      tf     		Generate SG IR from given tf frozen model
      view   	Export model coefficient from SG IR
    

    三、RainBuilder运行

    进入参考模型路径

    cd ~/workspace/corerain-models/reference-models
    

    在运行路径中预先存放了模型文件,每个文件中都含有模型的.pb文件和该模型对应的图像前处理程序preprocess.py。具体文件示例结构如下:

     reference-models
    ├─ deeplab_v3
    ├─ inception_v4
    ├─ kynet_ssd
    │   ├─ model
    │   │   └─ kynet_ssd.pb
    │   └─ preprocess.py
    ├─ resnet_v1_101
    ├─ resnet_v1_50
    ├─ ssd_fpn
    ├─ unet
    ├─ vgg_16
    ├─ vgg_19
    ├─ yolov3
    └─ ...
    

    3.1、 SG-IR流图生成

    SG流图的生成指令有

    # TensorFlow
    RbCli [OPTIONS] tf [ARGS]...
    
    # Caffe
    RbCli [OPTIONS] caffe [ARGS]...
    
    # ONNX
    RbCli [OPTIONS] onnx [ARGS]...
    
    # PyTorch
    RbCli [OPTIONS] torch [ARGS]
    

    不同的框架对应不同的前端指令,以基于TensorFlow框架的kynet_ssd为例,用户可以执行以下指令完成模型的转化。

    RbCli tf kynet_ssd/model/kynet_ssd.pb \
    	--model-name kynet_ssd \
    	--output-dir kynet_ssd/compilation/sg \
    	--with-json True
    

    该指令会将对应的输入模型转换成初始的SG-IR,并将输出结果保存在指定文件夹中。

    3.2、 SG-IR流图量化

    量化是将初始的SG-IR进行低比特数据压缩的过程,以上一步生成的浮点SG-IR为输入,输出8bit整型SG-IR。

    SG流图的量化需要用户指定图像的预处理程序、量化范围,以及量化数据集路径,具体参数如下表所示。

    2.3.png

    对应指令:

    RbCli [OPTIONS] quant [ARGS]...
    

    同样,以kynet_ssd为例,用户执行以下指令完成SG流图的量化

    RbCli quant kynet_ssd/compilation/sg/kynet_ssd.sg \
    	kynet_ssd/preprocess.py \
    	--preprocess-range -123,151 \
    	--img-dir ~/workspace/corerain-datasets/03-fddb/quants-data/ \
    	--output-dir kynet_ssd/compilation/quant/ \
    	--gpu True \
    	--use-kld True
    

    Note:

    量化指令示例中的--gpu参数仅在装有GPU的环境下使用。--use-kld True能够获得更小的精度损失,但会占用更多的计算资源,因此计算时间会稍微延长。

    至此,模型kynet_ssd的转化便已完成,其文件结构如下。

     kynet_ssd
    ├─ compilation
    │   ├─ quant
    │   │   └─ kynet_ssd_8bit.sg
    │   └─ sg
    │          ├─ kynet_ssd.json
    │          └─ kynet_ssd.sg
    ├─ model
    │   └─ kynet_ssd.pb
    └─ preprocess.py
    

    其中quant文件夹下的kynet_ssd_8bit.sg文件即Benchmark测试中用到的模型输入文件。

    Note:

    关于X3加速卡和RainBuilder的详细使用请参阅《鲲云星空加速卡X3用户手册》:ftp://cloud.corerain.com/X3-docs/
    关于X3加速卡Compiler模型解析的更多详细使用请参阅《RainBuilder Compiler模型解析拓展手册》:ftp://cloud.corerain.com/X3-docs/


登录后回复