CANN/GE动态shape配置参数
2026/9/10 16:00:24 网站建设 项目流程

动态shape

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

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组。

参数值约束:

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

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

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

    Atlas 训练系列产品

    Atlas 推理系列产品

使用示例:

  • 若模型只有一个输入:

    {"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

动态shape拆分中,设置静态子图最小算子数量阈值。

参数取值

取值范围为-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

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询