昇腾社区首页
EN
注册

接口调用流程

本节介绍应用开发接口调用流程。

接口调用流程

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

图1 接口调用流程图

上图根据应用开发中的典型功能抽象出主要的接口调用流程,例如,如果模型对输入图片的宽高要求与用户提供的源图不一致,则需要媒体数据处理,将源图裁剪成符合模型的要求;如果需要实现模型推理的功能,则需要先加载模型,模型推理结束后,则需要卸载模型;如果模型推理后,需要从推理结果中查找最大置信度的类别标识对图片分类,则需要数据后处理。

  1. 初始化。

    调用aclInit接口实现初始化。

  2. 运行时资源申请。

    具体流程,请参见运行时资源申请与释放

  3. 应用业务处理。
    • 模型推理
      1. 模型加载:模型推理前,需要先将对应的模型加载到系统中。

        接口调用流程,请参见模型加载

        但加载模型前,必须要有适配昇腾AI处理器的离线模型,需提前构建模型,请参见模型构建

      2. (可选)媒体数据处理:可实现JPEG图片解码、视频解码、抠图/图片缩放/格式转换、JPEG图片编码等功能。

        接口调用流程,请参见媒体数据处理(含图像/视频等)

      3. 模型执行:使用模型实现图片分类、目标识别等功能。

        接口调用流程,请参见模型执行

      4. (可选)数据后处理:处理模型推理的结果,此处根据用户的实际需求来处理推理结果,例如用户可以将获取到的推理结果写入文件、从推理结果中找到每张图片最大置信度的类别标识等。
      5. 模型卸载:调用aclmdlUnload接口卸载模型。
    • 单算子调用

      如果AI应用中不仅包括模型推理,还有数学运算(例如BLAS基础线性代数运算)、数据类型转换等功能,也想使用昇腾AI处理器的算力,直接通过acl接口加载并执行单个算子,省去模型构建、训练的过程,相对轻量级,又可以使用昇腾AI处理器的算力。另外,自定义的算子,也可以通过单算子调用的方式来验证算子的功能。

      算子调用的接口调用流程,请参见单算子调用流程

  4. 运行时资源释放。

    所有数据处理都结束后,需要依次释放运行时资源,接口调用流程,请参见运行时资源申请与释放

  5. 去初始化。

    调用aclFinalize接口实现去初始化。

在应用开发过程中,各环节都涉及内存的申请与释放、数据传输(通过内存复制实现)、数据类型的创建与销毁,因此未在图中一一标识,关于内存申请与释放、内存复制的接口请参见内存管理,数据类型的创建与销毁的接口请参见数据类型及其操作接口