文档
注册

AscendIE编程模型

AscendIE主要分为Build PhaseRuntime Phase两阶段工作。

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

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

Build Phase

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

模型生成步骤参考如下:

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

build阶段示意如图1所示。

图1 Build阶段示意图

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

  • 手动组网:使用AscendIE的Layer接口与Tensor接口逐层进行模型结构构建。
  • 解析框架模型:一种是使用AscendIE的OnnxParser接口直接解析ONNX模型自动构建。

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

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

Builder将Network编译成模型内存。

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

Build Phase具体内容请参见:

Runtime Phase

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

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词