options参数说明
本章节列出GEInitialize、Session构造函数、AddGraph接口传入的配置参数,分别在全局、session、graph生效。
表1中仅列出当前版本支持的配置参数,如果表中未列出,表示该参数预留或适用于其他版本的昇腾AI处理器,用户无需关注。
Options key |
Options value |
必选/可选 |
全局/session/graph级别生效 |
---|---|---|---|
ge.graphRunMode |
图执行模式,取值:
|
必选 |
全局/session |
ge.exec.deviceId |
GE实例运行时操作的设备的逻辑ID,限制有限范围为0~N-1,N表示该台Server上的可用昇腾AI处理器个数; |
必选 |
all |
ge.inputShape |
指定模型输入数据的shape。 例如:"input_name:n,c,h,w"。指定的节点必须放在双引号中;若模型有多个输入,则不同输入之间使用英文分号分隔,例如,"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2"。input_name必须是转换前的网络模型中的节点名称。
说明:
上述场景下,ge.inputShape为可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。 |
可选 |
session/graph |
ge.dynamicDims |
设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。该参数需要与ge.inputShape配合使用。 参数通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置,所有档位必须放在双引号中,每档中间使用英文分号分隔,每档中的dim值与ge.inputShape参数中的-1标识的参数依次对应,inputShape参数中有几个-1,则每档必须设置几个维度。 支持的档位数取值范围为:(1,100],每档最多支持任意指定4个维度,建议配置为3~4档。 使用示例:
|
可选 |
session/graph |
ge.dynamicNodeType |
用于指定动态输入的节点类型。
当前不支持dataset和placeholder输入同时为动态输入。 |
可选 |
session/graph |
ge.exec.precision_mode |
算子精度模式,配置要求为string类型。不能与ge.exec.precision_mode_v2同时使用,建议使用ge.exec.precision_mode_v2参数。
参数默认值: 训练场景下,针对Atlas 训练系列产品,参数默认值为“allow_fp32_to_fp16”。 训练场景下,针对Atlas A2训练系列产品,参数默认值为“must_keep_origin_dtype”。 在线推理场景下,参数默认值为“force_fp16”。 |
可选 |
all |
ge.exec.precision_mode_v2 |
算子精度模式,配置要求为string类型。不能与ge.exec.precision_mode同时使用,建议使用ge.exec.precision_mode_v2参数。
参数默认值: 训练场景下,针对Atlas 训练系列产品,该配置项无默认取值,以“precision_mode”参数的默认值为准,即allow_fp32_to_fp16”。 训练场景下,针对Atlas A2训练系列产品,参数默认值为“origin”。 在线推理场景下,参数默认值为“fp16”。 |
可选 |
all |
ge.exec.modify_mixlist |
配置混合精度黑白灰名单,配置为路径以及文件名,文件为json格式。 allow_mix_precision混合精度模式下,针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。用户可以在内置优化策略基础上进行调整,自行指定哪些算子允许降精度,哪些算子不允许降精度。
配置示例:
{"ge.exec.modify_mixlist", "/home/test/ops_info.json"}; ops_info.json中可以指定算子类型,多个算子使用英文逗号分隔,样例如下: { "black-list": { // 黑名单 "to-remove": [ // 黑名单算子转换为灰名单算子 "Xlog1py" ], "to-add": [ // 白名单或灰名单算子转换为黑名单算子 "Matmul", "Cast" ] }, "white-list": { // 白名单 "to-remove": [ // 白名单算子转换为灰名单算子 "Conv2D" ], "to-add": [ // 黑名单或灰名单算子转换为白名单算子 "Bias" ] } } 上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置。混合精度场景下算子的内置优化策略可在“OPP安装目录/opp/built-in/op_impl/ai_core/tbe/config/soc_version/aic-soc_version-ops-info.json”文件中查询,例如: "Conv2D":{ "precision_reduce":{ "flag":"true" },
|
可选 |
all |
ge.socVersion |
指定编译优化模型的昇腾AI处理器版本号。 如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy。 |
可选 |
all |
ge.exec.profilingMode |
是否开启Profiling功能。
|
可选 |
all |
ge.exec.profilingOptions |
Profiling配置选项。
配置示例: std::map<ge::AscendString, ge::AscendString> ge_options = {{"ge.exec.deviceId", "0"}, {"ge.graphRunMode", "1"}, {"ge.exec.profilingMode", "1"}, {"ge.exec.profilingOptions", R"({"output":"/tmp/profiling","training_trace":"on","fp_point":"resnet_model/conv2d/Conv2Dresnet_model/batch_normalization/FusedBatchNormV3_Reduce","bp_point":"gradients/AddN_70"})"}}; |
可选 |
all |
ge.exec.enableDump |
是否开启dump功能,默认关闭。
|
可选 |
全局/session |
ge.exec.dumpPath |
Dump文件保存路径。开启dump和溢出检测功能时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
|
可选 |
全局/session |
ge.exec.dumpStep |
指定采集哪些迭代的dump数据。默认值:None,表示所有迭代都会产生dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。 |
可选 |
全局/session |
ge.exec.dumpMode |
dump模式,用于指定dump算子输入还是输出数据。取值如下:
|
可选 |
全局/session |
ge.exec.dumpData |
指定算子dump内容类型,取值:
|
可选 |
全局 |
ge.exec.dumpLayer |
指定需要dump的算子。 取值为算子名,多个算子名之间使用空格分隔,例如:“layer1 layer2 layer3” |
可选 |
全局/session |
ge.exec.enableDumpDebug |
是否开启溢出检测功能,默认关闭。
|
可选 |
全局/session |
ge.exec.dumpDebugMode |
溢出检测模式,取值如下:
|
可选 |
全局/session |
ge.exec.disableReuseMemory |
内存复用开关; 默认为0。
|
可选 |
all |
ge.graphMemoryMaxSize |
该参数后续版本废弃,请勿使用。 网络静态内存和最大动态内存,可根据网络大小指定。单位:Byte,取值范围:[0, 256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为26GB。 |
可选 |
all |
ge.variableMemoryMaxSize |
该参数后续版本废弃,请勿使用。 变量内存,可根据网络大小指定。单位:Byte,取值范围:[0,256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为5GB。 |
可选 |
all |
ge.exec.variable_acc |
是否开启变量格式优化。
为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式。但在用户特殊要求场景下,可以选择关闭该功能开关。 |
可选 |
all |
ge.exec.rankTableFile |
用于描述参与集合通信的集群信息,包括Server,Device,容器等的组织信息,填写ranktable文件路径,包含文件路径和文件名; |
可选 |
all |
ge.exec.rankId |
rank id,指进程在group中对应的rank标识序号。范围:0~(rank size-1)。对于用户自定义group,rank在本group内从0开始进行重排;对于hccl world group,rank id和world rank id相同。
|
可选 |
all |
ge.opDebugLevel |
算子debug功能开关,取值:
须知:
|
可选 |
all |
op_debug_config |
Global Memory内存检测功能开关。 取值为.cfg配置文件路径,配置文件内多个选项用英文逗号分隔:
配置示例:/root/test0.cfg,其中,test0.cfg文件信息为: op_debug_config = ccec_O0,ccec_g,oom
说明:
开启ccec编译选项的场景下(即ccec_O0、ccec_g选项),会增大算子Kernel(*.o文件)的大小。动态shape场景下,由于算子编译时会遍历可能存在的所有场景,最终可能会导致由于算子Kernel文件过大而无法进行编译的情况,此种场景下,建议不要开启ccec编译选项。 由于算子kernel文件过大而无法编译的日志显示如下: message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx) |
可选 |
全局 |
ge.op_compiler_cache_mode |
用于配置算子编译磁盘缓存模式。默认值为enable。
使用说明:
|
可选 |
all |
ge.op_compiler_cache_dir |
用于配置算子编译磁盘缓存的目录。 参数值格式:路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。 默认值:$HOME/atc_data
|
可选 |
all |
ge.debugDir |
用于配置保存算子编译生成的调试相关的过程文件的路径,包括算子.o/.json/.cce等文件。 使用约束:
|
可选 |
all |
ge.mdl_bank_path |
加载模型调优后自定义知识库的路径。 该参数需要与BUFFER_OPTIMIZE参数配合使用,仅在数据缓存优化开关打开的情况下生效,通过利用高速缓存暂存数据的方式,达到提升性能的目的。 参数值:模型调优后自定义知识库路径。 参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:$HOME/Ascend/latest/data/aoe/custom/graph/<soc_version> 使用约束: 加载子图调优后自定义知识库路径优先级:ge.mdl_bank_path参数加载路径>TUNE_BANK_PATH环境变量设置路径>默认子图调优后自定义知识库路径。
|
可选 |
all |
ge.op_bank_path |
算子调优后自定义知识库路径。 参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:${HOME}/Ascend/latest/data/aoe/custom/op 使用约束: 加载算子调优后自定义知识库路径优先级:TUNE_BANK_PATH环境变量设置路径>OP_BANK_PATH参数加载路径>默认算子调优后自定义知识库路径。
|
可选 |
all |
ge.exec.dynamicGraphExecuteMode |
该参数已本废弃,请勿使用。 对于动态输入场景,需要通过该参数设置执行模式,取值为:dynamic_execute。 |
可选 |
graph |
ge.exec.dataInputsShapeRange |
该参数已废弃,请勿使用。 动态输入的shape范围。例如全图有2个data输入,配置示例为: std::map<ge::AscendString, ge::AscendString> ge_options = {{"ge.exec.deviceId", "0"}, {"ge.graphRunMode", "1"}, {"ge.exec.dynamicGraphExecuteMode", "dynamic_execute"}, {"ge.exec.dataInputsShapeRange", "[128 ,3~5, 2~128, -1],[ 128 ,3~5, 2~128, -1]"}};
说明:
若没有指定节点名,则节点默认按照index顺序存储,存储示例如下: xxx_0,xxx_1,xxx_2,…… 其中下划线后为节点在网络脚本中的定义顺序索引,节点会按照此索引的字母顺序进行排布,所以当节点的个数大于10时,则排序为“xxx_0 -> xxx_10 -> xxx_2 -> xxx_3”,网络脚本中定义索引为10的节点排在了索引为2的节点前面,导致定义的shape range与实际输入的节点不匹配。 为避免此问题,当节点的输入个数大于10时,建议在网络脚本中指定节点的名称,则节点会以指定的名称进行命名,实现shape range与节点名称的关联。 |
可选 |
graph |
ge.exec.op_precision_mode |
设置指定算子内部处理时的精度模式,支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。 ini文件中按照算子类型、节点名称设置精度模式,每一行设置一个算子类型或节点名称的精度模式,按节点名称设置精度模式的优先级高于按算子类型。 配置文件中支持设置如下精度模式:
具体某个算子支持配置的精度/性能模式取值,可以通过CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini文件查看。 样例如下: [ByOpType] optype1=high_precision optype2=high_performance optype3=support_out_of_bound_index [ByNodeName] nodename1=high_precision nodename2=high_performance nodename3=support_out_of_bound_index |
可选 |
全局 |
ge.opSelectImplmode |
昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括:
|
可选 |
全局 |
ge.optypelistForImplmode |
列举算子optype的列表,该列表中的算子使用ge.opSelectImplmode参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign。 该参数需要与ge.opSelectImplmode参数配合使用,例如: ge.opSelectImplmode配置为high_precision ge.optypelistForImplmode配置为Pooling。 |
可选 |
全局 |
ge.shape_generalized_build_mode |
该参数在后续版本废弃、请勿使用。 |
可选 |
graph |
ge.customizeDtypes |
通过该参数自定义模型编译时算子的计算精度,模型中其他算子以PRECISION_MODE指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。 配置文件中列举需要自定义计算精度的算子名称或算子类型,每个算子单独一行,且算子类型必须为基于IR定义的算子的类型。对于同一个算子,如果同时配置了算子名称和算子类型,编译时以算子名称为准。 配置文件格式要求: # 按照算子名称配置 Opname1::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… Opname2::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… # 按照算子类型配置 OpType::TypeName1:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… OpType::TypeName2:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… 配置文件配置示例: # 按照算子名称配置 resnet_v1_50/block1/unit_3/bottleneck_v1/Relu::InputDtype:float16,int8,OutputDtype:float16,int8 # 按照算子类型配置 OpType::Relu:InputDtype:float16,int8,OutputDtype:float16,int8
说明:
产品支持情况: Atlas 200/300/500 推理产品,支持该参数。 Atlas 训练系列产品,支持该参数。 Atlas 推理系列产品(Ascend 310P处理器),支持该参数。 Atlas 200/500 A2推理产品,支持该参数。 Atlas A2训练系列产品,支持该参数。 |
可选 |
session |
ge.exec.atomicCleanPolicy |
是否集中清理网络中所有atomic算子占用的内存,取值包括:
|
可选 |
session |
ge.jit_compile |
当前版本暂不支持。 |
可选 |
全局/session |
ge.build_inner_model |
当前版本暂不支持。 |
可选 |
NA |
ge.externalWeight |
若网络中的weight占用内存较大,且模型加载环境内存受限时,建议通过此配置项将网络中Const/Constant节点的权重外置,防止由于内存不足导致模型编译加载出错。取值包括:
落盘路径说明:
说明:当网络中weight占用内存较大且对模型大小有限制时,建议将此配置项设置为“1”。配置示例: {"ge.externalWeight", "1"}; |
可选 |
session |
stream_sync_timeout |
图执行时,stream同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 |
可选 |
全局/session |
event_sync_timeout |
图执行时,event同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 |
可选 |
全局/session |
ge.exec.staticMemoryPolicy |
网络运行是否使用内存静态分配方式。
为兼容历史版本配置,配置为“1”的场景下,系统会按照“2”动态扩展内存的方式进行处理。 配置示例: {"ge.exec.staticMemoryPolicy", "1"}; |
可选 |
全局 |
ge.graph_compiler_cache_dir |
图编译磁盘缓存目录,和ge.graph_key配合使用,ge.graph_compiler_cache_dir和ge.graph_key同时配置非空时图编译磁盘缓存功能生效。 配置的缓存目录必须存在,否则会导致编译失败。 图发生变化后,原来的缓存文件不可用,用户需要手动删除缓存目录中的缓存文件或者修改ge.graph_key,重新编译生成缓存文件。 其他使用约束和具体的使用方法请参见图编译缓存。 |
可选 |
session |
ge.graph_key |
图唯一标识,建议取值只包含大小写字母(A-Z,a-z)、数字(0-9)、下划线(_)、中划线(-)并且长度不超过128。 |
可选 |
graph |
ge.featureBaseRefreshable |
配置feature内存地址是否可刷新。若用户需要自行管理feature内存并需要多次刷新该地址,则可将该参数配置为可刷新。 取值: 0:feature内存地址不可刷新,默认值为0。 1:支持刷新模型的feature内存地址。 |
可选 |
all |
ge.constLifecycle |
用于在线训练场景下配置常量节点的生命周期。 session:按照session级别存储常量节点,该取值为默认值。 graph:按照graph级别存储常量节点,后续用户可调用SetGraphConstMemoryBase接口按图级别对const内存自行管理。 |
可选 |
all |
ge.exec.inputReuseMemIndexes |
用于配置是否开启图的输入节点的内存复用功能,开启后,输入节点的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。 参数取值为输入节点的index;如果对多个输入节点都开启内存复用,多个index间使用逗号分隔。输入节点需要设置属性index,说明是第几个输入,index从0开始。 注意:
配置示例: {"ge.exec.inputReuseMemIndexes", "0,1,2"}; |
可选 |
graph |
ge.exec.outputReuseMemIndexes |
用于配置是否开启整图输出的内存复用功能,开启后,整图输出的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。 如果开启,配置为整图输出的index;如果对多个输出都开启内存复用,多个index间使用逗号分隔。 注意:
配置示例: {"ge.exec.outputReuseMemIndexes", "0,1,2"}; |
可选 |
graph |
ge.disableOptimizations |
该参数为调试参数,当前不支持应用于商用产品中,后续版本会作为正式特性更新发布。仅适用于Atlas A2训练系列产品。 用于指定关闭的某一个或者多个编译优化pass。 当前仅支持关闭如下pass: "RemoveSameConstPass","ConstantFoldingPass" 注意:
配置示例:
|
可选 |
全局/session/graph |
ge.enableGraphParallel |
是否对原始大模型进行算法切分,设置为1表示开启算法切分,具体切分策略从参数ge.graphParallelOptionPath所指向的配置文件中读取。 设置成其他值或者空代表不开启算法切分,默认为空。 配置示例: {"ge.enableGraphParallel", "1"}; |
可选 |
graph |
ge.graphParallelOptionPath |
对原始大模型进行切分时,算法切分策略配置文件所在路径,仅在ge.enableGraphParallel=1时配置生效。 配置示例: {"ge.graphParallelOptionPath", "./parallel.json"}; 配置文件必须为json格式,示例如下:
参数解释如下: |
可选 |
graph |