动态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:
- 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