网络中存在ResourceConditionalAccumulator等算子导致训练性能不达标
问题现象
OSMN等网络中存在大量的ResourceConditionalAccumulator、ResourceAccumulatorTakeGradient资源类算子,导致训练性能不达标。
原因分析
当前昇腾AI处理器默认采用计算全下沉模式,这些算子在昇腾AI处理器上执行时调度开销和内存拷贝开销大,导致训练性能不达标。
解决方案
需要通过使能混合计算能力,将此类算子留在Host侧执行。
1 2 3 4 5 6 7 8 9 10 11 | from npu_bridge.npu_init import * config = tf.ConfigProto() custom_op = config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name = "NpuOptimizer" custom_op.parameter_map["mix_compile_mode"].b = True config.graph_options.rewrite_options.remapping = RewriterConfig.OFF config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(...) |
父主题: 模型训练问题(TensorFlow网络)