• [问题求助] 【昇腾CANN训练营第二期】image-for-MindX弹性云共享镜像求分享!
    目前需要在弹性云上安装MindX SDK, 需要借助镜像完成快速安装, 请问能在哪里获得昇腾CANN训练营第二期中提到的image-for-MindX?
  • [安装] 昇腾AI设备安装开发环境,同时将此环境作为运行环境的samples相关依赖安装 ,opencv安装失败
    【功能模块】【操作步骤&问题现象】1、第三方环境配置 opencv安装失败,怎么解决2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [算子编译] 运行昇腾310算子测试mindspore是否安装成功报错,如何解决
    【功能模块】【操作步骤&问题现象】1、下载昇腾310算子并解压2、运行tensor_add_sample算子报错【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [执行问题] 【沈阳昇腾创新中心+Notebook程序卡住问题】
    【功能模块】连接modelarts-开发环境-Notebook程序卡住,同样代码笔记本cpu没卡【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [调试调优] 【沈阳昇腾创新中心+迁移后无法使用问题】
    【功能模块】程序在本地的GPU上可以跑通,在迁移到modelarts的Ascend上之后,出现了设备无法使用的情况【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [训练管理] 【沈阳昇腾创新中心+openlab训练回归模型警告问题】
    【功能模块】openlab训练回归模型笔记本cpu没有警告,昇腾训练有如下警告npu速度和cpu速度相比没有提升,因此怀疑是警告导致【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 【CANN训练营 • 22年度第二季】【新手班】第二章学习笔记
    本章学习目标1. 了解CANN在昇腾AI全栈架构中的位置和作用。2. 了解基于CANN的应用开发编程框架、基本概念。学习内容第二节 昇腾AI全栈结构华为在人工智能领域的工作华为AI全栈解决方案注:1、芯片层是算力基础,npu为昇腾内核2、芯片使能层释放芯片算力3、 AI框架:MindSpore:基于算法构建神经网络模型4、应用使能:基于模型构建应用。ModelArts是华为云上的训练资源平台 昇腾AI全栈可以分成四个大部分:1. 应用使能层面,此层面通常包含用于部署模型的软硬件,例如API、SDK、部署平台,模型库等等。2. AI框架层面,此层面包含用于构建模型的训练框架,例如华为的MindSpore、TensorFlow、Pytorch等。3. 异构计算架构,偏底层、偏通用的计算框架,用于针对上层AI框架的调用进行加速,力求向上支持多种AI框架,并在硬件上进行加速。4. 计算硬件,本层是AI计算的底座,有了强力的芯片及硬件设备,上层的加速才有实施的基础。第三节 异构计算架构CANN昇腾AI计算平台CANN逻辑架构1、AscendCL是用于做推理计算加速的一套API2、图引擎:对于图的解析;      融合和编译(FE):对于算子融合分析的融合引擎      AICPU引擎(AICPUE):AICPU算子加速的引擎      集合通信引擎(HCCL):集合通信      算子库:加速计算工具第四节  昇腾计算语言接口AscendCLCANN平台------应用开发框架AscendCL:加速模型推理的框架向上:供应用程序(用户可以直接调用AscendCL提供的接口开发图片分类应用、目标识别应用等)、第三方框架(用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力)、开发第三方lib库(用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理等能力)调用向下:调图引擎(GE执行器)、运行管理器、驱动。去用软件栈内部的加速计算资源去做加速计算注:1、 编写应用,里面有神经网络模型,调动模型,把数据送给模型,再得到模型处理后的结果2、有了算法,通过Mindspore写出模型3、对于应用程序来讲,模型是一个黑盒子,不关心模型的内部结构。应用程序给模型数据,再从模型得到结构AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子加载与执行、图片数据编解码/裁剪/缩放处理等API库,实现在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的API框架,实现对所有资源的调用。AscendCL的优势如下:1.  高度抽象:算子编译、加载、执行的API归一,相比每个算子一个API,AscendCL大幅减少API数量,降低复杂度。2.  向后兼容:AscendCL具备向后兼容,确保软件升级后,基于旧版本编译的程序依然可以在新版本上运行。3.  零感知芯片:一套AscendCL接口可以实现应用代码统一,多款昇腾处理器无差异。
  • [问题求助] 昇腾众智计划-国创计划错过了项目报名时间,可以补报名吗
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 【昇腾视界系列 第41期】昇腾资料2022年6月刊
    本期介绍昇腾开发者资料6月刊,汇总昇腾AI基础软硬件平台上新、新增特性预告和论坛热门精华帖推荐,带您快速了解昇腾资料每月最新动态:昇腾资料2022年6月刊:https://www.hiascend.com/activities/infomonthly/202206
  • [热门活动] 昇腾AI创享⽇成都站-2022
    上周六参见了`昇腾AI创享⽇`成都站开发者大会,由于最近太忙,只能周末写一下参会体验。 首先值得一体的是午餐很nice,下午参加了训练营分会场,这里也主要写一下训练营分会场的参与体验。 # 昇腾 现在用的最多的是GPU训练卡,华为创建了自己的昇腾,并在成都建立的训练集群,训练一个小时比租用GPU要便宜的多。并且昇腾也有自己的常用模型,开发者不用自己搭建,同时昇腾也提供了CANN,开发者可以自己搭建模型。 # ATC模型转换工具 目前常用的模型一般都是TensorFlow,PyTorch,没办法直接在昇腾上使用,于是这里就介绍了ATC转换工具,可以将一些主流的框架下的模型转换到昇腾下可以加载的模型,降低了开发者的门槛。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/3/1656835742289664821.png) ATC工具 # 开发pipeline 有的以上降低门槛的操作,我们就可以训练我们的模型,每个模型都提供了训练脚本,可以做到通过命令界面实现模型转换,模型训练等操作,节省开发时间。 我们最关心的应该就是训练好的模型怎么快速部署,毕竟只有完成了部署才算完成了项目。如下图是一个完整的部署推理流程 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/3/1656836156502282290.png) 有了推流流程,怎么搭建推流pipeline,有了pipeline后才好下手写代码,如下图就是一个标准的pipeline图 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/3/1656836361817216974.png) # MindStudio 最感兴趣的是昇腾的开发IDE,MindStudio,可以直接开发自己的AI应用。开发者可以基于图形化开发应用,MindStudio里面视频流处理是基于gstreamer开发的,并提供成基础插件,我们只需要通过拖拽插件来搭建自己的pipeline,为了让插件适应自己的模型,我们只需要修改相应的插件的参数即可,MindStudio实现的插件基本上可以满足我们的需求,输入插件可以支持图片,视频文件,rtsp视频流。 可以根据MindStudio提供的插件来实现一个完整的推流pipeline,从输入,数据预处理,推理,数据后处理,结果组装(json),上报到云, ## 小建议 希望MindStudio能够丰富上云插件的功能,比如支持mqtt,kafka,http等,这样开发者就可以很方便的将识别结果上报的自己的平台,而不用额外的开发成本 # 安利 CANN训练营线上报名,免费学习 https://www.hiascend.com/developer/canncamp ![81fdbc2be35adbeb619bb95728341e7.jpg](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/3/1656839190851695414.jpg)
  • [经验分享] 使用MindStudio进行PCB模型的ONNX推理
    基于MindStudio的PCB模型在Ascend310与310P的迁移推理 写在前面本次实验在MindStudio上进行,请先按照教程配置环境,安装MindStudio。MindStudio提供您在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务;依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。在此次模型推理工作中,MindStudio提供模型压缩工具、模型转换工具和模型可视化工具。模型转换工具将开源框架的网络模型 (如Caffe、TensorFlow等)转换成昇腾AI处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权值数据重排、内存使用优化等。我们使用到了Mindstudio的Model Converter和Remote终端来可视化完成Atc工具转换模型和Bechmark工具进行精度、性能测试的任务。任务介绍①任务场景:模型推理与迁移。②任务描述:实现模型从 pytorch 1.5 迁移到 pytorch 1.8 的推理功能,实现模型推理功能,精度达到合同要求。③任务目标:在Ascend310上的精度和性能不差于论文官方结果;在Ascend710上的推理性能达到Ascend310的1.2倍,T4的1.6倍。④环境信息:昇腾设备:Ascend310、Ascend710;OS:CentOS Linux;CANN版本:5.0.2。安装依赖3.1模型依赖依赖名称版本OONX1.9.0Pytorch1.8.1TorchVision0.8.1Numpy1.19.2Pillow8.2.0Opencv-python4.5.2.54scikit-learn0.24.1skl2onnx1.8.0h5py3.3.0 3.2环境依赖3.2.1安装python依赖下载链接:Python Release Python 3.7.5 | Python.org首先在官方网站下载安装安装Python3.7.5到Windows本地。在Windows 10操作系统的“控制面板 > 系统和安全 > 系统”中选择“高级系统设置”,如下图所示。这里我们要将Python安装环境下的Scipts路径添加到Path里,最后点击确认,完成环境变量设置。 “Win + R”快捷键打开系统命令行,输入“Python -V”,如下图所示表示安装成功。 Python安装完成后,安装Python依赖:pip install xlrd==1.2.0pip install absl-pypip install numpypip install requests 3.2.2安装MinGW依赖下载链接MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net根据电脑配置,下载适合的依赖,例如64位可以选择x86_64-posix-seh。然后解压MinGW安装包到自定义路径。如上文配置Python时进入环境变量编辑页面,点击新建然后添加刚刚安装MinGW的路径即可。 打开系统命令行,输入gcc -v命令,若下图所示表示安装成功。3.2.3 安装Java依赖下载地址:Java Downloads | Oracle下载下来后安装到本地,然后参照其他依赖设置Java环境变量打开系统命令,输入java --version,如显示Java版本信息,则表示安装成功3.2.4 安装Cmake下载地址:Download | CMake①单击快捷键“win+R”,输入cmd,单击快捷键“Ctrl+Shift+Enter”,进入管理员权限命令提示符。若弹出“用户帐户控制”提示窗口,单击“是”。②执行以下命令,安装软件包:msiexec /package {path}\{name}.msi打开安装包后选择自己要安装的路径,但是要将安装路径添加到环系统境里         3.2.5 安装MindStudio下载地址:MindStudio下载-昇腾社区 (hiascend.com)你可以选择.zip文件,也可以选择.exe文件。我这里选择.exe文件安装,安装简单无须赘述,只需一直next,然后在此处根据需求勾选即可。Create Desktop Shortcut:创建桌面快捷方式,用户可根据系统配置选择“32-bit launcher”或者“64-bit launcher”。Update PATH variable(restart needed):将MindStudio的启动文件路径加入环境变量PATH中,可从系统命令行直接启动MindStudio。如果勾选此项,MindStudio安装配置完成后会重启操作系统。Update context menu:勾选“Add "Open Folder as Project"”后,右键单击文件夹,可以作为MindStudio工程打开。Create Associations:默认不勾选。最后下载jbr,下载地址https://cache-redirector.jetbrains.com/intellij-jbr/jbr_dcevm-11_0_10-windows-x64-b1341.35.tar.gz解压到MindStudio安装根目录,与bin目录同级,如下图所示。推理迁移4.1 onnx简介ONNX (Open Neural Network Exchange)- 开放神经网络交换格式,是一种在各个主流深度学习框架中迁移模型的中间表达格式作为框架共用的一种模型交换格式,例如将 Pytorch 或者 TensorFlow 模型转化为 ONNX 模型,然后再将 ONNX模型转化为我们使用不同框架部署需要的类型,ONNX 相当于一个中间者、翻译者。 4.2 创建工程打开MindStudio, 选择File -> New -> Project 选择Ascend Operator,填写工程名字,点击Next下一步点击change 然后点击+号远程配置服务器Add添加并配置服务器。输入用户名和密码配置即可。 Test connection可以在输入完成后测试是否可以连接,输入无误则会提示连接成功。如果有多个服务器可以右击选择Rename进行备注方便之后选择。配置完成后定位CANN包的位置,我们这里选择的是 usr/local/Ascend/ascend-toolkit/latestFinish完成配置点击Next 选择onnx这样就完成工程创建了 数据集获取与处理源码包下载链接:ATC PCB (FP16)-昇腾社区 (hiascend.com)中点击立即下载即可5.1获取原始数据集Market1501数据集,自行获取该数据集,上传并解压数据集到服务器任意目录(如我上传到了/opt/npu)。5.2数据预处理目标:将原始数据转化为二进制文件(.bin)。①下载PCB_RPP_for_reID开源代码,并将PCB_RPP_for_reID/reid/datasets移到ModelZoo源码包根路径下。git clone https://github.com/syfafterzy/PCB_RPP_for_reID.gitcd PCB_RPP_for_reIDgit reset --hard e29cf54486427d1423277d4c793e39ac0eeff87ccd ..cp -r PCB_RPP_for_reID/reid/datasets ./②执行PCB_pth_preprocess.py脚本。运行成功后生成query_preproc_data_Ascend310和gallery_preproc_data_Ascend310文件夹。python3.7 PCB_pth_preprocess.py -d market -b 1 --height 384 --width 128 --data-dir /home/HwHiAiUser/datasets/market1501/ -d:数据集-b:batchsize---height:图像输入高--width:图像输入宽--data-dir:数据集路径③生成数据集info文件使用benchmark推理需要输入二进制数据集的info文件,用于获取数据集。使用get_info.py脚本,输入已经得到的二进制文件,输出生成二进制数据集的info文件。运行get_info.py脚本。python3.7 get_info.py bin ./query_preproc_data_Ascend310 ./query_preproc_data_Ascend310.info 128 384 python3.7 get_info.py bin ./gallery_preproc_data_Ascend310 ./gallery_preproc_data_Ascend310.info 128 384第一个参数为生成的数据集文件格式,第二个参数为预处理后的数据文件路径,第三个参数为输出的info文件,第四个和第五个参数分别为模型输入的宽度和高度。运行成功后,在当前目录中生成query_preproc_data_Ascend310.info和gallery_preproc_data_Ascend310.info。 模型转换6.1 .pth转.onnx使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。①获取权重文件,在源码包中有权重文件PCB_3_7.pt。在Modelzoo获取的源码包中创建models文件夹,并将权重文件放入该文件夹。mkdir modelsmv PCB_3_7.pt ./models/PCB_3_7.pt②导出onnx文件,添加pth2onnx.py搜索路径import sys    sys.path.append('PCB_RPP_for_reID') import torchimport argparsefrom torch.autograd import Variable 修改模型文件cd PCB_RPP_for_reID/reid/modelspatch -p0 < ../../../resnet.diffcd -执行pth2onnx脚本,在models目录下生成onnx模型文件PCB.onnx。python3.7 pth2onnx.py 6.2 .onnx转.om得到静态ONNX模型后,使用ATC工具将.onnx文件转换为.om文件,导出.onnx模型文件时需设置算子版本为11。ATC工具功能架构如下图所示。从图中可以看出,用户可以将开源框架网络模型或Ascend IR定义的单算子描述文件(json格式)通过ATC工具转换成适配昇腾AI处理器的离线模型。6.2.1 命令行使用atc工具使用ATC工具将ONNX模型转OM模型,设置环境变量source /usr/local/Ascend/ascend-toolkit/set_env.sh使用atc将onnx模型转换为om模型文件atc --framework=5 --model=.onnx文件地址 --output=PCB --input_format=NCHW --input_shape="input_1:1,3,384,128" --log=debug --soc_version=Ascend310--model:为ONNX模型文件。--framework:5代表ONNX模型。--output:输出的OM模型。--input_format:输入数据的格式。--input_shape:输入数据的shape。--log:日志级别。--soc_version:处理器型号。运行成功后生成PCB.om模型文件。6.2.2 MS可视化操作Mindstudio已经嵌入ATC工具,在菜单栏选择“Ascend > Model Converter”,如下图所示。 选择onnx模型文件可以打开output path选择保存在本地的输出地址填写对应shape,我们只要更改第一维数据,即更改不同的batch size来转换成适合不同bs输入的om模型,服务于之后的性能测试 。下图为转换过程中的截图Model converted successfully转换成功!Benchmark推理CANN当前版本为5.1.RC1,CANN 5.1.RC1和MindStudio 5.0.RC1版本不发布benchmark工具,若需要在MindStudio环境下使用该工具,请安装CANN 5.0.3版本下的benchmark工具以及3.0.3版本的MindStudio。所以我们使用Mindstudio客户端的远程终端Remote Terminal进行benchmark工具的使用。在菜单栏选择“Tools> Start SSH Session”,选择我们配置好的远程连接, 为便于不同batch size的性能测试,我们可以先使用Model converter转换出1,4,8,16,32,64bs的om模型,并将它们放在同一个文件夹内。重命名与移动若提示重复,可以直接replace即可我们把不同bs的om文件存放在如下目录以下只展示用PCB_bs1.om进行测试,其他bs方法相同①测试精度python3.7 ./PCB_pth_postprocess.py -q ./result/dumpOutput_device0_query -g ./result/dumpOutput_device0_gallery -d market --data-dir /opt/npu/market1501 TopN精度表格如下CMC Scoresmarket1501Top-192.1%Top-596.9%Top-1098.1%将得到的om离线模型推理TopN精度与该模型github代码仓上公布的精度对比,精度下降在1%范围之内,故精度达标。②测试吞吐率./benchmark.x86_64 -model_type=vision -device_id=0 -batch_size=1 -om_path=/home/zyc/om/PCB_bs1.om -input_text_path=./query_preproc_data_Ascend710.info -input_width=128 -input_height=384 -output_binary=True -useDvpp=False在此之前要先配置环境变量source /usr/local/Ascend/ascend-toolkit/set_env.sh结果如下图所示运行结果参数说明如下表所示:参数 说明[e2e]throughputRate latency端到端总吞吐率。公式为sample个数/时间。端到端时延,即从处理第一个sample到最后一个sample的完成时间。[data read][preprocess]throughputRate当前模块的吞吐率。[post]moduleLatency执行一次当前模块的时延。[infer]throughputRate moduleLatency  Interface throughputRate推理模块整体吞吐率,包含线程启动、数据等待、实际推理等时间。推理模块的平均时延。公式为执行一次推理的时间/batch size,其中执行一次推理的时间包含了内存申请、内存拷贝以及推理等时间。aclmdlExecute接口的吞吐率。公式为sample个数/aclmdlExecute接口的平均执行时间。 我们关注interface throughRate,结果为369.953,若是310模型则需乘以4,若为310P则无需相乘。后面我们在310和310P上均进行了精度测试,全部达标。 优化方法如果性能不能达标,我们提供了一些可以参考的优化方法,如①aoe优化source /usr/local/Ascend/ascend-toolkit/set_env.shexport LD_LIBRARY_PATH=${ASCEND_HOME_PATH}/tools/aoe/lib64:$LD_LIBRARY_PATHaoe --framework=5 --model=./models/PCB.onnx --job_type=2  --output=./om/PCB_aoe_bs1.om --input_format=NCHW --input_shape="input:1,3,384,128" --device=0等待读条结束即可②onnxsim工具通过Netron查看onnx的模型结构图发现有一些常量算子可以折叠,固定模型输入的batch size,并结合onnxsim工具对onnx模型进行优化pip install onnx-simplifier == 0.3.6FAQQ:出现如下benchmark无法使用的问题如何解决?A:这是你忘记了配置环境变量,只需运行如下代码source /usr/local/Ascend/ascend-toolkit/set_env.sh Q:使用benchmark提示没有权限怎么办?A:chmod u+x benchmark.x86_64 Q:安装环境缓慢如何解决?A:可以尝试换源,例如使用豆瓣源,以下以安装pytorch为例pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple torch==1.8.1从昇腾社区获得更多帮助开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以来昇腾社区获得更多的帮助。昇腾官网:https://www.hiascend.com/昇腾社区:https://bbs.huaweicloud.com/昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html
  • [经验分享] 使用MindStudio进行ReID模型ONNX推理
    ReID ONNX推理    本次实验在MindStudio软件上进行,首先用户需要按照教程依次配置python环境,MinGW依赖,Java依赖,安装Cmake。MindStudio是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,提供用户在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务依靠模型可视化、算力测试、IDE本地仿真调试等功能,极大的提高了用户的开发效率,相比于很多用户不熟悉服务器的换进配置和命令形式,MindStudio采用菜单栏的形式简化了所有的命令操作,以可视化的操作让用户快速上手。同时MindStudio的社区活跃度非常高,在提出一个issue后,很快可以得到开发者的回复,方便解决我们其中遇到的问题。一、概述随着深度卷积神经网络的不断改进,行人重识别领域也有了很大的进步,但大多数的SOTA的算法都是设计了很复杂的网络结构和融合了多支路的特征。ReID模型则是一个结合了近些年来在行人重识别(Person ReID)算法中的一些训练技巧产生的Baseline,这些训练技巧包括Warmup Learning Rate、Center Loss、Last Stride等,使得模型在Market1501数据集上达到了94.5% rank-1以及85.9%mAP。二、服务器端推理环境准备1、 从下面链接下载Pytorch Onnx推理项目源代码仓ATC ReID (FP16)- 昇腾社区 (hiascend.com) 2、 将下载后的压缩包上传到310服务器,并解压,模型文件存储在ReID_for_ Pytorch目录中可通过scp命令或xshell等软件。3、 使用下面命令下载ReID原仓库代码到当前目前中git clone https://github.com/michuanhaohao/reid-strong-baseline4、 当前目录结构5、 配置conda环境、安装依赖包4.1、深度学习框架CANN == 5.1.RC1torch == 1.8.0torchvision == 0.9.0onnx == 1.7.04.2、python第三方库numpy == 1.20.3Pillow == 8.2.0opencv-python == 4.5.2.54yacs == 0.1.8pytorch-ignite == 0.4.56、 pth模型文件已经在下载的压缩包中。7、 准备数据集本推理模型使用Market1501数据集的测试集,请用户自行获取该数据集,上传并解压数据集到服务器任意目录,这里我将数据集目录放在了/opt/npu目录下。三、客户端Mindstudio3.1 安装和配置环境按照Mindstudio用户手册中的安装指南—>安装操作来安装Mindstudio。推理环境在远端服务器上已经配置完成。(安装教程 )3.2 创建工程选择Ascend App 项目其中CANN版本应选择远端服务器,点击change添加远程服务器填写远端服务器信息,测试连接,连接成功后,选择CANN目录。点击完成。等待本地同步远端服务器CANN文件。同步成功后,选择ACL Project(python)项目,点击完成,完成新建项目。配置项目结构选择add python SDK选择ssh interpreter添加远程服务器选择python解释器配置本地文件夹与远程服务器映射从远端服务器拉取代码拉取代码成功数据预处理数据预处理将原始数据集转换为模型输入的数据,使用ReID_preprocess.py(找到该文件,然后右键选择Modify Run Configuration)gallery同理也是同样的操作,再产生后gallery信息后,可在MindStudio命令控制台,将预先产生prep_dataset_gallery内的文件移动到prep_dataset_query目录。数据预处理成功生成JPEG图片输入info文件,使用benchmark推理需要输入图片数据集的info文件,用于获取数据集。使用gen_dataset_info.py脚本,输入已经获得的图片文件,输出生成图片数据集的info文件。第一个参数为生成的数据集文件格式,第二个参数为预处理后的数据文件的相对路径,第三个参数为生成的数据集文件保存的路径。运行成功后,在当前目录中生成prep_bin.info。运行ReID_pth2onnx文件将pth文件导出为onnx文件onnx 转om(点击AscendModel Converter)转换om模型成功后,使用mindstudio remote终端执行benchmark推理启动ssh session,切换conda环境、工作目录使用Benchmark工具进行推理,配置bemchmark工具需要的环境执行benchmark命令获得om模型的吞吐率推理成功,需要对推理结果进行后处理,通过ReID_postprocess.py进行后处理得到推理精度其余的batch_size也是同样的操作,得到的结果如下表1所示,official为官方提供的精度。输出结果如表1所示:Om ModelmAPRank-1BS185.893.7BS1685.893.7BS3285.893.7Official85.994.5表1得到的om离线模型推理在mAP和Rank-1评价指标上精度与该模型github代码仓上公布的精度对比,精度下降在1%范围之内,故精度达标。310执行完毕,经该模型迁移至710,将上述流程在Ascend710上在执行一遍精度和性能均达标。四、FAQQ:如果你仅从Asc end/modelzoo 拉取你的项目,通常会出现没有benchmark软件A:所以还是建议下载每个项目安装包的形式来获取项目代码,以ReID模型为例,链接如下ATC ReID (FP16)- 昇腾社区 (hiascend.com) 。Q:当出现下面的问题时,需要为其增加环境设置A:使用下面的命令source /usr/local/Ascend/ascend-toolkit/set_env.shQ: 依据下面方式配置python代码运行环境,其实使用的并不是虚拟环境,而是base环境A: 目前找到的解决方式是右键,然后点击Modify Run Configuration,配置python虚拟环境Q:类似上一问题,使用MindStudio运行文件时,每次都会和服务器进行文件同步,所以容易导致的问题时,当本地任何文件和服务器有差异时,会强制性将其变化为一致,导致受影响的文件很大。除非你的操作是一次性成功的。A:希望开发者和社区能够注意到这一点。另外可以增加一个功能是可选择性的下载服务器的文件,而不是一次性只能下载全部的文件。五、从昇腾社区获得更多帮助 开发者在使用 MindStudio或进行算子开发过程中遇到任何问题,都可以来昇腾社区获得更多的帮助。昇腾官网:https://www.hiascend.com/ 昇腾社区:https://bbs.huaweicloud.com/ 昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.htm
  • [经验分享] 使用MindStudio进行 FasterRCNN-FPN-DCN模型onnx推理
    使用MindStudio进行 FasterRCNN-FPN-DCN模型onnx推理一:介绍       本帖将以FasterRCNN-FPN-DCN为例。以图文的方式较为详细的展示基于MindStudio和CANN架构的Pytorch离线推理全流程。技术问题可以登陆MindStudio昇腾论坛进行发帖和讨论。下面对本次实验的任务进行一个简单的介绍。       任务场景:模型迁移       任务描述:将预训练好的FasterRCNN-FPN-DCN网络的pth权重模型,先转换成onnx模型,再转为昇腾om模型。随后基于om模型在昇腾的图形处理设备上(NPU Ascemd 310、NPU Ascemd 710)进行离线推理。       任务目标:模型的精度需要达到基准线的99%以上。710上的推理性能需要达到310的1.2倍。T4 GPU的1.6倍。       环境信息:昇腾设备:Ascend 310、Ascend 710、OS:Ubuntu Linux、CANN版本:5.1.RC1。       本次实验全程在MindStudio上进行,请先按照教程配置环境,安装MindStudio。MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多,涵盖面广,可以进行包括网络模型训练、移植、应用开发、推理运行及自定义算子开发等多种任务。MindStudio除了具有工程管理、编译、调试、运行等一般普通功能外,还能进行性能分析,算子比对,可以有效提高工作人员的开发效率。除此之外,MIndStudio具有远端环境,运行任务在远端实现,对于近端的个人设备的要求不高,用户交互体验很好,可以让我们随时随地进行使用。二:服务器端环境准备2.1:服务器端主要依赖依赖名称版本ONNX1.9.0Pytorch1.8.0TorchVision0.9.0numpy1.21.6mmcv-full1.2.7mmdetection2.8.02.2:创建conda环境、安装pytorch(cpu)版本1:conda create -n own_env python=3.7 2:pip install torch==1.8.0+cpu torchvision==0.9.0+cpu torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html2.3:安装mmcv(需要严格执行下述语句安装对应分支)1:git clone https://github.com/open-mmlab/mmcv -b master 2:cd mmcv 3:git checkout v1.2.7 4:MMCV_WITH_OPS=1 pip install -e . 5:patch -p1 < ../mmcv.patch 6:cd ..2.4:安装mmdetection1:git clone https://github.com/open-mmlab/mmdetection -b master 2:cd mmdetection 3:git reset --hard a21eb25535f31634cef332b09fc27d28956fb24b 4:patch -p1 < ../dcn.patch 5:pip3.7 install -r requirements/build.txt 6:python3.7 setup.py develop 7:cd ..2.5:完成示意图。有以下依赖即可将官网文档下的代码数据包导入到服务器下自己的目录三:MindStudio配置3.1:MindStudio配置环境与安装。MindStudio是一套基于IntelliJ框架的开发工具链平台,提供了应用开发、调试、模型转换功能,同时还提供了网络移植、优化和分析功能,为用户开发应用程序带来了极大的便利,安装详见此处。3.2:创建工程、连接服务器、同步项目文件。Step1:安装完成后,首次登录MindStudio并点击 “New Project” 创建新的项目,进入创建工程界面。Step2:按照下述选择项目类型、项目名称以及本地地址Step3:配置上述CANN Version选择远程服务器(点击Change出现以下界面)Step4:填写远程服务器信息,并测试是否连通Step5:连接成功后返回上一页面选择CANN目录。具体如下Step6:等待连接完成Step7:完成同步后,选择MindX SDK Project项目。Step8:添加远程python SDK(服务器自己conda环境下的python sdk)Step9:添加完远程Python SDK后,在project和modules中进行相应设置。Step10:至此,配置本地项目使用远程服务器自己的conda环境下的Python以完成。下面配置本地文件夹与远程服务器映射Deployment。(打开file→settings进行如下选择)Step11: 准备本地项目。此步骤较为麻烦,①可以选择从服务器下载项目文件到本地,②也可以直接将项目文件直接放入本地路径中。①整体过程较慢,推荐使用②。①操作方法如下所示。Step12:完成下载后需保持本地路径与远程路径的文件同步。注:在执行代码时候会自动校验本地目录和远程目录,若不相同。远程目录会以本地目录为参考对象进行删除!强烈建议一定要设置好了不同步文件夹后再执行代码。设置文件夹不进行同步,如下图所示。具体参考此处链接。其中local path与Deploymente path区别如下Step13:通过上述过程完成了本地的mindstudio项目连接远程服务器,并创建了同步的本地文件夹和远程文件夹。执行创建项目自带的main.py测试是否正常执行。(该步骤会自动校验文件,耗时较长。建议根据step12设置部分文件夹不同步:如数据集、权重模型文件夹等)3.3:转换模型文件(pth→onnx→om)3.3.1:pth转onnx模型。填写参数文件时按照此链接填写需要注意的是不能在本地终端执行Python文件。需要直接找到本文件点击run。参数文件填写时需要回退两个文件夹(即:FasterRCNN_FPN-DCN/mmdetection/tools回退到FasterRCNN_FPN-DCN/)路径才正确。注:下述所有需要填写的代码参数均以此链接“快速上手”里面的预处理python语句为准。3.3.2:onnx转om模型注:此处pth转出来的onnx不能成功转换为om模型,需要添加代码进行相应修改。①打开Mindstudio自带的om模型转换工具(onnx→om):②:直接转换示例:③:修改后转换示例:执行代码:(远程终端)1:cd model 2:python test2om.py --batch_size=1得到faster_rcnn_r50_fpn_1x_coco_change_bs1.onnx模型文件,此时再次通过model converter进行转换。即可成功转为om模型。3.4:数据预处理①运行“FasterRCNN+FPN+DCN_preprocess.py”脚本文件。得到coco2017_bin文件夹。②数据集jpg照片转info文件③Coco2017_bin转info文件3.5:执行推理验证。(此部分需要在远程终端进行)3.5.1:连接远程终端3.5.2:激活环境与推理工具3.5.3:开始推理3.6:数据后处理部分3.6.1:将推理得到的bin文件夹(dumpOutput_device0)转为txt文件夹(detection-results)3.6.2:将得到的txt文件夹 (detection-results)转为json数据3.6.3:将得到的json文件和coco给出的验证集json文件进行对比。总结1:精度数据如上3.6.3所示。性能数据在3.5.3中最后一图2:310与710上述流程相同。3:经过转换后,模型精度和性能达到要求。针对每个步骤提供了详细的图文描述。FAQ1:为什么自带的pth转的Onnx模型,转不了om模型?答:通过远程终端执行ATC语句进行转换,或是使用Mindstudio自带的Model Converter进行转换均会报错:“Concat结点的参数0和参数3类型不一致。”经过可视化发现其参数3的数组数据类型为Int32应修改为Float32。同样类型的结点有13个,需要进行结点的查找和修改。相关代码写在了3.3.1中提到的test2om.py文件中。2:为什么得不到batch_size > 1时的模型推理精度数据?       这也是这个模型的一个“坑”,我在测试不同batch_size下的精度数据和性能数据时也发现了这个问题。总的来说是因为以下两点。①:本模型是一个静态模型,其中定义了很多constant常量数组都不支持动态batch。②:后处理代码FasterRCNN+FPN+DCN_postprocess.py文件的编写逻辑也是只支持batch_size为1的情况。具体分析如下:首先我在测试不同batch_size情况下的om模型的推理性能时。发现上述图中的constant数组,其第一维度均定义为了1。加上此模型为静态模型。故只支持batch_size=1情况下的推理。然后经过对上述13个constant数组的查找和修改其第一维度的数值为batch_size后(该功能也在test2om中实现了),也可成功转为om后面进行benchmark测试,并得到相应的bin文件。但后续执行FasterRCNN+FPN+DCN_postprocess.py(bin→txt)后处理代码只能处理bs=1的情况下,故无法进行后续的精度测试。(但执行benchmark的过程中可以得到不同bs下的性能指标。)小结:所以在利用test2om.py文件对onnx模型进行修后。可以测试得到不同bs下的推理性能。但是只能得到bs=1时候的推理精度数据。
  • [技术干货] 【昇腾视界系列 第40期】昇腾资料2022年5月刊
    本期介绍昇腾开发者资料5月刊,汇总昇腾AI基础软硬件平台上新、新增特性和论坛热门精华帖推荐,带您快速了解昇腾资料每月最新动态:昇腾资料2022年5月刊:https://www.hiascend.com/activities/infomonthly/202205
  • [技术干货] 【昇腾视界系列 第39期】昇腾资料2022年4月刊
    本期介绍昇腾开发者资料4月刊,汇总昇腾全栈解决方案上新、新增特性和论坛热门精华帖推荐,带您快速了解昇腾资料每月最新动态:昇腾资料2022年4月刊:https://www.hiascend.com/activities/infomonthly/202204