开发者
资源

动态shape

INPUT_SHAPE

模型输入的shape信息。

参数取值

  • 模型为固定shape,INPUT_SHAPE参数为可选配置
    • 若模型为单个输入,则shape信息为"input_name:n,c,h,w"。
    • 若模型有多个输入,则shape信息为"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2";不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称。
  • 模型为非固定shape,INPUT_SHAPE参数必须配置
    若原始模型中输入数据的某个或某些维度值不固定,当前支持通过设置shape分档或设置shape范围两种方式转换模型。
    • 设置shape分档(静态shape),包括设置batch_size档位、设置分辨率档位、设置动态维度档位。

      设置INPUT_SHAPE参数时,将对应维度值设置为-1,同时配合使用DYNAMIC_BATCH_SIZE(设置batch_size档位)或DYNAMIC_IMAGE_SIZE(设置分辨率档位)或DYNAMIC_DIMS(设置动态维度档位)参数。详细用法请参考DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS参数说明。

    • 设置shape范围(动态shape)。

      Atlas 200I/500 A2 推理产品 不支持设置shape范围

      设置INPUT_SHAPE参数时,可将对应维度的值设置为范围,例如1~10,设置的range值范围必须有效

      • 支持按照name设置:"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2",例如:"input_name1:8~20,3,5,-1;input_name2:5,3~9,10,-1"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name,推荐按照name设置。
      • 支持按照index设置:"n1,c1,h1,w1;n2,c2,h2,w2",例如:"8~20,3,5,-1;5,3~9,10,-1"。可以不指定节点名,节点按照索引顺序排列,节点中间使用英文分号分隔。按照index设置shape范围时,data节点需要设置属性index,说明是第几个输入,index从0开始。

      如果用户不想指定维度的范围或具体取值,则可以将其设置为-1,表示此维度可以使用>=0的任意取值,该场景下取值上限为int64数据类型表达范围,但受限于host和device侧物理内存的大小,用户可以通过增大内存来支持。

  • 模型shape为标量
    • 非动态分档场景:

      shape为标量的输入,可选配置,例如模型有两个输入,input_name1为标量,即shape为"[]"形式,input_name2输入shape为[n2,c2,h2,w2],则shape信息为"input_name1:;input_name2:n2,c2,h2,w2",不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称;标量的输入如果配置,则配置为空。

    • 动态分档场景:

      如果模型输入中既有标量shape,又有支持动态分档的shape,则标量输入不能忽略,必须配置。例如模型有三个输入,分别为A:[-1,c1,h1,w1]、B:[]、C:[n2,c2,h2,w2],则shape信息为"A:-1,c1,h1,w1;B:;C:n2,c2,h2,w2",标量输入B必须配置。

配置示例:

  • 固定shape,例如某网络的输入shape信息,输入1input_0_0 [16,32,208,208],输入2:input_1_0 [16,64,208,208],则INPUT_SHAPE的配置信息为:
    {ge::ir_option::INPUT_SHAPE, "input_0_0:16,32,208,208;input_1_0:16,64,208,208"}
  • 非固定shape,静态shape:
    • 设置batch_size档位的示例,请参见DYNAMIC_BATCH_SIZE。
    • 设置分辨率档位的示例,请参见DYNAMIC_IMAGE_SIZE。
    • 设置指定维度档位的示例,请参见DYNAMIC_DIMS。
  • 非固定shape,动态shape,设置shape范围的示例:
    {ge::ir_option::INPUT_SHAPE, "input_0_0:1~10,32,208,208;input_1_0:16,64,100~208,100~208"}

    详细使用示例以及使用注意事项请参见更多特性>动态输入shape范围

  • shape为标量
    • 非动态分档场景

      shape为标量的输入,可选配置。例如模型有两个输入,input_name1为标量,input_name2输入shape为[16,32,208,208],配置示例为:

      {ge::ir_option::INPUT_SHAPE, "input_name1:;input_name2:16,32,208,208"}

      上述示例中的input_name1为可选配置

    • 动态分档场景

      shape为标量的输入,必须配置。例如模型有三个输入,shape信息分别为A:[-1,32,208,208]、B:[]、C:[16,64,208,208],则配置示例为(A为动态分档输入,此处以设置batch_size档位为例):

      {ge::ir_option::INPUT_SHAPE, "A:-1,32,208,208;B:;C:16,64,208,208"}, 
      {ge::ir_option::DYNAMIC_BATCH_SIZE, "1,2,4"} 

如果模型转换时通过该参数设置了shape的范围,使用应用工程进行模型推理时,需要在模型执行接口之前,调用aclmdlSetDatasetTensorDesc接口,用于设置真实的输入Tensor描述信息(输入shape范围);模型执行之后,调用aclmdlGetDatasetTensorDesc接口获取模型动态输出的Tensor描述信息;再进一步调用aclTensorDesc下的操作接口获取输出Tensor数据占用的内存大小、Tensor的Format信息、Tensor的维度信息等。

关于aclmdlSetDatasetTensorDescaclmdlGetDatasetTensorDesc等接口的具体使用方法,请参见GE图引擎 API

产品支持情况:

全量芯片支持。

DYNAMIC_BATCH_SIZE

