初赛须知,参赛者必看
初赛须知,参赛者必看 下载

初赛须知

亲爱的各参赛团队,大家好!

“逐梦杯”中国青年科技创新大赛—智能芯片开源软件赛道,初赛环节以智能芯片平台和对应的软件栈为依托,诚邀大家进行深度学习算法的移植,与优化。

以下是初赛参赛注意事项,请大家仔细阅读。祝大家取得好成绩!

 

1.       初赛平台资源获取

a)       收取邮件

参赛者报名之后,在2天之内注意查收报名登记邮箱。

b)      本地ssh_config配置

在ssh到智能计算平台之前可以先配置本地ssh_config文件,增加如下两行:

ServerAliveInterval 60

ServerAliveCountMax 3

可避免远程到平台之后窗口长时间没操作而自动断开连接。

c)       登录平台

可自行安装远程ssh终端工具,按照如下方式登录智能计算平台。

例:ssh root@ip -p port

【注】

(1)可通过kill 1重置基础镜像容器;

(2)如果sdk环境损坏,则可自行从/workspace/algorithm/sdk/拷贝到开发环境中;

(3)请不要擅自更改登陆密码,否则会带来未知风险。

 

2.       平台目录结构介绍

a)       赛题路径

进入/workspace/algorithm浏览初赛题库,每道赛题有对应的权重,参赛者可自行选择想做的题,每个团队最终的得分为所选赛题得分的总和。初赛题库为只读模式,开发者自行选择赛题,拷贝至各团队的私有目录下进行开发

algorithm目录结构如下所示:

|-- algorithm

|   |-- 00_Yolov3_example

|   |-- 01_HCGNet_0.03

|   |-- 02_HRNet_0.03

|   |-- 03_InceptionV3_0.03

|   |-- 04_FPN_0.03

|   |-- 05_Deeplabv3_0.03

|   |-- 06_Unet_0.03

|   |-- 07_Resnet50dilated-ppm_deepsup_0.06

|   |-- 08_EfficientNet_0.03

|   |-- 09_Yolov5x_0.06

|   |-- 10_CenterNet_0.06

|   |-- 11_Cascade_Rcnn_0.06

|   |-- 12_ESPCN_0.06

|   |-- 13_Siamrpn_0.14

|   |-- 14_Detr_0.17

|   |-- 15_Cocosnet_0.18

|   |-- sdk(备份用)

 

b)      数据集路径

/workspace/dataset/public/zhumeng-dataset/内放置了所有必需的数据集。

数据集使用方式如下:

- 参赛者在精度及性能调试阶段,可以拷贝少量数据到/workspace/volume/private/进行调试。

- 在最终精度验证与测试阶段,进行完整数据集的验证。

- 在最终性能验证与测试阶段,请参考对应赛题中的性能测试file_list。

                  数据集目录如下所示:

|dataset/

|`-- public

|    `-- zhumeng-dataset

|        |-- ADEChallengeData2016

|        |-- BSDS500

|        |-- README.md

|        |-- VOT18

|        |-- ade20k

|        |-- cityscape

|        |-- coco_2014

|        |-- coco_2017

|        |-- imagenet_val_subdir

|        |-- imagenet_val_subdir_performance

|        `-- images_for_FID


     c)       私有开发环境

    /workspace/volume/private为各参赛队的私有目录,该目录可读可写,空间50G。参赛者须将所选赛题拷贝到私有目录下进行开发(注意,不要修改每个赛题文件夹命名)。

    私有目录结构如下所示:

|`-- volume                

|    `-- private

|    |-- 00_Yolov3_example              # demo供参赛者参考

|    |   |-- model

|    |   |-- offline

|    |   |-- result                       # 用于提交,每个赛题必备文件,包含精度测试和性能测试的脚本

|    |   `-- online

|    |-- sdk                            # pytorch框架源码、CNPlugin源码、虚拟环境venv,供参赛者开发

|    |   |-- Cambricon-CNPlugin-MLU270

|    |   |-- cambricon_pytorch

