离线模型支持动态维度

场景介绍

为支持Transformer等网络在输入格式的维度不确定的场景,通过--dynamic_dims参数实现ND格式下任意维度的档位设置。

ND表示支持任意格式,当前N<=4。

转换方法

本章节以TensorFlow框架ResNet50网络模型为例进行演示,参见1获取原始模型文件。

  1. 以CANN软件包运行用户登录开发环境,并将支持设置动态维度的模型文件上传到开发环境任意路径,例如上传到$HOME/module/目录下。
  2. atc命令中加入--dynamic_dims等相关参数,执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)

    atc --model=$HOME/module/resnet50_tensorflow*.pb --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version>  --input_shape="Placeholder:-1,-1,-1,3" --dynamic_dims="1,224,224;8,448,448" --input_format=ND 
    关于参数的详细解释以及使用方法请参见参数说明。若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见故障处理进行定位。
    ATC run success

    成功执行命令后,在--output参数指定的路径下,可查看离线模型。

    模型转换完成后,在生成的om模型中,会新增一个输入,在模型推理时通过该新增的输入提供具体的维度值。例如,a输入的维度为动态的,在om模型中,会有与a对应的b输入来描述a的维度值。