基于MindStudio的superpoint ONNX推理开发全流程


一、   MindStudio介绍与安装

相关课程:昇腾全流程开发工具链(MindStudio)

本课程主要介绍MindStudio在昇腾AI开发中的使用,作为昇腾AI全栈中的全流程开发工具链,提供覆盖训练模型、推理应用和自定义算子开发三个场景下端到端工具,极大提高开发效率。

建议开发前,学习该课程的第1章和第3章,可以少走很多弯路!!!

1.  MindStudio介绍

MindStudio提供您在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。

1)   功能简介

l  针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利。

l  针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。

l  针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。

l  针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。

2)   功能框架

MindStudio功能框架如图1-1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。

图1-1 工具链功能架构

 

3)   工具功能

MindStudio工具中的主要几个功能特性如下:

l  工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。

l  SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。

l  应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。

l  自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。

l  离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。

l  日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。

l  性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。

l  设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。

l  精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。

l  开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。

2.  MindStudio安装

具体安装操作请参考:MindStudio安装指南[1]   MindStudio环境搭建指导视频

1)   场景介绍

l  纯开发场景(分部署形态):在非昇腾AI设备上安装MindStudio和Ascend-cann-toolkit开发套件包。可作为开发环境仅能用于代码开发、编译等不依赖于昇腾设备的开发活动(例如ATC模型转换、算子和推理应用程序的纯代码开发)。如果想运行应用程序或进行模型训练等,需要通过MindStudio远程连接功能连接已部署好运行环境所需软件包的昇腾AI设备。

l  开发运行场景(共部署形态):在昇腾AI设备上安装MindStudio、Ascend-cann-toolkit开发套件包、npu-firmware安装包、npu-driver安装包和AI框架(进行模型训练时需要安装)。作为开发环境,开发人员可以进行普通的工程管理、代码编写、编译、模型转换等功能。同时可以作为运行环境,运行应用程序或进行模型训练。

2)   软件包介绍

l  MindStudio:提供图形化开发界面,支持应用开发、调试和模型转换功能,同时还支持网络移植、优化和分析等功能。

l  Ascend-cann-toolkit:开发套件包。为开发者提供基于昇腾AI处理器的相关算法开发工具包,旨在帮助开发者进行快速、高效的模型、算子和应用的开发。开发套件包只能安装在Linux服务器上,开发者可以在安装开发套件包后,使用MindStudio开发工具进行快速开发。

二、   环境配置

本次任务中,所使用的环境为Windows下安装的MindStudio + 远程昇腾AI运行环境,本案例使用的MindStudio版本为5.0.RC2。

1.  MindStudio环境搭建

(1)MindStudio是一个跨平台、跨框架代码迁移的管理运维工具,可以在应用、算法、算子三个层级上,同时也提供了一站式AI开发环境,支持Python,Java和C语言的开发,并提供了众多性能调优工具。MindStudio安装详见官方安装指南。 (1)进入网站后如果你跟我一样是Windows环境,就选择下方对应环境的安装教程进行安装即可。

图2-1 MindStudio安装流程

 

(2)安装完成后,如果是首次登录MindStudio,则直接点击 ”New Project” 创建新的项目,进入创建工程界面。选择Ascend App项目类别,然后就是常规的命名和路径修改,在CANN Version处点击change配置远程连接和远程CANN地址。

图2-2 创建项目

 

(3)当点击CANN Version的Change后进入下界面进行相关配置,点击远程连接配置的最右侧添加按钮。

图2-3 远程连接配置

 

(4)进入SSH Configurations后,可进行如下图所示的连接配置。在MindStudio的远程服务中,定义了SSH 配置,其使得用户可以保存多个远程服务器的连接配置。

图2-4 建立远程连接

 

(5)返回Remote CANN Setting界面,继续配置CANN location。加载完后再点击Finish即可完成远程环境配置。

图2-5 配置CANN location

 

(6)完成远程连接设置后,点击next会进到模板选择界面,由于我们是推理任务,此时我们选择MindX SDK Project(Python),再点击Finish。MindX SDK(昇腾行业SDK),提供面向不同行业使能的开发套件,简化了使用昇腾芯片推理业务开发的过程。SDK提供了以昇腾硬件功能为基础的功能插件,用户可以通过拼接功能插件,快速构建推理业务,也可以开发自定义功能插件。

图2-6 MindX SDK Project(Python)

 

(7)创建好项目后,我们还需要配置本地和远程的项目的路径,通过选择界面菜单栏的File->Settings,找到其中Tools下的Deployment可配置本地项目路径和对应远程路径的映射。Deployment管理远程开发时的本地文件与远程文件的同步。

图2-7 配置本地和远程的项目的路径

 

(8)除了Mappings的设置完,还有Excluded Paths设置,该选项是可以排开相应的路径不进行上传和下载,比如说我们可以禁用中间的二进制数据文件,避免在运行时长时间的等待。

图2-8 禁用中间的二进制数据文件

(9)远程环境配置完后,我们需要添加python解释器,在这我建议是直接选择远程环境下我们创建好的推理虚拟环境(环境创建下节会讲)下的解释器。

图2-9 禁用中间的二进制数据文件

 

图2-10 添加python sdk

 

添加好我们环境所需的解释器后,我们需要在Project和Modules下给项目配置。

图2-11

 

2.  模型推理环境配置

