摘要:AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。
本文分享自华为云社区《【CANN文档速递09期】应用开发之推理场景》,作者:昇腾CANN。
01 认识AscendCL
AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子加载与执行、图片数据编解码/裁剪/缩放处理等API库,实现在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的API框架,实现对所有资源的调用。
AscendCL的优势如下:
1.高度抽象:算子编译、加载、执行的API归一,相比每个算子一个API,AscendCL大幅减少API数量,降低复杂度。
2.向后兼容:AscendCL具备向后兼容,确保软件升级后,基于旧版本编译的程序依然可以在新版本上运行。
3.零感知芯片:一套AscendCL接口可以实现应用代码统一,多款昇腾处理器无差异。
AscendCL的主要应用场景如下:
1.开发应用:用户可以直接调用AscendCL提供的接口开发图片分类应用、目标识别应用等。
2.供第三方框架调用:用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力。
3.供第三方开发lib库:用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理等能力。
02 开发流程
此处以开发应用为例,先总览整个开发流程:
构建模型在往期文档速递中有介绍,拖动到文末查阅。
这一期的内容我们侧重介绍开发应用的流程以及编译调试应用。后期我们还会展开介绍模型推理场景下的应用开发、以及应用的精度调优。
03 AscendCL接口调用流程
此处以开发应用为例,说明基于AscendCL的接口调用流程。
1.AscendCL初始化
初始化AscendCL内部资源,为运行应用做准备。
2.运行管理资源申请
申请运行时相关资源,例如计算设备。
3.媒体数据处理
如果模型对输入图片的宽高要求与用户提供的源图不一致,AscendCL提供了媒体数据处理的接口,可实现抠图、缩放、视频或图片的编解码等,将源图裁剪成符合模型的要求。
4.模型推理或执行算子
支持整网推理和单个算子的运算。模型推理、执行算子涉及的接口调用流程不同:
● 关于模型推理
需要实现模型推理的功能,则需要先加载模型,然后执行模型,模型推理结束后,则需要卸载模型。
模型推理结束后,如果需要获取并进一步处理推理结果数据,则由用户自行编码实现。例如,在图片分类推理场景下,则需要用户编码从推理结果中查找最大置信度的类别标识对图片分类。
● 关于执行算子
需要实现执行单个算子的功能,同样也需要加载模型,然后执行算子即可,无需卸载模型。此处虽然也是加载模型,但加载接口与模型推理时的加载接口不同,且此处的模型只支持使用ATC工具转换生成。
5.运行管理资源释放
资源使用完成后需及时释放。
6.AscendCL去初始化
与初始化配对使用。
04 编译运行应用
此处我们以一个“基于Caffe ResNet-50网络实现图片分类”的应用为例,来说明编译运行应用的基本步骤以及运行应用后如何查看图片所属分类。编译运行应用依赖CANN软件,因此您需要先根据对应版本的安装指南安装CANN软件。
接下来我们就可以通过下面这个小视频3分钟体验下编译运行。
视频链接:https://v.qq.com/x/page/w3271yntt45.html
体验完了,是不是意犹未尽,想自己操作一把呢,来吧!您可以从昇腾CANN样例仓(https://gitee.com/ascend/samples/)获取该样例以及详细的使用说明。
05文档获取
了解更详细的内容,登录昇腾社区,在开发者文档中心(https://www.hiascend.com/document?tag=community-developer)阅读相关文档:
点击关注,第一时间了解华为云新鲜技术~