数据预处理中存在资源类算子导致训练异常
2022/08/16
135
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
官方 | 模型训练 | TensorFlow | 资源类算子、LookupTableFindV2 |
问题现象描述
执行训练时,提示报错信息。
原因分析
数据预处理中资源类算子LookupTableFindV2在Host侧执行,而当前昇腾AI处理器默认采用计算全下沉模式,即所有的计算类算子(包括资源类算子的初始化图)全部在Device侧执行。数据预处理中的资源类算子和资源类算子的初始化图未在同一设备执行,而出现报错。
解决措施
需要通过使能混合计算能力,将资源类算子的初始化图也留在Host侧执行。
当用户的数据预处理脚本中存在此类API(tf.contrib.lookup下的Table类的API,例如tf.contrib.lookup.HashTable)时,需要手工使能混合计算:
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(...)
本页内容