融合规则生效
在注册融合规则时,定义了融合规则的生效方式:
- 当定义为通用规则时,默认生效,不支持用户指定失效。
- 当定义为定制化规则时,默认不生效,此时,可以参考如下生效该融合规则。
表1 定制化融合规则生效方式 场景
生效方式
离线推理场景下,使用离线模型转换工具编译TensorFlow原始模型
通过模型转换命令行参数enable_scope_fusion_passes指定需要生效的融合规则,多个用“,”分隔:
--enable_scope_fusion_passes = DecodeBboxV2ScopeFusionPass
离线推理场景下,解析TensorFlow原始模型
通过aclgrphParseTensorFlow接口解析TensorFlow原始模型时,通过
ENABLE_SCOPE_FUSION_PASSES参数指定需要生效的融合规则,多个用“,”分隔:
{ge::AscendString(ge::ir_option::ENABLE_SCOPE_FUSION_PASSES), ge::AscendString("DecodeBboxV2ScopeFusionPass")},
训练或在线推理场景下,在TensorFlow框架内执行
通过TensorFlow框架运行配置参数enable_scope_fusion_passes指定需要生效的融合规则,多个用“,”分隔:
import tensorflow as tf from npu_bridge.estimator import npu_ops from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["use_off_line"].b = True custom_op.parameter_map["enable_scope_fusion_passes"].s = tf.compat.as_bytes("DecodeBboxV2ScopeFusionPass") config.graph_options.rewrite_options.remapping = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(xx_name_scope) # xx_name_scope是融合算子名字的示例。