From 5a55f7f1864551c0c281d00db6b680c94198c78d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=B8=9A=E5=BA=86?= Date: Fri, 12 Mar 2021 17:12:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update=20AscendPyTorch=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=BC=97=E6=99=BA=E6=96=87=E6=A1=A3-=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?=E6=8E=A8=E7=90=86.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\347\272\277\346\216\250\347\220\206.md" | 70 ++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git "a/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" "b/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" index 488cfe3..72e28b2 100644 --- "a/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" +++ "b/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" @@ -13,10 +13,15 @@ - [4.2 UNet端到端推理要点](#42-UNet端到端推理要点) - [4.3 SSD端到端推理要点](#43-SSD端到端推理要点) - [4.4 Inception-V3端到端推理要点](#44-Inception-V3端到端推理要点) + - [4.5 maskrcnn端到端推理指导](#45-maskrcnn端到端推理指导) - [5 深度学习指导](#5-深度学习指导) - [5.1 书籍推荐](#51-书籍推荐) - [5.2 实践](#52-实践) - [5.3 参加社区开发](#53-参加社区开发) +- [6 附录](#6-附录) + - [6.1 机器申请及使用指南](#61-机器申请及使用指南) + - [6.2 交付标准与规范](#62-交付标准与规范) + @@ -333,7 +338,7 @@ export LD_LIBRARY_PATH=${install_path}/atc/lib64:${install_path}/acllib/lib64:$L export ASCEND_OPP_PATH=${install_path}/opp # export DUMP_GE_GRAPH=2 -atc --framework=5 --model=efficientnet-b0_sim.onnx --output=efficientnet-b0_bs1 --input_format=NCHW --input_shape="image:1,3,224,224" --log=info --soc_version=Ascend310 +atc --framework=5 --model=efficientnet-b0_sim.onnx --output=efficientnet-b0_bs1 --input_format=NCHW --input_shape="image:1,3,224,224" --log=debug --soc_version=Ascend310 ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -489,6 +494,7 @@ python3 vision_metric_ImageNet.py result/dumpOutput_device0/ dataset/ImageNet/va 5.性能测试 - npu + 测试npu性能要确保device空闲,使用npu-smi info命令可查看device是否在运行其它推理任务 ``` ./benchmark -round=50 -om_path=efficientnet-b0_bs1.om -device_id=0 -batch_size=1 ``` @@ -575,6 +581,8 @@ python3.7 msprof.pyc export summary -dir /home/HwHiAiUser/test/生成的profilin - **[Inception-V3端到端推理要点](#44-Inception-V3端到端推理要点)** +- **[maskrcnn端到端推理指导](#45-maskrcnn端到端推理指导)** + 这里对经典类型的端到端推理网络遇到的问题做了一些总结,读者可以按照上面的流程尝试一下,从中体会代码是如何写出来的以及问题是如何解决的 ### 4.1 Inception-V4端到端推理要点 1.github开源代码网址 @@ -766,7 +774,7 @@ print('Pad nodes revised') ``` ... export REPEAT_TUNE=True -atc --model=--framework=5 ./unet_carvana_sim_pad.onnx --output=unet_carvana_bs1 --input_format=NCHW --input_shape="actual_input_1:1,3,572,572" --log=info --soc_version=Ascend310 --auto_tune_mode="RL,GA" +atc --model=--framework=5 ./unet_carvana_sim_pad.onnx --output=unet_carvana_bs1 --input_format=NCHW --input_shape="actual_input_1:1,3,572,572" --log=debug --soc_version=Ascend310 --auto_tune_mode="RL,GA" ``` 5.后处理脚本,计算mIOU,使用多线程处理数据,可以将标签与输出转换为图片查看预测结果 ```python @@ -1084,6 +1092,9 @@ inception_v3_bs16 Flatten AI Core 1 20.415 20.415 20 参考前面提到的《CANN V100R020C10 图融合和UB融合规则参考 (推理) 01》 +### 4.5 maskrcnn端到端推理指导 +https://gitee.com/ascend/modelzoo/wikis + ## 5 深度学习指导 ### 5.1 书籍推荐 ``` @@ -1110,6 +1121,61 @@ inception_v3_bs16 Flatten AI Core 1 20.415 20.415 20 - [https://gitee.com/openeuler/A-Tune](https://gitee.com/openeuler/A-Tune) +## 6 附录 + +- **[机器申请及使用指南](#61-机器申请及使用指南)** +- **[交付标准与规范](#62-交付标准与规范)** +### 6.1 机器申请及使用指南 +>![](public_sys-resources/icon-note.gif) +**说明:** +> **机器周均使用率过低且项目无故无进展时,华为方将有权回收算力资源,由此造成交付延期由使用者自己承担。** + +- 机器申请 + - GPU + - 由于GPU资源紧张,请提前做好资源申请,每个模型按3个工作日作为调测时间,每个老师需一次性租借其名下所有模型,若无法按期归还,请提前和华为方支撑者做好沟通 + - NPU + - 每个模型调测人员至少分配一张NPU用于模型调测,请向华为方申请调配的NPU资源 +- 磁盘使用 + - / 下是系统目录 + - /home 是可使用的数据盘目录 + - 开发主要使用磁盘 + - /opt/npu(GPU是/opt/gpu) 是共享的数据集盘目录 + - 预存数据集,仅用于copy + - **使用如下命令解压数据集到本机使用```tar xf imagenet.tar.gz -C /home/data```** + - 请勿在共享盘上运行脚本和写数据 + - 重启后请执行 ```bash /root/mount_datadisk.sh``` 挂载数据盘,**请勿在/etc/fstab设置为自动挂载** + + +### 6.2 交付标准与规范 +- 交付标准 + - 精度: + om模型推理的精度与PyTorch预训练模型github代码仓README.md或官网文档公布的精度对比,精度下降不超过1%则认为精度达标 + - 性能: + ascend benchmark工具纯推理测的npu单颗device吞吐率乘以4颗大于TensorRT工具测的gpu T4吞吐率则认为性能达标 + - 脚本: + 代码符合pep8规范; + xxx_pth2onnx.py中不能使用从网络下载权重pth文件的代码,xxx_pth2onnx.py应有输入输出参数,输入是本地权重pth文件,输出是生成的onnx模型文件名; + xxx_pth_preprocess.py与xxx_pth_postprocess.py尽可能只引用numpy,Pillow,torch,pycocotools等基础库,如不要因mmdetection框架的数据处理与精度评测部分封装了这些基础库的操作,为调用这些简单接口,前后处理脚本就依赖mmdetection; + 不同模型的脚本与代码部分处理流程有相似性,尽量整合成通用的脚本与代码。 + - 推理步骤: + 需要提供端到端推理的操作过程 + - 关键问题总结: + 需要提供端到端推理遇到的关键问题的简要调试过程 + + 说明: + ``` + 对于性能不达标的模型,优化是学生能做的尽量做,比如用ascend atc的相关优化选项尝试一下,尝试使用最近邻替换双线性的resize重新训练,降低图片分辨率等,然后profiling分析定位引起性能下降的原因,具体到引起性能下降的算子,并在交付文档中写明问题原因与简要的定位过程,涉及到atc算子代码的修改由华为方做。 + 工作量为简单模型2-3个工作日,复杂模型5-7个工作日,个别难度大的模型12个工作日。 + ``` + +- 交付件 + - 交付件参考:[ResNeXt Onnx端到端推理指导.docx](https://gitee.com/ascend/modelzoo/wikis) + - 最终交付件: + 包含以上交付标准的模型名称 Onnx端到端推理指导.docx + - 最终交付形式: + gitee网址:https://gitee.com/ascend/modelzoo/tree/master/contrib/onnx_infer/ + commit信息格式:【高校贡献-学校学院名称】【Onnx-模型名称】模型名称 Onnx端到端推理 + -- Gitee From 4efd78727dbd1a720946b4209f3eefd5f5f96aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=B8=9A=E5=BA=86?= Date: Sat, 13 Mar 2021 10:19:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update=20AscendPyTorch=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=BC=97=E6=99=BA=E6=96=87=E6=A1=A3-=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?=E6=8E=A8=E7=90=86.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...243-\347\246\273\347\272\277\346\216\250\347\220\206.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" "b/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" index 72e28b2..f725a66 100644 --- "a/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" +++ "b/AscendPyTorch\346\250\241\345\236\213\344\274\227\346\231\272\346\226\207\346\241\243-\347\246\273\347\272\277\346\216\250\347\220\206.md" @@ -165,7 +165,7 @@ def pth2onnx(input_file, output_file): output_names = ["class"] dynamic_axes = {'image': {0: '-1'}, 'class': {0: '-1'}} dummy_input = torch.randn(1, 3, 224, 224) - torch.onnx.export(model, dummy_input, output_file, input_names = input_names, dynamic_axes = dynamic_axes, output_names = output_names, opset_version=11) + torch.onnx.export(model, dummy_input, output_file, input_names = input_names, dynamic_axes = dynamic_axes, output_names = output_names, opset_version=11, verbose=True) ``` - 通过Ascend 910训练的PyTorch EfficientNet模型checkpoint会保存为pth.tar格式,通过如下脚本可以转换为ONNX模型 @@ -195,7 +195,7 @@ def convert(): input_names = ["actual_input_1"] output_names = ["output1"] dummy_input = torch.randn(1, 3, 224, 224) - torch.onnx.export(model, dummy_input, output_file, input_names = input_names, output_names = output_names, opset_version=11) + torch.onnx.export(model, dummy_input, output_file, input_names = input_names, output_names = output_names, opset_version=11, verbose=True) ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -940,7 +940,7 @@ def pth2onnx(input_file, output_file): dynamic_axes = {'image':{0:'-1'}, 'scores':{0:'-1'}, 'boxes':{0:'-1'}} dummy_input = torch.randn(1, 3, 300, 300) - torch.onnx.export(model, dummy_input, output_file, input_names=input_names, output_names=output_names, dynamic_axes = dynamic_axes, opset_version=11) + torch.onnx.export(model, dummy_input, output_file, input_names=input_names, output_names=output_names, dynamic_axes = dynamic_axes, opset_version=11, verbose=True) ``` 2.预处理参数 ``` -- Gitee