应用开发环境准备
pyACL接口调用流程
调用pyACL接口,可开发包含模型推理、媒体数据处理、单算子调用等功能的应用,这些功能可以独立存在,也可以组合存在。下图给出了使用pyACL接口开发AI应用的整体接口调用流程。
图1 接口调用流程图

上图根据应用开发中的典型功能抽象出主要的接口调用流程,具体场景参考如下。
- 如果模型对输入图片的宽高要求与用户提供的源图不一致,则需要媒体数据处理,将源图裁剪成符合模型的要求。
- 如果需要实现模型推理的功能,则需要先加载模型,模型推理结束后,则需要卸载模型。
- 如果模型推理后,需要从推理结果中查找最大置信度的类别标识对图片分类,则需要数据后处理。
接口调用流程各步骤操作参见如下。
-
pyACL初始化。
调用acl.init接口实现初始化pyACL。
-
运行管理资源申请。
依次申请运行管理资源:Device、Context、Stream。
具体流程,请参见运行管理资源申请流程。
-
模型推理/单算子调用/媒体数据处理。
-
模型推理。
-
生成模型om文件:模型推理场景下,必须要有适配昇腾AI处理器的离线模型,需提前构建模型,请参见模型构建。
-
模型加载:模型推理前,需要先将对应的模型加载到系统中。
接口调用流程,请参见模型加载。
-
(可选)媒体数据处理:可实现JPEG图片解码、视频解码、抠图/图片缩放/格式转换、JPEG图片编码等功能。
接口调用流程,请参见媒体数据处理。
-
模型执行:使用模型实现图片分类、目标识别等功能。
接口调用流程,请参见模型执行。
-
(可选)数据后处理:处理模型推理的结果,此处根据用户的实际需求来处理推理结果,例如用户可以将获取到的推理结果写入文件、从推理结果中找到每张图片最大置信度的类别标识等。
-
模型卸载:调用acl.mdl.unload接口卸载模型。
-
-
算子调用。
如果AI应用中不仅仅包括模型推理,还有数学运算(例如BLAS基础线性代数运算)、数据类型转换等功能,也想使用昇腾的算力,直接通过pyACL接口加载并执行单个算子,省去模型构建、训练的过程,相对轻量级,又可以使用昇腾的算力。另外,自定义的算子,也可以通过单算子调用的方式来验证算子的功能。接口调用流程,请参见接口调用流程。
-
-
运行管理资源释放。
所有数据处理都结束后,需要依次释放运行管理资源:Stream、Context、Device。
具体流程,请参见运行管理资源释放流程。
-
pyACL去初始化。
调用acl.finalize接口实现pyACL去初始化。
:::note 说明
- 在应用开发过程中,各环节都涉及内存的申请与释放、数据传输(通过内存复制实现)、数据类型的创建与销毁,因此未在图中一一标识,关于内存申请与释放、内存复制的接口请参见内存管理。数据类型的创建与销毁的接口请参见数据类型及其操作接口。
- 关于日志的处理机制和日志级别设置等功能,请参见《日志参考》。
- pyACL部分功能可能会涉及到ATC工具来进行模型转换,请参见《ATC工具使用指南》。
- 生成pyACL中的“acl.so”依赖的Python版本范围为3.7.5~3.9.2。 :::
父主题: 概述
应用开发环境准备
部署开发环境和运行环境,请参见对应Atlas产品的描述。
-
部署开发环境后,才能获取调用接口所需的头文件、编译运行接口所需的库文件。
对于昇腾设备,已安装驱动、固件场景下,该环境可直接作为运行环境,执行编译生成的应用可执行文件。
-
部署运行环境后,才能在运行环境上执行编译生成的应用可执行文件。
:::note 说明
-
pyACL库文件路径:CANN软件安装后文件存储路径/lib64
需要根据运行环境的安装包,确定引用的组件目录,否则会导致运行报错。安装方案请参见。
安装CANN软件后,需要以CANN运行用户登录环境,执行source ${install_path}/set_env.sh命令设置环境变量,其中${install_path}为CANN软件的安装目录。
-
本文中的操作步骤需以运行用户登录开发环境或运行环境后再执行,请务必获取各组件的运行用户,以便后续操作时使用。 :::
-
-
(可选)通过环境变量“ASCEND_CACHE_PATH”、“ASCEND_WORK_PATH”设置pyACL应用运行过程中产生的文件的落盘路径,涉及ATC模型转换、AOE模型智能调优、性能数据采集、日志采集等功能,落盘文件包括知识库文件、调优结果文件、性能数据文件、日志文件等。
配置示例如下,详细配置说明请参见《环境变量参考》:
export ASCEND_CACHE_PATH=/repo/task001/cacheexport ASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03
pyACL的依赖
pyACL没有安装依赖,但是有运行依赖。详情请参见《CANN 软件安装指南》完成对开发环境和运行环境的部署。
安装后的环境变量设置
在安装完CANN软件包之后,请务必自行配置以下环境变量,否则,将无法正常使用“import acl”。
-
若环境中安装了cann-toolkit软件包:
# 以root用户安装toolkit包。. /usr/local/Ascend/ascend-toolkit/set_env.sh# 以非root用户安装toolkit包。. ${HOME}/Ascend/ascend-toolkit/set_env.sh -
若环境中安装了cann-nnrt软件包:
# 以root用户安装nnrt包。. /usr/local/Ascend/nnrt/set_env.sh# 以非root用户安装nnrt包。. ${HOME}/Ascend/nnrt/set_env.sh
设置完环境变量后,在Python脚本中加入“import acl”,就可以使用pyACL中的函数了。
其它
- 关于日志的处理机制和日志级别设置等功能,请参见《日志参考》。
- pyACL部分功能可能会涉及到ATC工具来进行模型转换,请参见《ATC工具使用指南》。
- 生成pyACL中的“acl.so”依赖的Python版本范围为3.7.5~3.9.2。
父主题: 概述
开发流程
图1 开发流程

