开发者
资源

动态shape

ac_parallel_enable

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

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

参数取值:

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

配置示例:

{"ac_parallel_enable", "1"};

必选/可选:可选

生效级别:全局

ge.dynamicDims

设置ND格式下动态维度的档位,适用于执行推理时,每次处理任意维度的场景。该参数需要与ge.inputShape配合使用。详细使用示例请参见编译并运行Graph场景

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

参数值格式:所有档位必须放在双引号中,档位之间使用英文分号分隔,每档内参数使用英文逗号分隔;每档中的dim值与ge.inputShape参数中的-1标识的参数依次对应,inputShape参数中有几个-1,则每档必须设置几个维度。并且要求档位信息必须大于1组。

参数值约束:

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

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

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

    Atlas 训练系列产品

    Atlas 推理系列产品

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

使用示例:

  • 若模型只有一个输入:
    {"ge.inputShape", "data:1,-1,-1"},
    {"ge.dynamicDims", "1,2;3,4;5,6;7,8"}
    // graph运行时,支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8
  • 若网络模型有多个输入:

    每档中的dim值与模型输入参数中的-1标识的参数依次对应,模型输入参数中有几个-1,则每档必须设置几个维度。例如网络模型有三个输入,分别为data(1,1,40,T),label(1,T),mask(T,T) ,其中T为动态可变。则配置示例为:

    {"ge.inputShape", "data:1,1,40,-1;label:1,-1;mask:-1,-1" },
    {"ge.dynamicDims", "20,20,1,1;40,40,2,2;80,60,4,4"}
    // graph运行时,支持的输入dims组合档数分别为:
    //第0档:data(1,1,40,20)+label(1,20)+mask(1,1)
    //第1档:data(1,1,40,40)+label(1,40)+mask(2,2)
    //第2档:data(1,1,40,80)+label(1,60)+mask(4,4)

必选/可选:可选

生效级别:session/graph

ge.dynamicNodeType

用于指定动态输入的节点类型。

  • 0:dataset输入为动态输入。
  • 1:placeholder输入为动态输入。

当前不支持dataset和placeholder输入同时为动态输入。

配置示例:

{"ge.dynamicNodeType", "0"};

必选/可选:可选

生效级别:session/graph

ge.exec.hostSchedulingMaxThreshold

控制静态小图(根图)执行时是否走动态shape调度的最大阈值。默认阈值为0。建议大模型场景使用。

  • 如果静态根图节点的个数<最大阈值,则走动态shape调度。大模型场景,该方式可以节约Stream资源。
  • 如果静态根图节点的个数>最大阈值,则保持原有流程不变。

说明:如果静态根图节点包括子图,则该参数不生效。

必选/可选:可选

生效级别:全局/session/graph

ge.exec.static_model_ops_lower_limit

控制静态子图最小算子个数门限,取值范围为-1到正无穷,取其他值报错;默认值为4。

  • 取值>=0:
    • 算子数<门限,静态子图不单独拆图,合并到动态图走动态执行。
    • 算子数>=门限,保持原有流程不变(静态子图仍旧会拆图)。
  • 取值=-1:表示所有算子走动态图执行。

例如,假设静态子图中算子数为4,通过该参数配置的门限为10,则静态子图不会单独拆图,走动态图执行。

必选/可选:可选

生效级别:graph

ge.inputShape

指定模型输入数据的shape。在线推理或训练场景下,该参数仅在动态分档场景(动态维度)下为必选配置;在非动态分档场景下,单独配置此选项不生效。

动态分档场景,原始模型中输入数据的某个或某些维度值不固定,当前支持通过设置shape分档方式转换模型。

参数取值

  • 模型为非固定shape

    设置ge.inputShape参数时,将对应维度值设置为-1,需要同时配合ge.dynamicDims(设置动态维度档位)参数、ge.dynamicNodeType(指定动态输入的节点类型)参数一起使用。

  • 模型shape为标量+动态分档

    如果模型输入中既有标量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:

    设置指定维度档位的示例,请参见ge.dynamicDims。

  • shape为标量+动态分档

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

    {"ge.inputShape", "A:-1,32,208,208;B:;C:16,64,208,208"}, 
    {"ge.dynamicDims", "1;2;4"} 

必选/可选:可选

生效级别:session/graph