Bilibili视频教程:MindStudio基于pyACL应用开发流程
一、基于pyACL开发的简介
1.1 MindStudio介绍
- 工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。
- SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。
- 应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。
- 自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。
- 离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。
- 日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。
- 性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。
- 设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。
- 精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。
- 开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。
1.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:在顶部菜单栏中选择File > New > Project…,如下图所示:
步骤二 在New Project窗口中,选择Ascend App,按下所示配置工程,如下图所示:
点击Finish后,即创建成功
AscendCL(C++)开发可参考此贴:
https://bbs.huaweicloud.com/forum/thread-194270-1-1.html
选择Ascend App,输入项目的名称、描述、CANN远程地址以及本地地址。点击Change配置CANN,如下图所示:
点击右侧 + 进行配置远程服务器,如下图所示:
在出现的信息配置框输入相关配置信息,如下图所示:
输入服务器的SSH信息,如果测试连接失败,建议使用CMD或XShell等工具进行排查。
选择远程 CANN 安装位置,如下图所示:
在Remote CANN location中选择CANN的路径,需要注意的是必须选择到CANN的版本号目录,这里选择的是5.1.RC1版本,如下图所示:
点击确定后,需要等待MindStudio进行文件同步操作,这个过程会持续数分钟,期间如果遇到Sync remote CANN files error.错误,考虑是否无服务器root权限。
配置完成CANN点击下一步
选择ACL Project(Python),上面的是空目录,下面的是ResNet-50分类的样例,我们以Resnet-50为演示工程。
点击Finish后,即创建成功
AscendCL(C++)开发可参考此贴:
MindStudio基于AscendCL应用开发流程_MindStudio_昇腾_华为云论坛 (huaweicloud.com)
2.3 导入应用工程方式
步骤一 导入工程文件。
首次登录MindStudio:在MindStudio欢迎界面中单击“Open”,选择需要导入的工程,单击“OK”确认导入。
进入工程创建页面,在顶部菜单栏中选择File > Open…,选择现有工程打开。
步骤二 若工作窗口已打开其他工程,会出现如图所示提示。
选择“This Window”,则直接在当前工作窗口打开新创建的工程;选择“New Window”,则新建一个工作窗口打开新创建的工程。
三、准备模型文件和数据
配置完成后我们还需要进行模型转化,点击Model Converter
选择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,操作更方便哦选择后会进行模型解析,此过程将持续数分钟,相关文件下载完存放在本地或者服务器任意位置。
确定模型存放位置,如下图所示:
配置完成后,点击 OK,此处注意可能等待时间较长,我们无需操作,等待软件加载完
成即可,等待界面如下图所示。
在output path中设定保存位置,保存后移动到model文件夹,保存的路径根据配置所提供的,如下图所示:
MindStudio会生成模型可视化图如下:
四、开发应用
以Resnet-50为例:
入口代码如下,首先需要对图片进行预处理,包括图片的解码、缩放功能。处理后输入到网络进行推理
图片处理后调用acl.mdl.execute执行模型推理,如下图所示:
最后可以在device返回host的结果时输出top-5结果,如下图所示:
这里添加了ImageNet的label标签,用户可以根据自己的实际需求进行使用。
五、pyACL应用运行指导
配置需要运行的文件,样例Resnet-50的运行文件为acl_net.py,如下图所示:
选择要运行的文件,这里以acl_net.py为例,如下图所示:
点击运行Run,如下图所示:
可以在远程部署设置Deployment设置远程和本地地址的映射。
推理结果如下:
六、常见问题 & 解决方案汇总
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服务器连接失败
本地ping远程ip,用其他SSH工具进行测试排除原因
七、从昇腾官方体验更多内容
更多的疑问和信息可以在昇腾论坛进行讨论和交流:https://bbs.huaweicloud.com/forum/forum-726-1.html