MindStudio基于pyACL应用开发主流程

Bilibili视频教程:MindStudio基于pyACL应用开发流程

一、基于pyACL开发的简介

1.1 MindStudio介绍

MindStudio基于pyACL应用开发主流程_第1张图片

图1 MindStudio 开发流程
MindStudio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,开发流程如图1。MindStudio工具中的主要几个功能特性如下:
  1. 工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。
  2. SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。
  3. 应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。
  4. 自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。
  5. 离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。
  6. 日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。
  7. 性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。
  8. 设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。
  9. 精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。
  10. 开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。

1.2 pyACL应用介绍

MindStudio基于pyACL应用开发主流程_第2张图片

图2 pyACL逻辑架构图

pyACL是Python Ascend Computing Language的简写。Ascend Computing Language(AscendCL)提供Device管理、Context管理、Stream管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等C语言API库供用户开发深度神经网络应用,用于实现目标识别、图像分类等功能,逻辑架构如图2。
在运行应用时,AscendCL调用GE执行器提供的接口实现模型和算子的加载与执行、调用运行管理器的接口实现Device管理、Context管理、Stream管理、内存管理等。
计算资源层是昇腾AI处理器的硬件算力基础,主要完成神经网络的矩阵相关计算、完成控制算子/标量/向量等通用计算和执行控制功能、完成图像和视频数据的预处理,为深度神经网络计算提供了执行上的保障。
pyACL就是在Ascend CL的基础上使用CPython封装得到的Python API库,使用户可以通过Python进行昇腾 AI 处理器的运行管理、资源管理等。

二、创建应用工程

2.1 环境配置

MindStudio可以单独安装在Windows上。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann-toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。
具体安装流程可以参考Windows安装MindStudio(点我跳转),MindStudio环境搭建指导视频(点我跳转)。MindStudio官方下载地址:点我跳转。
本文教程基于MindStudio5.0.RC1 x64,CANN版本5.1.RC1实现。

2.2 新建应用工程方式

步骤一 进入工程创建页面。
首次登录MindStudio:单击New Project,如下图所示:
MindStudio基于pyACL应用开发主流程_第3张图片
非首次登录MindStudio:在顶部菜单栏中选择File > New > Project…,如下图所示:
MindStudio基于pyACL应用开发主流程_第4张图片
步骤二 在New Project窗口中,选择Ascend App,按下所示配置工程,如下图所示:
MindStudio基于pyACL应用开发主流程_第5张图片
点击Finish后,即创建成功
AscendCL(C++)开发可参考此贴:
https://bbs.huaweicloud.com/forum/thread-194270-1-1.html
选择Ascend App,输入项目的名称、描述、CANN远程地址以及本地地址。点击Change配置CANN,如下图所示:
MindStudio基于pyACL应用开发主流程_第6张图片
点击右侧 + 进行配置远程服务器,如下图所示:
MindStudio基于pyACL应用开发主流程_第7张图片
在出现的信息配置框输入相关配置信息,如下图所示:
MindStudio基于pyACL应用开发主流程_第8张图片
输入服务器的SSH信息,如果测试连接失败,建议使用CMD或XShell等工具进行排查。
选择远程 CANN 安装位置,如下图所示:
MindStudio基于pyACL应用开发主流程_第9张图片
在Remote CANN location中选择CANN的路径,需要注意的是必须选择到CANN的版本号目录,这里选择的是5.1.RC1版本,如下图所示:
MindStudio基于pyACL应用开发主流程_第10张图片
点击确定后,需要等待MindStudio进行文件同步操作,这个过程会持续数分钟,期间如果遇到Sync remote CANN files error.错误,考虑是否无服务器root权限。
MindStudio基于pyACL应用开发主流程_第11张图片
配置完成CANN点击下一步
MindStudio基于pyACL应用开发主流程_第12张图片
选择ACL Project(Python),上面的是空目录,下面的是ResNet-50分类的样例,我们以Resnet-50为演示工程。
MindStudio基于pyACL应用开发主流程_第13张图片
点击Finish后,即创建成功
AscendCL(C++)开发可参考此贴:
MindStudio基于AscendCL应用开发流程_MindStudio_昇腾_华为云论坛 (huaweicloud.com)

