模型推理场景下,必须要有适配昇腾AI处理器的离线模型(*.om文件),当前支持以下方式的构建模型:使用ATC(Ascend Tensor Compiler)工具、使用Ascend Graph接口。
如果模型推理涉及动态AIPP、动态Batch、动态分辨率、动态维度(ND格式),需确保om模型文件中已包含动态AIPP、动态Batch、动态分辨率、动态维度(ND格式)相关的配置。
对于开源框架的网络模型(如Caffe、TensorFlow等),不能直接在昇腾AI处理器上做推理,需要先使用ATC(Ascend Tensor Compiler)工具将开源框架的网络模型转换为适配昇腾AI处理器的离线模型(*.om文件)。关于ATC工具的使用说明,请参见《ATC工具使用指南》。
使用ATC工具进行模型转换时,支持以下关键特性:
模型转换时支持指定网络的输入节点、输出节点的Datatype、Format、输入数据的Shape、模型转换支持精度选择等关键参数。
在某些推理场景,如检测出人脸后再执行目标识别网络,由于人脸个数不固定导致目标识别网络输入Batch数不固定。如果每次推理都按照最大的Batch或最大分辨率进行计算,会造成计算资源浪费。因此,推理需要支持动态BatchSize和动态分辨率的场景,使用ATC工具时,通过dynamic_batch_size设置支持的Batch档位,通过dynamic_image_size参数设置支持的分辨率档位。
AIPP用于在AI Core上完成图像预处理,包括改变图像尺寸、色域转换(转换图像格式)、减均值/乘系数(改变图像像素),数据处理之后再进行真正的模型推理。该种方式比较灵活,在推理之前完成所有的数据处理,专门的加速模块实现并保证性能,不让图像预处理成为瓶颈。
为了支持Transformer等网络在输入格式的维度不确定的场景,需要支持ND格式下任意维度的动态设置。ND表示支持任意格式,当前N<=4。
模型推理场景下,对于动态Shape的输入或输出数据,使用ATC工具转换模型时,通过input_shape_range参数设置输入Shape范围。
用户可以通过开放的Ascend Graph接口构建离线模型,用于在昇腾AI处理器上进行离线推理,参见《Ascend Graph开发指南》。主要方式有两种:
在定义Data算子、编译模型时,支持设置动态Batch、动态分辨率、AIPP、动态维度(ND格式),并分别配置支持的Batch档位、分辨率档位、AIPP参数值、动态维度档位。