(1)  在MindStudio上配置好了SSH Configurations和Deployment后,我们需要创建推理环境所需的环境。其中Superpoint推理的相关源码包来源于github(地址见下文)。

(2)  直接运行命令安装所需要的环境配置。

图2-12 requirements.txt

 

图2-13 requirements_torch.txt

 

三、   SuperPoint介绍

我们设计了一种称为SuperPoint的全卷积神经网络架构,该架构对全尺寸图像进行操作,并在单次前向传递中产生伴随固定长度描述符的兴趣点检测(见图3-1)。该模型有一个单一的共享编码器来处理和减少输入图像的维数。在编码器之后,该架构分成两个解码器“头”,它们学习任务特定权重——一个用于兴趣点检测,另一个用于感兴趣点描述。大多数网络参数在两个任务之间共享,这与传统系统不同,传统系统首先检测兴趣点,然后计算描述符,并且缺乏跨两个任务共享计算和表示的能力。

图3-1 SuperPoint架构

 

代码地址:

https://github.com/eric-yyjau/pytorch-superpoint

四、   代码文件、推理数据集及模型下载

1.   代码文件下载

代码地址:https://github.com/eric-yyjau/pytorch-superpoint下载代码存放到本地。

2.   推理数据集下载

数据集地址http://icvl.ee.ic.ac.uk/vbalnt/hpatches/hpatches-sequences-release.tar.gz

数据集使用的是hpatches,放在datasets目录下。

3.   模型文件(*.pth)下载

https://github.com/eric-yyjau/pytorch-superpoint/tree/master/logs/superpoint_coco_heat2_0/checkpoints

先在本地上导出onnx模型文件,保存到checkpoints目录下。接着在310P平台利用onnx模型导出om模型(详见第五章)。

五、   模型转换功能介绍及操作步骤讲解

用户使用Caffe/TensorFlow等框架训练好的第三方模型,可通过ATC工具将其转换为昇腾AI处理器支持的离线模型(*.om文件),模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理,详细架构如图所示。

图5-1 转换架构图

 

在本项目中,要将mindspore框架下训练好的模型(*.onnx文件),转换为昇腾AI处理器支持的离线模型(*.om文件),具体步骤如下:

(1)   点击Ascend > Model Converter,进入模型转换界面,参数配置如图5-2所示。

图5-2 模型信息

 

图5-3 数据预处理

 

(2)   点击Next进入图5-3界面,该项目数据不需要预处理,直接点击Next,进入图5-4界面,再点击Finish开始模型转换。

图5-4 高级选项

 

(3)   等待出现如图5-5所示的提示,模型转换成功

图5-5 模型转换成功

 

六、   模型推理

1、  (1)数据预处理

原测试数据有116个文件夹,每个文件夹包含6张ppm格式图片和5个矩阵以及1个文本,经过数据预处理后生成116个文件夹每个文件夹包含6个bin文件

图6-1 原始数据集

 

图6-2 运行预处理

 

图6-3 预处理

 

 模型转换

(1)导出onnx文件:调用onnx.py脚本,加载模型,并将.pth文件转化为.onnx文件,输出sp.onnx文件

图6-4 导出onnx

 

(2) Onnx模型转为Om模型

昇腾张量编译器(Ascend Tensor Compiler,简称 ATC)是昇腾CANN架构体系下的模型转换工具,它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。

模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

打开模型转换页面,如下图,上传模型文件、权重文件等,同时注意设定输出节点。

图6-5 模型转换

 

模型转换成功

图6-6 模型转换成功

 

(4)   转换om模型成功后,切换工程从离线推理仓库下载源码包。打开工程

图6-7 打开离线项目推理工程

 

 添加sdk以及参数(上述om文件以及数据预处理转换的bin文件位置)调用ais_infer脚本。

图6-8 运行ais_infer脚本

 

图6-9 运行完成得到bin文件输出

 

切换工程调用superpoint_postprocess.py脚本(参数为原有configs文件所在位置,以及上述离线推理得到二进制文件所在位置),计算精度。

图6-10 配置文件

 

 

图6-11 配置脚本运行参数

 

图6-12 得到精度

 

计算精度如图

 

遇见的问题

在使用MindStudio时,遇到问题,可以登陆MindStudio昇腾论坛进行互动,提出问题,会有专家老师为你解答。

1、     模型转换时,没有CANN Machine

图7-1 CANN管理界面

 

按以下步骤,重新安装CANN Machine

步骤1 点击File>Settings>Appearance & Behavior > System Settings > CANN,进入CANN管理界面,如图7-1所示:

步骤2 点击Change CANN,进入Remote CANN Setting界面,如图7-2所示重新安装CANN,点击Finish,安装CANN。

图7-2

 

 

图7-3

 

步骤3 完成CANN安装,点击OK,重启MindStudio,如图7-3所示。

 

 

2、     MindStudio导入应用工程后,提示“No Python interpreter configured for the module”

解决方案:

步骤1 在顶部菜单栏中选择File > Project Structure,在Project Structure窗口中,点击Platform Settings > SDKs,点击上方的“+”添加Python SDK,从本地环境中导入Python,如图所示。

图7-4

 

点击Project Settings > Project,选择上一步添加的Python SDK,如图7-5所示。

图7-5

 

 点击Project Settings > Modules,选中“MyApp”,点击“+”后选择Python,为Python Interpreter选择上述添加的Python SDK。点击OK完成应用工程Python SDK配置,如图7-6所示。

图7-6

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值