昇腾Mindstudio官方样例源码解读分享---Resnet50推理

举报
Tornado88 发表于 2020/12/07 10:42:15 2020/12/07
【摘要】 作为初学者,最近刚接触Ascend200DK,按照官方的指导一步步搭建起了开发+运行环境,指导可以参考下面这个链接https://gitee.com/lovingascend/quick_start/blob/master/Atlas200DK_separate_MD/environment.md运行的第一个样例就是Mindstudio自带的Resnet50网络,对昇腾AI处理器的强大性能尤...

作为初学者,最近刚接触Ascend200DK,按照官方的指导一步步搭建起了开发+运行环境,指导可以参考下面这个链接https://gitee.com/lovingascend/quick_start/blob/master/Atlas200DK_separate_MD/environment.md

运行的第一个样例就是Mindstudio自带的Resnet50网络,对昇腾AI处理器的强大性能尤为印象深刻。个人习惯会去研究一下源码,这里分享下心得体会,能力有限,水平一般,如果哪里写的不对的,还请指正。

对于Mindstudio开发套件,个人理解作用是提供一个简单方便的界面,让代码开发和调试更加顺畅,
Mindstudio安装在开发环境Ubuntu18.04系统,而我们最终编译出来的二进制文件要跑在运行环境的CentOS上面,如果没有Mindstudio的话,我们要不就是直接在运行环境上编译,要不就得在开发环境上搭建交叉编译环境,而使用Mindstudio在编译的时候,直接就可以选定目标版本和ARM or X86架构,节省了不少时间。然后推理的依赖文件、输出结果,Mindstudio工具可以进行方便的内部传输,不用手工再用scp或者sftp之类的操作互传。另外还有profiling工具进行性能调优等功能强大的组件,暂时没用到,后面再深入体会。

Resnet50样例代码的结构如下:
输入图片说明

1、预处理

script/transferPic.py 这里是图像的预处理,将jpg图片转成bin

om模型在推理时,需要输入的是二进制的bin文件,所以这里要提前进行转换,查看这个python的源码:
输入图片说明
这里使用了Pillow库将图片resize之后,图像排列由rgb转为bgr,然后减均值,最后保存成bin文件。

2、src/main.cpp

主函数,程序入口:
输入图片说明
实例化类SampleProcess,这个类里面实现了acl的初始化和模型的推理,还有后处理即罗列top1~top5类别的置信度。

3、src/sampleprocess.cpp

Result SampleProcess::InitResource()
输入图片说明
此处代码实现acl的初始化、setDevice、创建Context和stream、设置runMode。

关于runMode,可以理解为我们最终的二进制文件需要在运行环境上执行时,是直接在Device侧运行,还是在Host侧运行,相应的一些acl接口应该存在差异,所以这里要区分一下。

Result SampleProcess::Process()
输入图片说明
这里就是加载om模型和传入输入图片bin文件,然后进行推理,后处理得到top1~top5分类置信度。
输入图片说明
processModel.Execute(),这里就是模型执行推理的地方,如果想知道单纯的芯片推理性能,可以在这个语句前后打点,然后计算耗时是多少ms得到。

4、src/model_process.cpp

输入图片说明
这个cpp里面包含的都是模型的加载、卸载、输入和输出的初始化操作,包括内存分配与释放。
输入图片说明
这里通过aclrtMalloc接口申请内存的时候,注意红框的地方,都是大页内存优先,应该是性能更优。

5、src/utils.cpp

这个cpp里面放的是读取bin文件的函数和获取device侧buffer,感觉好像没用到,不太清楚干啥用的。

6、结语

acl接口的文档可以参考下面这个链接:

个人感觉ACL这一套接口很强大,可以很方便的调用硬件底层能力,这个文档里面还有很多应用开发样例可以参考,非常nice。

更多使用昇腾AI芯片推理&训练案例

Ascend官方Modelzoo:
https://gitee.com/ascend/modelzoo

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。