编程模型

推理应用接口主要分为Build PhaseRuntime Phase两阶段工作。

第一阶段:用户需要在MindIE-RT中构建网络,可以通过手动组网或使用各框架的解析器自动构建,MindIE-RT将会在内部针对昇腾AI处理器进行模型优化。

第二阶段:部署优化后的模型并执行推理。

Build Phase

MindIE-RT使用Builder接口进行模型编译,最终输出编译优化后的模型,通过该模型可构建Engine进行推理。

模型生成步骤参考如下:

  1. 通过Builder::CreateInferBuilder创建模型编译器,创建模型编译器时需要配置设备类型(可以执行npu-smi info查看当前设备类型)。
  2. 通过Builder::CreateNetwork创建用户模型并构建模型结构。
  3. 创建BuilderConfig类,如果需要配置编译选项,使用类成员方法完成编译选项配置。
  4. 运行Builder::BuildModel接口,编译Network,生成可运行模型。

build阶段示意如图1所示。

图1 Build阶段示意图

Network为模型结构定义接口。Network有两种生成方式。

BuilderConfig为编译配置选项接口。通过该接口,可以进行模型编译过程中的优化类型,模型动态类型,以及模型精度类型选择等配置。

在构建好Network与BuilderConfig之后,调用Builder进行模型编译。模型编译过程中会对模型进行常量折叠、CSE、LayoutTransformer等优化并配置模型计算精度为速度更快的float16或精度更高的float32或进行int8量化压缩。

Builder将Network编译成模型内存。

  • 在一个进程中,目前只能创建一个Builder进行模型编译,支持多个Builder编译的功能正在开发当中。
  • Network定义时不会进行内存的深拷贝,因此在模型编译执行结束前,请不要提前释放该部分内存。

Build Phase具体内容请参见:

Runtime Phase

用户在获得了modelData或序列化成om模型后,可以参考CANN AscendCL应用软件开发指南 (C&C++)CANN AscendCL应用软件开发指南 (Python),调用AscendCL推理接口进行部署推理。