|    |   `-- venv

|    `-- submit_job                      # 提交测试任务的工具,不能擅自修改

```


d)      cambricon_pytorch

cambricon_pytorch目录下,包含软件栈(neuware)、pytorch框架源码,供参赛者调试及编译。

neuware内包括后续会用到的算子库,调试工具等。

cambricon_pytorch目录结构如下所示:

|-- cambricon_pytorch

|   |-- configure_pytorch.sh

|   |-- env_pytorch.sh

|   |-- neuware

|   |   |-- LICENSE

|   |   |-- README

|   |   |-- bin

|   |   |-- cmake

|   |   |-- data

|   |   |-- include

|   |   |-- lib

|   |   |-- lib64

|   |   |-- samples

|   |   |-- tools

|   |   `-- version.txt

|   |-- pytorch

|   |   |-- include

|   |   |-- lib

|   |   |-- models

|   |   |-- src

|   |   `-- tools

|   `-- run_pytorch.sh

 

3.       调试与开发环境

a)       配置环境

声明环境变量及进入虚拟环境

                    cd /workspace/volume/private/sdk/cambricon_pytorch

                    source env_pytorch.sh

           若需要多人同时开发,为了避免环境冲突,各队员可将venv复制多个供多人使用,复制方法如下:

                    cp /workspace/volume/private/sdk/venv/ /workspace/volume/private/sdk/venv_1

               修改env_pytorch.sh:

                      将source $PWD/../venv/pytorch/bin/activate

                      替换为source $PWD/../venv_1/pytorch/bin/activate

               source env_pytorch.sh

 

b)      查看加速卡状态

在平台上执行cnmon即可查看加速卡的运行状态(详见Cambricon-CNMON-User-Guide-CN)。

 

4.       精度与性能测试

a)       提交测试工具

/workspace/volume/private/submit_job/下的submit-job.py脚本将被用来提交测试任务,该脚本不可更改。

 

b)      准备测试脚本