2.3 导入应用工程方式

步骤一 导入工程文件。
首次登录MindStudio:在MindStudio欢迎界面中单击“Open”,选择需要导入的工程,单击“OK”确认导入。
进入工程创建页面,在顶部菜单栏中选择File > Open…,选择现有工程打开。
步骤二 若工作窗口已打开其他工程,会出现如图所示提示。
选择“This Window”,则直接在当前工作窗口打开新创建的工程;选择“New Window”,则新建一个工作窗口打开新创建的工程。
MindStudio基于pyACL应用开发主流程_第14张图片

三、准备模型文件和数据

配置完成后我们还需要进行模型转化,点击Model Converter
MindStudio基于pyACL应用开发主流程_第15张图片
选择Model File(.prototxt)与Weight File(.caffemodel)
可以在caffe-model-zoo: caffe pretrained models and prototxt (gitee.com)进行下载,链接: https://pan.baidu.com/s/1gXaP12zb_-qUJ1SyCe1nNg?pwd=whut 提取码: whut 复制这段内容后打开百度网盘手机App,操作更方便哦选择后会进行模型解析,此过程将持续数分钟,相关文件下载完存放在本地或者服务器任意位置。

确定模型存放位置,如下图所示:
MindStudio基于pyACL应用开发主流程_第16张图片
配置完成后,点击 OK,此处注意可能等待时间较长,我们无需操作,等待软件加载完
成即可,等待界面如下图所示。
MindStudio基于pyACL应用开发主流程_第17张图片
在output path中设定保存位置,保存后移动到model文件夹,保存的路径根据配置所提供的,如下图所示:
MindStudio基于pyACL应用开发主流程_第18张图片
MindStudio基于pyACL应用开发主流程_第19张图片
MindStudio会生成模型可视化图如下:
MindStudio基于pyACL应用开发主流程_第20张图片
MindStudio基于pyACL应用开发主流程_第21张图片

四、开发应用

以Resnet-50为例:
入口代码如下,首先需要对图片进行预处理,包括图片的解码、缩放功能。处理后输入到网络进行推理

MindStudio基于pyACL应用开发主流程_第22张图片
图片处理后调用acl.mdl.execute执行模型推理,如下图所示:
MindStudio基于pyACL应用开发主流程_第23张图片
最后可以在device返回host的结果时输出top-5结果,如下图所示:
MindStudio基于pyACL应用开发主流程_第24张图片
这里添加了ImageNet的label标签,用户可以根据自己的实际需求进行使用。

五、pyACL应用运行指导

配置需要运行的文件,样例Resnet-50的运行文件为acl_net.py,如下图所示:
MindStudio基于pyACL应用开发主流程_第25张图片
选择要运行的文件,这里以acl_net.py为例,如下图所示:
MindStudio基于pyACL应用开发主流程_第26张图片
点击运行Run,如下图所示:
MindStudio基于pyACL应用开发主流程_第27张图片
可以在远程部署设置Deployment设置远程和本地地址的映射。
MindStudio基于pyACL应用开发主流程_第28张图片
推理结果如下:
MindStudio基于pyACL应用开发主流程_第29张图片

MindStudio基于pyACL应用开发主流程_第30张图片

六、常见问题 & 解决方案汇总

Q:基于Python实现,比起C++开发ACL应用有何好处?
A:PyACL与Python一样无需编译,并且代码量比C++实现的少

Q:离线模型.om如何得到?
A:支持Caffe/TensorFlow/MindSpore/ONNX等框架训练好的模型,可以在开源社区如Gitee、Github上搜索相应的model zoo寻找自己需要的模型。
这里提供本教程的所有代码与caffe model zoo:

链接: https://pan.baidu.com/s/1EycYT_Al0mVA7AMhE1nndw
提取码: dne8

Q:CANN服务器连接失败
MindStudio基于pyACL应用开发主流程_第31张图片
本地ping远程ip,用其他SSH工具进行测试排除原因

七、从昇腾官方体验更多内容

更多的疑问和信息可以在昇腾论坛进行讨论和交流:https://bbs.huaweicloud.com/forum/forum-726-1.html

你可能感兴趣的:(AI,人工智能,深度学习,ai)