options参数说明
Atlas 200/300/500 推理产品、Atlas 200/500 A2推理产品不支持该特性。
本章节列出GEInitialize、Session构造函数、AddGraph接口传入的配置参数,分别在全局、session、graph生效。
表1中仅列出当前版本支持的配置参数,如果表中未列出,表示该参数预留或适用于其他版本的昇腾AI处理器,用户无需关注。
Options key |
Options value |
必选/可选 |
全局/session/graph级别生效 |
---|---|---|---|
ge.graphRunMode |
图执行模式,取值:
|
可选 |
全局/session |
ge.exec.deviceId |
GE实例运行时操作的设备的逻辑ID。
N表示该台Server上的可用昇腾AI处理器个数。 |
可选 |
全局 |
ge.socVersion |
指定编译优化模型的昇腾AI处理器版本号。 如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy。 |
可选 |
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训练系列产品/Atlas 800I 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训练系列产品/Atlas 800I 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" }, true:白名单。false:黑名单。不配置:灰名单。 |
可选 |
all |
ge.exec.profilingMode |
是否开启Profiling功能。
|
可选 |
全局 |
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"})"}}; |
可选 |
全局 |
ge.exec.enableDump |
是否开启dump功能,默认关闭。
该参数与ge.exec.enableDumpDebug参数,全局场景以及同一个session内场景,不能同时设置。 |
可选 |
全局/session |
ge.exec.dumpPath |
Dump文件保存路径。开启dump和溢出检测功能时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
dump文件生成在该参数指定的目录下,即{dump_path}/{time}/{deviceid}/{model_name}/{model_id}/{data_index}目录下,以{dump_path}配置/home/HwHiAiUser/output为例,例如存放在“/home/HwHiAiUser/output/20200808163566/0/ge_default_20200808163719_121/11/0”目录下。 |
可选 |
全局/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 |
是否开启溢出检测功能,默认关闭。
该参数与ge.exec.enableDump参数,全局场景以及同一个session内场景,不能同时设置。 |
可选 |
全局/session |
ge.exec.dumpDebugMode |
溢出检测模式,取值如下:
|
可选 |
全局/session |
ge.exec.enable_exception_dump |
是否dump异常算子数据。
说明:
若配置了环境变量NPU_COLLECT_PATH,不论配置项“enable_exception_dump”的取值如何,都同时dump异常算子的输入数据和输出数据,且dump数据存储在环境变量NPU_COLLECT_PATH的指定目录下。
配置示例:
std::map<ge::AscendString, ge::AscendString> ge_options = {{"ge.exec.enable_exception_dump", "0"}, |
可选 |
全局 |
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_g,oom 使用约束: 算子编译时,如果用户不想编译所有AI Core算子,而是指定某些AI Core算子进行编译,则需要在上述test0.cfg配置文件中新增op_debug_list字段,算子编译时,只编译该列表指定的算子,并按照op_debug_config配置的选项进行编译。op_debug_list字段要求如下:
配置示例如下:op_debug_config参数指定的配置文件(例如test0.cfg)中增加如下信息: op_debug_config= ccec_g,oom op_debug_list=GatherV2,opType::ReduceSum 模型编译时,GatherV2,ReduceSum算子按照ccec_g,oom选项进行编译。
说明:
|
可选 |
全局 |
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.bufferOptimize |
数据缓存优化开关。 参数值:
使用建议: 建议打开数据缓存优化功能:开启数据缓存优化可提高计算效率、提升性能,但由于部分算子在实现上可能存在未考虑的场景,导致影响精度,因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后,精度达标,则需要识别出问题算子,反馈给华为工程师进一步分析、解决算子问题;解决算子问题后,建议仍旧保持开启数据缓存优化功能。 配置示例: {"ge.bufferOptimize", "l2_optimize"}; |
可选 |
session/graph |
ge.mdl_bank_path |
加载子图调优后自定义知识库的路径。 该参数需要与ge.bufferOptimize参数配合使用,仅在数据缓存优化开关打开的情况下生效,通过利用高速缓存暂存数据的方式,达到提升性能的目的。 参数值:模型调优后自定义知识库路径。 参数值格式:支持大小写字母(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=enable_hi_float_32_execution optype4=support_out_of_bound_index [ByNodeName] nodename1=high_precision nodename2=high_performance nodename3=enable_hi_float_32_execution nodename4=support_out_of_bound_index |
可选 |
全局 |
ge.opSelectImplmode |
昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。 高精度是指在float16输入场景,通过泰勒展开/牛顿迭代等手段进一步提升算子的精度;高性能是指在float16输入的情况下,不影响网络精度前提的最优性能实现。 参数取值:
上述实现模式,根据算子的dtype进行区分。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。 参数默认值:high_performance |
可选 |
全局 |
ge.optypelistForImplmode |
列举算子optype的列表,该列表中的算子使用ge.opSelectImplmode参数指定的模式。 参数值约束:
|
可选 |
全局 |
ge.shape_generalized_build_mode |
该参数在后续版本废弃、请勿使用。 |
可选 |
graph |
ge.customizeDtypes |
通过该参数自定义模型编译时算子的计算精度,模型中其他算子以ge.exec.precision_mode指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。 参数值约束:
配置文件格式要求: # 按照算子名称配置 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
说明:
|
可选 |
session |
ge.exec.atomicCleanPolicy |
是否集中清理网络中所有atomic算子占用的内存, 参数取值:
|
可选 |
session |
ge.jit_compile |
当前版本暂不支持。 |
可选 |
全局/session |
ge.build_inner_model |
当前版本暂不支持。 |
可选 |
NA |
ge.externalWeight |
若网络中的weight占用内存较大,且模型加载环境内存受限时,建议通过此配置项将网络中Const/Constant节点的权重外置,同时将节点类型转换为FileConstant类型,防止由于内存不足导致模型编译加载出错。取值包括:
落盘路径说明:
说明:当网络中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", "2"}; |
可选 |
全局 |
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级别存储常量节点,该取值为默认值。配置为session级别时,session内多张图间的常量节点支持内存复用,但需要用户保证多张图上同名的常量节点完全相同。 graph:按照graph级别存储常量节点,后续用户可调用SetGraphConstMemoryBase接口按图级别对const内存自行管理。 训练场景默认值为session;在线推理场景默认值为graph。 |
可选 |
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训练系列产品/Atlas 800I A2推理产品。 用于指定关闭的某一个或者多个编译优化pass。 当前仅支持关闭如下pass: "RemoveSameConstPass","ConstantFoldingPass" 注意:
配置示例:
|
可选 |
all |
ac_parallel_enable |
动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。 动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。 参数取值:
配置示例: {"ac_parallel_enable", "1"}; |
可选 |
全局 |
ge.deterministic |
是否开启确定性计算。 默认情况下,不开启确定性计算,算子在相同的硬件和输入下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。当开启确定性计算功能时,算子在相同的硬件和输入下,多次执行将产生相同的输出。但启用确定性计算往往导致算子执行变慢。当发现模型多次执行结果不同,或者是进行精度调优时,可开启确定性计算,辅助模型调试、调优。 参数取值:
配置示例: {"ge.deterministic", "1"}; |
可选 |
全局 |
ge.enableGraphParallel |
是否对原始大模型进行算法切分,设置为1表示开启算法切分,具体切分策略从参数ge.graphParallelOptionPath所指向的配置文件中读取。 设置成其他值或者空代表不开启算法切分,默认为空。 配置示例: {"ge.enableGraphParallel", "1"}; |
可选 |
graph |
ge.exec.enableEngineParallel |
大模型切分部署场景,是否对通信算子和网络中关联的部分计算算子进行切分,使能通信和计算并行运行。只有网络中存在通信算子,且该参数配置为1后,才能进行切分,切分时,仅对AllReduce通信算子进行切分。 设置成其他值或者空代表不开启算法切分,默认为空。 配置示例: {"ge.exec.enableEngineParallel", "1"}; |
可选 |
graph |
ge.graphParallelOptionPath |
对原始大模型进行切分时,算法切分策略配置文件所在路径,仅在ge.enableGraphParallel=1时配置生效。 配置示例: {"ge.graphParallelOptionPath", "./parallel.json"}; 配置文件必须为json格式,示例如下:
参数解释如下:
|
可选 |
graph |
ge.exec.hostSchedulingMaxThreshold |
控制静态小图(根图)执行时是否走动态shape调度的最大阈值。默认阈值为0。建议大模型场景使用。
说明:如果静态根图节点包括子图,则该参数不生效。 |
可选 |
all |
ge.exec.static_model_ops_lower_limit |
控制静态子图最小算子个数门限,取值范围为-1到正无穷,取其他值报错。
例如,假设静态子图中算子数为4,通过该参数配置的门限为10,则静态子图不会单独拆图,走动态图执行。 |
可选 |
graph |
ge.exec.modelDeployMode |
大模型切分部署场景下,用于指定所有模型的部署模式。
|
可选 |
graph |
ge.exec.modelDeployDevicelist |
大模型切分部署场景下,用于指定当前执行节点用于模型部署执行的设备,配合ge.exec.modelDeployMode为SPMD场景时使用。 |
可选 |
graph |