每个赛题目录下自建result文件夹,用于提交测试任务,文件名必须按照以下格式命名:(详见00_Yolov3_example参考示例)

      result

      |-- run_accuracy.sh

      `-- run_performance.sh

      【注】脚本名称不得修改,否则有无法记录成绩的风险

            submit-job.py需要在虚拟环境中执行

同时请在run_***.sh脚本中开始处添加以下代码:

cd /workspace/volume/private/sdk/cambricon_pytorch/

source env_pytorch.sh

cd -

         可参考00_Yolov3_example/result/run_performance.sh脚本

 

c)       提交测试及返回结果

确保在本地开发环境中 `/workspace/volume/private/******/result/run_***.sh` 能够正确运行,测试环境须保证与开发环境一致,如有在开发环境中额外apt install安装的环境,则需要在脚本中添加安装的命令。

进入虚拟环境后,执行submit-job.py文件

测试精度或性能命令如下:

python submit-job.py submit --test_mode performance --subject_name 00_Yolov3_example

参数说明:

--subject_name  # 赛题名称

--test_mode     # 精度测试或性能测试

 

测试任务启动后会自动打印当前任务状态(Queuing、Running或Succeeded);

输出日志将会保存至/workspace/volume/private/submit_job文件夹下;

测试任务完成后程序将会自动退出;

如何查看卡的运行状态:

                    watch -n 0.5 cat /workspace/volume/private/submit_job/cnmon.log

如何查看log:

                    python submit-job.py list          #查看容器id,可依据时间找到容器对应的id号

                    python submit-job.py log --id=xxx  #查看log信息

 

d)      测试任务可操作项

在提交任务执行的时候可以按 ctrl+c 停止跟踪任务状态和日志,但该任务仍执会行

通过 `python3 /workspace/volume/private/submit_job/submit-job.py list` 查询任务状态

如果需要停止任务,可以输入命令:

`python3 /workspace/volume/private/submit_job/submit-job.py stop --id <任务 ID>`

如果需要删除任务,可以输入命令:

`python3 /workspace/volume/private/submit_job/submit-job.py delete --id <任务 ID>`


5.       测试标准

a)       精度验证

初赛的评比要求在数据集实测精度满足官方标准精度的误差范围内,进行性能的比较。因此,参赛者首先需要进行精度验证。相关误差范围在每道赛题目录下readme中已进行详细说明。各类模型评价指标如下:

分类模型精度评价指标:

      用户需要输出:

      TOP1=xxx

      TOP5=xxx

      涉及模型如下:

            01_HCGNet_0.03

            02_HRNet_0.03

            03_InceptionV3_0.03

            08_EfficientNet_0.03

 

分割模型精度评价指标:

      DICE=xxx

      涉及模型如下:

            04_FPN_0.03

            06_Unet_0.03

 

分割模型精度评价指标:

      MEAN_IOU=xxx

      涉及模型如下:

            05_Deeplabv3_0.03

            07_Resnet50dilated-ppm_deepsup_0.06

 

检测模型精度评价指标:

      AP=xxx

      涉及模型如下:

            09_Yolov5x_0.06

            10_CenterNet_0.06

            11_Cascade_Rcnn_0.06

            14_Detr_0.17

 

超分模型精度评价指标:

      MEAN_PSNR=xxx

      涉及模型如下:

            12_ESPCN_0.06

 

跟踪模型精度评价指标:

      ACCURACY=xxx

      涉及模型如下:

            13_Siamrpn_0.14

 

图像翻译模型精度评价指标:

      FID=xxx

      涉及模型如下:

            15_Cocosnet_0.18

 

b)      性能测试标准

性能测试指标:吞吐(throughput)

Throughput(fps)=xxx

所有模型的性能指标均需要按照以上格式输出。

性能测试方法:

统计移植后的模型,在性能测试数据集(file_list)上运行的端到端时间,包括前处理、推理、后处理三个部分,用性能测试的图片总数除以时间,以计算吞吐(Throughput)

以demo为例:

```python

      for batch_i in range(0, opt.image_number, opt.batch_size):

         # 开始计时

         timer = Timer()

         # 前处理

         if opt.mlu:

            imgs = preprocess(imgs, img_size, normalize=False)

         else:

            imgs = preprocess(imgs, img_size, normalize=True)

           

         ......

        

            # 记录单次推理的时间

            timer1 = Timer()

            # 推理

            outputs = model(imgs)

            total_hardware += timer1.elapsed()

            # 后处理

            if opt.mlu:

                  outputs = outputs.cpu().type(torch.FloatTensor) if opt.half_input else outputs.cpu()

                  outputs = get_boxes(outputs, opt.batch_size, img_size=img_size)

            else:

                  outputs = non_max_suppression(outputs, 80, conf_thres=conf_thres, nms_thres=nms_thres)

         # 总时间,包括前处理、推理以及后处理,以此时间来计算吞吐

         total_e2e += timer.elapsed()

        

      ......

 

      #计算吞吐

      print('Throughput(fps): ' + str(opt.image_number / total_e2e))

      ```


6.       初赛评比

在8月中下旬,我们即将开启初赛平台赛题打榜,参赛者在打榜页面参与赛题打榜,提交赛题开发逻辑说明,提交完成代码进行精度/性能的验证。根据性能进行排序,并计分。

注意:在初赛平台里,无论是在开发环境小批量测试,还是通过submit job提交全量测试,均为便利参赛者合理调度智能加速卡资源。建议参赛者在开发环境中使用少量数据进行精度和性能的初步验证,在模型移植完成度较高的情况下,提交全量测试模式,模拟最终打榜的实测性能与精度。

 

初赛打榜评比详情可持续关注官方平台通知:

官方社区:https://developer.cambricon.com/

官方社区—赛事专区:https://competition.cambricon.com/

官方论坛—http://forum.cambricon.com/list-1-1.html

敬请期待!


  

逐梦杯比赛
入围榜单
逐梦杯比赛
注册社区
逐梦杯比赛
返回顶部