下载
中文
注册

模型构建

模型推理场景下,必须要有适配昇腾AI处理器的离线模型(*.om文件),当前支持以下方式的构建模型:使用ATC(Ascend Tensor Compiler)工具、使用Ascend Graph接口。

如果模型推理涉及动态AIPP、动态Batch、动态分辨率、动态维度(ND格式),需确保om模型文件中已包含动态AIPP、动态Batch、动态分辨率、动态维度(ND格式)相关的配置。

如果想快速体验直接使用om文件进行推理,请准备好环境、om模型文件、符合模型输入要求的*.bin格式的输入数据,单击Link,获取msame工具,参考该工具配套的README,开始体验吧。

使用ATC工具转换模型

对于开源框架的网络模型(如Caffe、TensorFlow等),不能直接在昇腾AI处理器BS9SX1A AI处理器上做推理,需要先使用ATC(Ascend Tensor Compiler)工具将开源框架的网络模型转换为适配昇腾AI处理器的离线模型(*.om文件)。关于ATC工具的使用说明,请参见ATC工具使用指南

使用ATC工具进行模型转换时,支持以下关键特性:

  • 支持自定义的模型转换

    模型转换时支持指定网络的输入节点、输出节点的Datatype、Format、输入数据的Shape、模型转换支持精度选择等关键参数。

  • 支持动态Batch动态分辨率

    在某些推理场景,如检测出目标后再执行目标识别网络,由于目标个数不固定导致目标识别网络输入Batch数不固定。如果每次推理都按照最大的Batch或最大分辨率进行计算,会造成计算资源浪费。因此,推理需要支持动态BatchSize和动态分辨率的场景,使用ATC工具时,通过dynamic_batch_size设置支持的Batch档位,通过dynamic_image_size参数设置支持的分辨率档位。

  • 支持AIPP

    AIPP用于在AI Core上完成图像预处理,包括改变图像尺寸、色域转换(转换图像格式)、减均值/乘系数(改变图像像素),数据处理之后再进行真正的模型推理。该种方式比较灵活,在推理之前完成所有的数据处理,专门的加速模块实现并保证性能,不让图像预处理成为瓶颈。

    • 静态AIPP:模型转换时配置AIPP参数,模型生成后,AIPP参数值被保存在离线模型中,每次模型推理只能固定的AIPP参数。
    • 动态AIPP:模型转换时仅设置AIPP模式为动态,每次模型推理前,根据需求,在执行模型前调用AscendCL提供的接口设置动态AIPP参数值,每次模型推理时可使用不同的AIPP参数。动态AIPP模式的设置请参见ATC工具使用指南,动态AIPP参数的设置请参见模型推理扩展场景

    AscendCL还提供了基于DVPP(Digital Vision Pre-Processing)硬件进行媒体数据处理的功能,包括缩放、抠图、图片编解码、视频编解码等,功能比AIPP丰富,但对于输入/输出图片、内存有一定的约束,详细描述请参见媒体数据处理V1媒体数据处理V2

  • 支持动态维度(ND格式)

    为了支持Transformer等网络在输入格式的维度不确定的场景,需要支持ND格式下任意维度的动态设置。ND表示支持任意格式,当前N<=4。

  • 支持指定模型输入数据的Shape范围

    模型推理场景下,对于动态Shape的输入或输出数据,使用ATC工具转换模型时,通过input_shape_range参数设置输入Shape范围。

  • 支持生成单算子模型

    根据算子描述信息(*.json文件),编译生成适配昇腾AI处理器的离线模型(*.om文件),用于运行算子时使用。

使用Ascend Graph接口构建模型

用户可以通过开放的Ascend Graph接口构建离线模型,用于在昇腾AI处理器BS9SX1A AI处理器上进行离线推理,参见Ascend Graph开发指南。主要方式有两种:

  • 使用昇腾AI处理器BS9SX1A AI处理器支持的算子,基于算子原型,调用Ascend Graph接口直接构建Graph,并编译为离线模型。

    在定义Data算子、编译模型时,支持设置动态Batch、动态分辨率、AIPP、动态维度(ND格式),并分别配置支持的Batch档位、分辨率档位、AIPP参数值、动态维度档位。

  • 调用Ascend Graph接口将Caffe、Tensorflow等原始模型解析为Graph,并编译为离线模型。