设置动态batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS同时使用;且只支持N在shape首位的场景,即shape的第一位设置为"-1"。如果N在非首位场景下,请使用DYNAMIC_DIMS参数进行设置。

参数取值:档位数,例如"1,2,4,8"。

参数值格式:指定的参数必须放在双引号中,档位之间使用英文逗号分隔。

参数值约束:

  • 针对如下产品,档位数约束为:档位数取值范围为(1,100],即必须设置至少2个档位,最多支持100档配置;每个档位数值建议限制为:[1~2048]。

    Atlas A3 训练系列产品 / Atlas A3 推理系列产品

    Atlas A2 训练系列产品 / Atlas A2 推理系列产品

    Atlas 200I/500 A2 推理产品

    Atlas 推理系列产品

    Atlas 训练系列产品

  • 针对Ascend 950PR/Ascend 950DT,档位数约束为:档位数取值范围为(1, 256],即必须设置至少2个档位,最多支持256档配置;每个档位数值建议限制为:[1~2048]。

配置示例:

INPUT_SHAPE中的“-1”表示设置动态batch。

{ge::ir_option::INPUT_FORMAT, "NHWC"},
{ge::ir_option::INPUT_SHAPE, "data:-1,3,416,416"}, 
{ge::ir_option::DYNAMIC_BATCH_SIZE, "1,2,4,8"}     

详细使用示例以及使用注意事项请参见更多特性 > 动态BatchSize

产品支持情况:

全量芯片支持。

DYNAMIC_IMAGE_SIZE

设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_DIMS同时使用。

参数取值: "imagesize1_height,imagesize1_width;imagesize2_height,imagesize2_width"。

参数值格式:指定的参数必须放在双引号中,档位之间英文分号分隔,每档内参数使用英文逗号分隔。

参数值约束:

  • 针对如下产品,档位数约束为:档位数取值范围为(1,100],即必须设置至少2个档位,最多支持100档配置。

    Atlas A3 训练系列产品 / Atlas A3 推理系列产品

    Atlas A2 训练系列产品 / Atlas A2 推理系列产品

    Atlas 200I/500 A2 推理产品

    Atlas 推理系列产品

    Atlas 训练系列产品

  • 针对Ascend 950PR/Ascend 950DT,档位数约束为:档位数取值范围为(1, 256],即必须设置至少2个档位,最多支持256档配置。

配置示例:

INPUT_SHAPE中的“-1”表示设置动态分辨率。

{ge::ir_option::INPUT_FORMAT, "NCHW"}, 
{ge::ir_option::INPUT_SHAPE, "data:8,3,-1,-1"}, 
{ge::ir_option::DYNAMIC_IMAGE_SIZE, "416,416;832,832"}

详细使用示例以及使用注意事项请参见更多特性 > 动态分辨率

产品支持情况:

全量芯片支持。

DYNAMIC_DIMS

设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。

该参数需要与INPUT_SHAPE配合使用,不能与DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE同时使用。

参数取值:通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置。

参数值格式:所有档位必须放在双引号中,档位之间使用英文分号分隔,每档内参数使用英文逗号分隔;每档中的dim值与INPUT_SHAPE参数中的-1标识的参数依次对应,INPUT_SHAPE参数中有几个-1,则每档必须设置几个维度。

参数值约束:

  • 针对如下产品,档位数约束为:档位数取值范围为(1,100],即必须设置至少2个档位,最多支持100档配置,建议配置为3~4档。

    Atlas A3 训练系列产品 / Atlas A3 推理系列产品

    Atlas A2 训练系列产品 / Atlas A2 推理系列产品

    Atlas 200I/500 A2 推理产品

    Atlas 推理系列产品

    Atlas 训练系列产品

  • 针对Ascend 950PR/Ascend 950DT,档位数约束为:档位数取值范围为(1, 256],即必须设置至少2个档位,最多支持256档配置,建议配置为3~4档。

配置示例:

{ge::ir_option::INPUT_FORMAT, "ND"},
{ge::ir_option::INPUT_SHAPE, "data:1,-1"}, 
{ge::ir_option::DYNAMIC_DIMS, "4;8;16;64"}  
// 模型编译时,支持的data算子的shape为1,4; 1,8; 1,16;1,64
{ge::ir_option::INPUT_FORMAT, "ND"},
{ge::ir_option::INPUT_SHAPE, "data:1,-1,-1"}, 
{ge::ir_option::DYNAMIC_DIMS, "1,2;3,4;5,6;7,8"}  
// 模型编译时,支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8

详细使用示例以及使用注意事项请参见更多特性 > 动态维度

产品支持情况:

全量芯片支持。

AC_PARALLEL_ENABLE

动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。

动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。

参数取值:

  • 1:允许AI CPU和AI Core算子间的并行运行。
  • 0(默认):AI CPU算子不会单独分流。

配置示例:

{ge::ir_option::AC_PARALLEL_ENABLE, "1"}

产品支持情况:

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品 :支持
  • Atlas A2 训练系列产品 / Atlas A2 推理系列产品 :支持
  • Atlas 200I/500 A2 推理产品 :不支持
  • Atlas 推理系列产品 :支持
  • Atlas 训练系列产品 :支持