-
准备环境,包括开发环境和运行环境。
-
创建代码目录。
在开发应用前,您需要先创建目录,存放代码文件、编译脚本、测试图片数据、模型文件等。如下仅是示例,可参考:
├App名称├── caffe_model # 该目录下存放模型转换相关的配置文件、模型文件。│ ├── xxx.cfg│ ├── xxx.prototxt├── data│ ├── xxx.jpg # 测试数据。│├── model│ ├── xxx.om # 转换后的模型文件。│├── xxx.py # python脚本。├── xxx.py -
开发应用。
-
pyACL初始化,请参见pyACL初始化与去初始化。
使用pyACL接口开发应用时,必须先调用acl.init接口进行pyACL初始化,否则可能会导致后续系统内部资源初始化出错,进而导致其它业务异常。
-
运行管理资源申请,请参见运行管理资源申请与释放。
-
数据传输,请参见数据传输。
-
执行模型推理。请参见模型推理基本场景。
模型推理结束后,需及时释放相关资源。
若需要处理模型推理的结果,还需要进行数据后处理,例如对于图片分类应用,通过数据后处理从推理结果中查找最大置信度的类别标识。
-
所有数据处理结束后,需及时释放运行管理资源,请参见运行管理资源申请与释放。
-
执行pyACL去初始化,请参见pyACL初始化与去初始化。
-
-
运行应用,包括模型转换、运行应用,请参见应用调试。
父主题: 开发基础推理应用
模型构建
对于开源框架的网络模型(如Caffe、TensorFlow等),不能直接在昇腾AI处理器上运行推理,需要先使用ATC(Ascend Tensor Compiler)工具将开源框架的网络模型转换为适配昇腾AI处理器的离线模型(*.om文件),模型转换的方法请参见《[转换模型](https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/tmuacop/tmuacop_0001.html)》。
父主题: 开发基础推理应用
在线提单