参数名 |
说明 |
使用场景 |
---|---|---|
graph_run_mode |
图执行模式,取值:
配置示例: custom_op.parameter_map["graph_run_mode"].i = 1 |
训练/在线推理 |
session_device_id |
当用户需要将不同的模型通过同一个脚本在不同的Device上执行,可以通过该参数指定Device的逻辑ID。 通常可以为不同的图创建不同的Session,并且传入不同的session_device_id。 配置示例: config_0 = tf.ConfigProto() custom_op = config_0.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["session_device_id"].i = 0 config_0.graph_options.rewrite_options.remapping = RewriterConfig.OFF config_0.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config_0) as sess_0: sess_0.run(...) config_1 = tf.ConfigProto() custom_op = config_1.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["session_device_id"].i = 1 config_1.graph_options.rewrite_options.remapping = RewriterConfig.OFF config_1.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config_1) as sess_1: sess_1.run(...) config_7 = tf.ConfigProto() custom_op = config_7.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["session_device_id"].i = 7 config_7.graph_options.rewrite_options.remapping = RewriterConfig.OFF config_7.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config_7) as sess_7: sess_7.run(...) |
训练/在线推理 |
deterministic |
是否开启确定性计算,开启确定性开关后,算子在相同的硬件和输入下,多次执行将产生相同的输出。 此配置项有以下两种取值:
默认情况下,无需开启确定性计算。因为开启确定性计算后,算子执行时间会变慢,导致性能下降。在不开启确定性计算的场景下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。 但当发现模型执行多次结果不同,或者精度调优时,可以通过此配置开启确定性计算辅助进行调试调优。需要注意,如果希望有完全确定的结果,在训练脚本中需要设置确定的随机数种子,保证程序中产生的随机数也都是确定的。 配置示例: custom_op.parameter_map["deterministic"].i = 1 |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
atomic_clean_policy |
是否集中清理网络中所有memset算子占用的内存(含有memset属性的算子都是memset算子),取值包括:
配置示例: custom_op.parameter_map["atomic_clean_policy"].i = 1 |
训练/在线推理 |
static_memory_policy |
网络运行时使用的内存分配方式。
配置示例: custom_op.parameter_map["static_memory_policy"].i = 0
说明:
|
训练/在线推理 |
variable_use_1g_huge_page |
在推荐模型中,嵌入层(Embedding层)在TensorFlow中使用的是变量,当嵌入层作为索引类算子(Gather、ScatterNd等)的输入或输出地址时,若内存较大会存在大范围的离散访问,可能会出现算子性能下降问题。此时可尝试通过配置此参数,为变量和常量使用1G大页申请内存,从而提升访存性能。
该参数取值包括:
使用1G大页申请内存,可以有效降低页表数量,有效扩大TLB(Translation Lookaside Buffer)缓存的地址范围,从而提升离散访问的性能。TLB是昇腾AI处理器中用于高速缓存的硬件模块,用于存储最近使用的虚拟地址到物理地址的映射。
配置示例:
custom_op.parameter_map["variable_use_1g_huge_page"].i = 2
说明:
此参数仅支持以下产品:
|
训练/在线推理 |
external_weight |
同一个session内同时加载多个模型时,如果多个模型间的权重能够复用,建议通过此配置项将网络中Const/Constant节点的权重外置,实现多个模型间的权重复用,从而减少权重的内存占用。
说明:一般场景下不需要配置此参数,针对模型加载环境有内存限制的场景,可以将权重外置。
配置示例:
custom_op.parameter_map["external_weight"].b = True |
训练/在线推理 |
input_fusion_size |
Host侧输入数据搬运到Device侧时,将用户离散多个输入数据合并拷贝的阈值。单位为Byte,最小值为0 Byte,最大值为33554432 Byte(32MB),默认值为131072 Byte(128KB)。若:
例如用户有10个输入,有2个输入数据大小为100KB,2个输入数据大小为50KB,其余输入大于100KB,若设置:
说明:该参数仅针对静态shape图生效。 配置示例: custom_op.parameter_map["input_fusion_size"].i = 25600 |
训练/在线推理 |
input_batch_cpy |
Host侧输入数据搬运到Device时,是否开启批量内存拷贝功能。
说明:
配置示例: custom_op.parameter_map["input_batch_cpy"].b = True |
训练/在线推理 |
请注意动态分档场景下,“input_shape”、“dynamic_dims”与“dynamic_node_type”三个参数需要配合使用。
参数名 |
说明 |
使用场景 |
---|---|---|
input_shape |
输入的shape信息。 配置示例: custom_op.parameter_map["input_shape"].s = tf.compat.as_bytes("data:1,1,40,-1;label:1,-1;mask:-1,-1") 上面示例中表示网络中有三个输入,输入的name分别为data,label,mask,各输入的shape分别为(1,1,40,-1),(1,-1),(-1,-1),name和shape之间以英文冒号分隔。其中-1表示该维度上为动态档位,需要通过dynamic_dims设置动态档位参数。 配置注意事项:
|
在线推理 |
dynamic_dims |
输入的对应维度的档位信息。档位中间使用英文分号分隔,每档中的dim值与input_shape参数中的-1标识的参数依次对应,input_shape参数中有几个-1,则每档必须设置几个维度。并且要求档位信息必须大于1组。 input_shape和dynamic_dims这两个参数的分档信息能够匹配,否则报错退出。 配置示例: custom_op.parameter_map["dynamic_dims"].s = tf.compat.as_bytes("20,20,1,1;40,40,2,2;80,60,4,4") 结合上面举例的input_shape信息,表示支持输入的shape为:
|
在线推理 |
dynamic_node_type |
指定动态输入的节点类型。
当前不支持dataset和placeholder输入同时为动态输入。
配置示例:
custom_op.parameter_map["dynamic_node_type"].i = 0 |
在线推理 |
ac_parallel_enable |
动态shape图中,是否允许AI CPU算子和AI Core算子并行运行。
动态shape图中,开关开启时,系统自动识别图中可以和AI Core并发的AI CPU算子,不同引擎的算子下发到不同流上,实现多引擎间的并行,从而提升资源利用效率和动态shape执行性能。
配置示例: custom_op.parameter_map["ac_parallel_enable"].s = tf.compat.as_bytes("1") |
训练/在线推理 |
compile_dynamic_mode |
是否需要泛化图中所有的输入shape。
配置示例: custom_op.parameter_map["compile_dynamic_mode"].b = True 注意:此参数不能与动态分档相关参数同时使用,即不能与“input_shape”、“dynamic_dims”与“dynamic_node_type”三个参数同时使用。 |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
mix_compile_mode |
是否开启混合计算模式。
计算全下沉模式即所有的计算类算子全部在Device侧执行,混合计算模式作为计算全下沉模式的补充,将部分不可离线编译下沉执行的算子留在前端框架中在线执行,提升昇腾AI处理器支持TensorFlow的适配灵活性。 配置示例: custom_op.parameter_map["mix_compile_mode"].b = True |
训练/在线推理 |
in_out_pair_flag |
混合计算场景下,是否将in_out_pair中指定的算子下沉到昇腾AI处理器执行,取值:
配置示例: custom_op.parameter_map['in_out_pair_flag'].b = False |
在线推理 |
in_out_pair |
混合计算场景下,配置下沉/不下沉部分的首尾算子名。 需要注意,此参数仅支持配置一个[in_nodes,out_nodes]范围段内的算子,不支持配置多个[in_nodes,out_nodes]范围段。 配置示例: # 开启混合计算 custom_op.parameter_map["mix_compile_mode"].b = True # 如下配置,将in_nodes, out_nodes范围内的算子全部下沉到昇腾AI处理器执行,其余算子留在前端框架执行。 in_nodes.append('import/conv2d_1/convolution') out_nodes.append('import/conv2d_59/BiasAdd') out_nodes.append('import/conv2d_67/BiasAdd') out_nodes.append('import/conv2d_75/BiasAdd') all_graph_iop.append([in_nodes, out_nodes]) custom_op.parameter_map['in_out_pair'].s = tf.compat.as_bytes(str(all_graph_iop)) # 或者通过如下配置,将in_nodes, out_nodes范围内的算子不下沉,全部留在前端框架执行,其余算子下沉到昇腾AI处理器执行。 in_nodes.append('import/conv2d_1/convolution') out_nodes.append('import/conv2d_59/BiasAdd') out_nodes.append('import/conv2d_67/BiasAdd') out_nodes.append('import/conv2d_75/BiasAdd') all_graph_iop.append([in_nodes, out_nodes]) custom_op.parameter_map['in_out_pair_flag'].b = False custom_op.parameter_map['in_out_pair'].s = tf.compat.as_bytes(str(all_graph_iop)) |
在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
enable_exception_dump |
是否dump异常算子数据。
说明:
若配置了环境变量NPU_COLLECT_PATH,不论配置项“enable_exception_dump”的取值如何,都按照“1:普通ExceptionDump”进行异常算子数据dump,且dump数据存储在环境变量NPU_COLLECT_PATH的指定目录下。 关于环境变量的详细说明可参见《环境变量参考》。
配置示例:
custom_op.parameter_map["enable_exception_dump"].i = 1 |
训练/在线推理 |
op_debug_config |
Global Memory内存检测功能开关。 取值为.cfg配置文件路径,配置文件内多个选项用英文逗号分隔:
配置示例: custom_op.parameter_map["op_debug_config"].s = tf.compat.as_bytes("/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字段要求如下:
test0.cfg文件配置示例如下: op_debug_config= ccec_g,oom op_debug_list=GatherV2,opType::ReduceSum 模型编译时,GatherV2、ReduceSum算子按照ccec_g,oom选项进行编译。
说明:
|
训练/在线推理 |
debug_dir |
用于配置保存算子编译生成的调试相关的过程文件的路径,包括算子.o/.json/.cce等文件。 算子编译生成的调试文件存储路径优先级为: 配置参数“debug_dir” > 环境变量ASCEND_WORK_PATH > 默认存储路径(当前脚本执行路径)。 关于环境变量ASCEND_WORK_PATH的详细说明可参见《环境变量参考》。 配置示例: custom_op.parameter_map["debug_dir"].s = tf.compat.as_bytes("/home/test") |
训练/在线推理 |
export_compile_stat |
用户配置图编译过程中是否生成算子融合信息(包括图融合和UB融合)的结果文件fusion_result.json,支持如下取值:
fusion_result.json文件于记录图编译过程中使用的融合规则,文件中关键字段含义如下:
说明:
配置示例: custom_op.parameter_map["export_compile_stat"].i = 1 |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
precision_mode_v2 |
算子精度模式,配置要求为string类型。
训练场景下:
在线推理场景下:该配置项默认值为“fp16”。 配置示例: custom_op.parameter_map["precision_mode_v2"].s = tf.compat.as_bytes("origin")
说明:
|
训练/在线推理 |
precision_mode |
算子精度模式,配置要求为string类型。
训练场景下:
在线推理场景下,默认值为“force_fp16”。 配置示例: custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision")
说明:
|
训练/在线推理 |
modify_mixlist |
开启混合精度的场景下,开发者可通过此参数指定混合精度黑白灰名单的路径以及文件名,自行指定哪些算子允许降精度,哪些算子不允许降精度。 用户可以在脚本中通过配置“precision_mode_v2”(推荐)参数或者“precision_mode”参数开启混合精度。
黑白灰名单存储文件为json格式,配置示例如下:
custom_op.parameter_map["modify_mixlist"].s = tf.compat.as_bytes("/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" ] } } 说明:上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置。 混合精度场景下算子的内置优化策略可在“CANN软件安装目录/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json”文件中查询,例如: "Conv2D":{ "precision_reduce":{ "flag":"true" }, ... }
|
训练/在线推理 |
customize_dtypes |
使用precision_mode参数设置整个网络的精度模式时,可能会存在个别算子存在精度问题,此种场景下,可以使用customize_dtypes参数配置个别算子的精度模式,而模型中的其他算子仍以precision_mode指定的精度模式进行编译。需要注意,当precision_mode取值为“must_keep_origin_dtype”时,customize_dtypes参数不生效。 该参数需要配置为配置文件路径及文件名,例如:/home/test/customize_dtypes.cfg。 配置示例: custom_op.parameter_map["customize_dtypes"].s = tf.compat.as_bytes("/home/test/customize_dtypes.cfg") 配置文件中列举需要自定义计算精度的算子名称或算子类型,每个算子单独一行,且算子类型必须为基于Ascend 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
说明:
|
在线推理/训练 |
参数名 |
说明 |
使用场景 |
---|---|---|
enable_dump |
是否开启Data Dump功能,默认值:False。
说明:
配置示例:
custom_op.parameter_map["enable_dump"].b = True |
训练/在线推理 |
dump_mode |
Data Dump模式,用于指定dump算子输入还是输出数据。取值如下:
说明:
配置为all时,由于部分算子在执行过程中会修改输入数据,例如集合通信类算子HcomAllGather、HcomAllReduce等,因此系统在进行dump时,会在算子执行前dump算子输入,在算子执行后dump算子输出,这样,针对同一个算子,算子输入、输出的dump数据是分开落盘,会出现多个dump文件,在解析dump文件后,用户可通过文件内容判断是输入还是输出。 配置示例: custom_op.parameter_map["dump_mode"].s = tf.compat.as_bytes("all") |
训练/在线推理 |
enable_dump_debug |
溢出检测场景下,是否开启溢出数据采集功能,默认值:False。
说明:
配置示例: custom_op.parameter_map["enable_dump_debug"].b = True |
训练 |
dump_debug_mode |
溢出检测模式,取值如下:
配置示例: custom_op.parameter_map["dump_debug_mode"].s = tf.compat.as_bytes("all") |
训练 |
dump_path |
Dump文件保存路径。enable_dump或enable_dump_debug为True时,该参数必须配置。 该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
配置示例: custom_op.parameter_map["dump_path"].s = tf.compat.as_bytes("/home/HwHiAiUser/output") |
训练/在线推理 |
dump_step |
指定采集哪些迭代的Data Dump数据。 多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。 若不配置该参数,表示采集所有迭代的dump数据。 配置示例: custom_op.parameter_map["dump_step"].s = tf.compat.as_bytes("0|5|10") |
训练 |
dump_data |
指定算子dump内容类型,取值:
大规模训练场景下,通常dump数据量太大并且耗时长,可以先dump所有算子的统计数据,根据统计数据识别可能异常的算子,然后再指定dump异常算子的input或output数据。 配置示例: custom_op.parameter_map["dump_data"].s = tf.compat.as_bytes("stats") |
训练/在线推理 |
dump_layer |
指定需要dump的算子。取值为算子名,多个算子名之间使用空格分隔。若不配置此字段,默认dump全部算子。 若指定的算子其输入涉及data算子,会同时将data算子信息dump出来。 配置示例: custom_op.parameter_map["dump_layer"].s = tf.compat.as_bytes("nodename1 nodename2 nodename3") |
训练/在线推理 |
quant_dumpable |
如果TensorFlow网络是经过AMCT工具量化后的网络,可通过此参数控制是否采集量化前的dump数据,默认值为“0”。
配置示例: custom_op.parameter_map["quant_dumpable"].s = tf.compat.as_bytes("1")
说明:
此参数仅适用于在线推理场景下使用。 开启Data Dump的场景下,可通过将此配置项配置为“1”,确保可以采集量化前的dump数据。 |
在线推理 |
fusion_switch_file |
融合开关配置文件路径以及文件名。 格式要求:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。 系统内置了一些图融合和UB融合规则,均为默认开启,可以根据需要关闭指定的融合规则,当前可以关闭的融合规则请参见《图融合和UB融合规则参考》。 配置文件样例fusion_switch.cfg如下所示,on表示开启,off表示关闭。 { "Switch":{ "GraphFusion":{ "RequantFusionPass":"on", "ConvToFullyConnectionFusionPass":"off", "SoftmaxFusionPass":"on", "NotRequantFusionPass":"on", "SplitConvConcatFusionPass":"on", "ConvConcatFusionPass":"on", "MatMulBiasAddFusionPass":"on", "PoolingFusionPass":"on", "ZConcatv2dFusionPass":"on", "ZConcatExt2FusionPass":"on", "TfMergeSubFusionPass":"on" }, "UBFusion":{ "TbePool2dQuantFusionPass":"on" } } } 同时支持用户一键关闭融合规则: { "Switch":{ "GraphFusion":{ "ALL":"off" }, "UBFusion":{ "ALL":"off" } } } 需要注意的是:
配置示例: custom_op.parameter_map["fusion_switch_file"].s = tf.compat.as_bytes("/home/test/fusion_switch.cfg") |
训练/在线推理 |
buffer_optimize |
高级开关,是否开启buffer优化。
配置示例: custom_op.parameter_map["buffer_optimize"].s = tf.compat.as_bytes("l2_optimize") |
在线推理 |
use_off_line |
是否在昇腾AI处理器执行训练。
配置示例: custom_op.parameter_map["use_off_line"].b = True |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
iterations_per_loop |
sess.run模式下通过set_iteration_per_loop配置小循环次数,即每次sess.run(),在Device侧执行训练迭代的次数。 此处的配置参数和set_iteration_per_loop设置的iterations_per_loop值保持一致,用于功能校验。 配置示例: custom_op.parameter_map["iterations_per_loop"].i = 10 |
训练 |
参数名 |
说明 |
使用场景 |
---|---|---|
hcom_parallel |
分布式训练场景下,可通过此开关控制是否启用Allreduce梯度更新和前后向并行执行。
默认值为“True”,针对小网络(例如:ResNet18),建议配置为False。 配置示例: custom_op.parameter_map["hcom_parallel"].b = True |
训练 |
enable_small_channel |
是否使能small channel的优化,使能后在channel<=4的卷积层会有性能收益。
说明:
该参数使能后,当前只在ResNet50、ResNet101、ResNet152、GoogleNet网络模型能获得性能收益。其他网络模型性能可能会下降,用户根据实际情况决定是否使能该参数。 配置示例: custom_op.parameter_map["enable_small_channel"].i = 1 |
在线推理/训练 |
op_precision_mode |
设置具体某个算子的高精度或高性能模式,通过该参数传入自定义的模式配置文件op_precision.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
具体某个算子支持配置的精度/性能模式取值,可通过CANN软件安装后文件存储路径的“opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini”文件查看。 该参数不能与op_select_implmode、optypelist_for_implmode参数同时使用,若三个参数同时配置,则只有op_precision_mode参数指定的模式生效。 一般场景下该参数无需配置。若使用高性能或者高精度模式,网络性能或者精度不是最优,则可以使用该参数,通过配置ini文件调整某个具体算子的精度模式。 配置示例: custom_op.parameter_map["op_precision_mode"].s = tf.compat.as_bytes("/home/test/op_precision.ini") |
训练/在线推理 |
enable_scope_fusion_passes |
指定编译时需要生效的Scope融合规则列表。此处传入注册的融合规则名称,允许传入多个,用“,”隔开。 无论是内置还是用户自定义的Scope融合规则,都分为如下两类:
配置示例: custom_op.parameter_map["enable_scope_fusion_passes"].s = tf.compat.as_bytes("ScopeLayerNormPass,ScopeClipBoxesPass") |
训练/在线推理 |
stream_max_parallel_num |
此配置项仅适用于NMT网络。 用于指定AI CPU/AI Core引擎的并行度,从而实现AI CPU/AI Core算子间的并行执行。 DNN_VM_AICPU为AI CPU引擎名称,本示例指定了AI CPU引擎的并发数为10; AIcoreEngine为AI Core引擎名称,本示例指定了AI Core引擎的并发数为1。 AI CPU/AI Core引擎的并行度默认为1,取值不能超过AI Core的最大核数。 配置示例: custom_op.parameter_map["stream_max_parallel_num"].s = tf.compat.as_bytes("DNN_VM_AICPU:10,AIcoreEngine:1") |
训练/在线推理 |
is_tailing_optimization |
此配置项仅适用于Bert网络。 分布式训练场景下,是否开启通信拖尾优化,用于提升训练性能。通信拖尾优化即,通过计算依赖关系的改变,将不依赖于最后一个AR(梯度聚合分片)的计算操作调度到和最后一个AR并行进行,以达到优化通信拖尾时间的目的。取值:
必须和NPUOptimizer配合使用,且要求和NPUOptimizer中的is_tailing_optimization值保持一致。 配置示例: custom_op.parameter_map["is_tailing_optimization"].b = True |
训练 |
variable_placement |
若网络的权重较大,Device侧可能存在内存不足导致网络执行失败的场景,此种情况下可通过此配置将variable的部署位置调整到Host,以降低Device的内存占用。
默认值为:Device
约束说明:
配置示例: custom_op.parameter_map["variable_placement"].s = tf.compat.as_bytes("Device") |
训练/在线推理 |
frozen_variable |
当开发者需要将权重保存为checkpoint时,可通过此配置将variable转换为const,以减少Host到Device之间的数据拷贝,从而提升推理性能。
默认值为:False 配置示例: custom_op.parameter_map["frozen_variable"].b = True |
在线推理 |
graph_max_parallel_model_num |
在线推理场景下,可通过此参数设置图执行时的最大并行次数。当此参数大于1时,图执行时会启动对应数量的线程并行执行,从而提升图的整体执行流水效率。 需要配置为整数,取值范围为[1,INT32_MAX],默认值为1,其中INT32_MAX是INT32类型的最大值,为“2147483647”。 配置示例: custom_op.parameter_map["graph_max_parallel_model_num"].i = 4 |
在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
profiling_mode |
是否开启Profiling功能。
配置示例:
custom_op.parameter_map["profiling_mode"].b = True 说明:此配置项的优先级高于环境变量PROFILING_MODE,关于环境变量的详细说明可参见《环境变量参考》中的“辅助功能 > 性能数据采集”章节。 |
训练/在线推理 |
profiling_options |
Profiling配置选项。
说明:
配置示例: custom_op.parameter_map["profiling_options"].s = tf.compat.as_bytes('{"output":"/tmp/profiling","training_trace":"on","fp_point":"","bp_point":""}') |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
aoe_mode |
通过AOE工具进行调优的调优模式。
说明:
配置示例: custom_op.parameter_map["aoe_mode"].s = tf.compat.as_bytes("2") |
训练 |
work_path |
AOE工具调优工作目录,存放调优配置文件和调优结果文件,默认生成在训练当前目录下。 该参数类型为字符串,指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
配置示例: custom_op.parameter_map["work_path"].s = tf.compat.as_bytes("/home/HwHiAiUser/output") |
训练 |
aoe_config_file |
通过AOE工具进行调优时,若仅针对网络中某些性能较低的算子进行调优,可通过此参数进行设置。该参数配置为包含算子信息的配置文件路径及文件名,例如:/home/test/cfg/tuning_config.cfg。 配置示例: custom_op.parameter_map["aoe_config_file"].s=tf.compat.as_bytes("/home/test/cfg/tuning_config.cfg") 配置文件中配置的是需要进行调优的算子信息,文件内容格式如下: { "tune_ops_name":["bert/embeddings/addbert/embeddings/add_1","loss/MatMul"], "tune_ops_type":["Add", "Mul"] "tune_optimization_level":"O1", "feature":["deeper_opat"] }
说明:
如上配置文件中,tune_ops_type和tune_ops_name可以同时存在,同时存在时取并集,也可以只存在某一个。 |
训练 |
参数名 |
说明 |
使用场景 |
---|---|---|
op_compiler_cache_mode |
用于配置算子编译磁盘缓存模式。默认值为enable。
使用说明:
配置示例: custom_op.parameter_map["op_compiler_cache_mode"].s = tf.compat.as_bytes("enable") |
训练/在线推理 |
op_compiler_cache_dir |
用于配置算子编译磁盘缓存的目录。 路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。 若指定的路径存在且路径有效,会在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。 算子编译缓存文件存储优先级为: 配置参数“op_compiler_cache_dir” > ${ASCEND_CACHE_PATH}/kernel_cache_host标识 > 默认路径($HOME/atc_data)。 关于环境变量ASCEND_CACHE_PATH的详细说明可参见《环境变量参考》中的“安装配置相关 > 落盘文件配置”章节。 配置示例: custom_op.parameter_map["op_compiler_cache_dir"].s = tf.compat.as_bytes("/home/test/kernel_cache") |
训练/在线推理 |
aicore_num |
用于配置算子编译时使用的AI Core核数和Vector Core核数。
配置格式:“整数1|整数2”,中间使用“|”分割,整数1表示算子编译时使用的AI Core核数,整数2表示算子编译时使用的Vector Core核数。
配置示例: custom_op.parameter_map["aicore_num"].s = tf.compat.as_bytes("4|2") |
训练/在线推理 |
oo_constant_folding |
常量折叠功能开启与关闭开关。
常量折叠,是指在图编译阶段直接计算并替换常量表达式的值,从而降低内存占用。一般情况下,建议保持默认值启用常量折叠功能。但有些网络编译运行过程中需要较多的内存,而常量内存在图的整个生命周期会一直占用,若存在常量折叠后会增加总内存的场景,可考虑通过此参数关闭常量折叠功能。
配置示例: custom_op.parameter_map["oo_constant_folding"].b = True
说明:
关闭常量折叠功能后,若网络编译运行出错,如下所示:
解决方法: 开发者可以启用常量折叠功能(oo_constant_folding配置为True),然后通过TensorFlow图优化器Grappler的“_grappler_do_not_remove”属性精准关闭某些算子的常量折叠功能。 |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
local_rank_id |
该参数用于推荐网络场景的数据并行场景,在主进程中对于数据进行去重操作,去重之后的数据再分发给其他进程的Device进行前后向计算。 该模式下,一个主机上多Device共用一个进程做数据预处理,但实际还是多进程的场景,在主进程上进行数据预处理,其他进程不再接受本进程上的Dataset,而是接收主进程预处理后的数据。 具体使用方法一般是通过集合通信的get_local_rank_id()接口获取当前进程在其所在Server内的rank编号,用来判断哪个进程是主进程。 配置示例: custom_op.parameter_map["local_rank_id"].i = 0 |
训练/在线推理 |
local_device_list |
该参数配合local_rank_id使用,用来指定主进程给哪些其他进程的Device发送数据。 custom_op.parameter_map["local_device_list"].s = tf.compat.as_bytes("0,1") |
训练/在线推理 |
参数名 |
说明 |
使用场景 |
---|---|---|
hccl_timeout |
设备间任务执行的同步等待时间,单位为s。 当默认时长不满足需求时(例如出现通信失败的错误),可通过此配置项延长超时时间。
说明:
参数“hccl_timeout”的优先级大于环境变量“HCCL_EXEC_TIMEOUT”,若同时配置了参数“hccl_timeout”与环境变量“HCCL_EXEC_TIMEOUT”,以参数“hccl_timeout”的配置值为准。关于环境变量“HCCL_EXEC_TIMEOUT”的详细说明可参见《环境变量参考》。 配置示例: custom_op.parameter_map["hccl_timeout"].i = 1800 |
训练/在线推理 |
op_wait_timeout |
算子等待超时时间,单位为s,默认值为120s。 当默认时长不满足需求时,可通过此配置项延长超时时间。 配置示例: custom_op.parameter_map["op_wait_timeout"].i = 120 |
训练/在线推理 |
op_execute_timeout |
算子执行超时时间,单位为s。 配置示例: custom_op.parameter_map["op_execute_timeout"].i = 90 |
训练/在线推理 |
stream_sync_timeout |
图执行时,stream同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 说明:集群场景下,此配置的值(即stream同步等待超时时间)需要大于集合通信超时时间,即“hccl_timeout”配置项的值或者环境变量“HCCL_EXEC_TIMEOUT”的值。 配置示例: custom_op.parameter_map["stream_sync_timeout"].i = 60000 |
训练/在线推理 |
event_sync_timeout |
图执行时,event同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 配置示例: custom_op.parameter_map["event_sync_timeout"].i = 60000 |
训练/在线推理 |
试验参数为调试功能扩展参数,后续版本可能会存在变更,不支持应用于商用产品中。
参数名 |
说明 |
使用场景 |
---|---|---|
graph_compiler_cache_dir |
该参数用于配置图编译磁盘缓存目录,当该参数配置为非空时,图编译磁盘缓存功能生效。 图编译缓存功能支持将图编译结果进行磁盘持久化,当再次执行图编译运行时,可直接加载磁盘上缓存的编译结果,从而减少图编译时长。
需要注意:
配置示例: custom_op.parameter_map["graph_compiler_cache_dir"].s = tf.compat.as_bytes("/root/build_cache_dir") |
训练/在线推理 |
jit_compile |
模型编译时,选择是优先在线编译算子,还是优先使用已编译好的算子二进制文件。
须知:
该参数仅限于大型推荐类型网络使用。 配置示例: custom_op.parameter_map["jit_compile"].s = tf.compat.as_bytes( "auto") |
训练/在线推理 |
shape_generalization_mode |
当“jit_compile”参数配置为“true”(即在线编译算子的场景)时,可通过此参数配置输入shape的泛化模式。
须知:
当compile_dynamic_mode配置为“True”时,首次迭代会将所有输入shape泛化为“-1”,此时shape_generalization_mode的配置将不生效。 配置示例: custom_op.parameter_map["shape_generalization_mode"].s = tf.compat.as_bytes( "FULL") |
训练/在线推理 |
experimental_accelerate_train_mode |
针对超过1小时以上的训练场景,开发者可以通过此配置触发训练加速,提升训练性能。 软件内部会根据开发者配置的加速类型、加速触发模式以及低精度训练流程占比,对相应比例的训练流程降精度编译运行,剩余的训练流程仍按照原始精度编译运行。
该配置项取值类型为字符串,由“|”符号分割为三个字段,例如:fast|step|0.9。
配置示例:
需要注意:
|
训练 |
以下参数在后续版本将废弃,建议开发者不再使用。
参数名 |
说明 |
使用场景 |
---|---|---|
op_debug_level |
功能调试配置项。 算子debug功能开关,取值:
默认值为空,代表不使能此配置。 配置示例: custom_op.parameter_map["op_debug_level"].i = 0 |
训练/在线推理 |
enable_data_pre_proc |
性能调优配置项。 GetNext算子是否下沉到昇腾AI处理器侧执行,GetNext算子下沉是使能训练迭代循环下沉的必要条件。
配置示例:
custom_op.parameter_map["enable_data_pre_proc"].b = True |
训练 |
variable_format_optimize |
性能调优配置项。 是否开启变量格式优化。
为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式,例如进行NCHW到NC1HWC0的数据格式转换。但在用户特殊要求场景下,可以选择关闭该功能开关。 默认值为空,代表不使能此配置。 配置示例: custom_op.parameter_map["variable_format_optimize"].b = True |
训练 |
op_select_implmode |
性能调优配置项。 昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括:
默认值为空,代表不使能此配置。 配置示例: custom_op.parameter_map["op_select_implmode"].s = tf.compat.as_bytes("high_precision") |
训练/在线推理 |
optypelist_for_implmode |
性能调优配置项。 列举算子optype的列表,该列表中的算子使用op_select_implmode参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign,多个算子以英文逗号分隔。 该参数需要与op_select_implmode参数配合使用,例如: op_select_implmode配置为high_precision。 optypelist_for_implmode配置为Pooling。 默认值为空,代表不使能此配置。 配置示例: custom_op.parameter_map["optypelist_for_implmode"].s = tf.compat.as_bytes("Pooling,SoftmaxV2") |
训练/在线推理 |
dynamic_input |
当前网络的输入是否为动态输入,取值包括:
配置示例: custom_op.parameter_map["dynamic_input"].b = True |
训练/在线推理 |
dynamic_graph_execute_mode |
对于动态输入场景,需要通过该参数设置执行模式,即dynamic_input为True时该参数生效。取值为: dynamic_execute:动态图编译模式。该模式下获取dynamic_inputs_shape_range中配置的shape范围进行编译。 配置示例: custom_op.parameter_map["dynamic_graph_execute_mode"].s = tf.compat.as_bytes("dynamic_execute") |
训练/在线推理 |
dynamic_inputs_shape_range |
动态输入的shape范围。例如全图有3个输入,两个为dataset输入,一个为placeholder输入,则配置示例为: custom_op.parameter_map["dynamic_inputs_shape_range"].s = tf.compat.as_bytes("getnext:[128 ,3~5, 2~128, -1],[64 ,3~5, 2~128, -1];data:[128 ,3~5, 2~128, -1]") 使用注意事项:
|
训练/在线推理 |
graph_memory_max_size |
历史版本,该参数用于指定网络静态内存和最大动态内存的大小。 当前版本,该参数不再生效。系统会根据网络使用的实际内存大小动态申请。 |
训练/在线推理 |
variable_memory_max_size |
历史版本,该参数用于指定变量内存的大小。 当前版本,该参数不再生效。系统会根据网络使用的实际内存大小动态申请。 |
训练/在线推理 |