调用pyACL接口,可开发包含模型推理、媒体数据处理、单算子调用等功能的应用,这些功能可以独立存在,也可以组合存在。下图给出了使用pyACL接口开发AI应用的整体接口调用流程。
上图根据应用开发中的典型功能抽象出主要的接口调用流程,具体场景参考如下。
接口调用流程各步骤操作参见如下。
调用acl.init接口实现初始化pyACL。
依次申请运行管理资源:Device、Context、Stream。
具体流程,请参见运行管理资源申请流程。
接口调用流程,请参见模型加载。
接口调用流程,请参见媒体数据处理。
接口调用流程,请参见模型执行。
如果AI应用中不仅仅包括模型推理,还有数学运算(例如BLAS基础线性代数运算)、数据类型转换等功能,也想使用昇腾的算力,直接通过pyACL接口加载并执行单个算子,省去模型构建、训练的过程,相对轻量级,又可以使用昇腾的算力。另外,自定义的算子,也可以通过单算子调用的方式来验证算子的功能。接口调用流程,请参见接口调用流程。
所有数据处理都结束后,需要依次释放运行管理资源:Stream、Context、Device。
具体流程,请参见运行管理资源释放流程。
调用acl.finalize接口实现pyACL去初始化。
在应用开发过程中,各环节都涉及内存的申请与释放、数据传输(通过内存复制实现)、数据类型的创建与销毁,因此未在图中一一标识,关于内存申请与释放、内存复制的接口请参见内存管理。数据类型的创建与销毁的接口请参见数据类型及其操作接口。