对于模型从GPU/CPU迁移到NPU训练的场景,需要做以下检查,排除迁移过程中可能存在的问题。
在GPU/CPU下多次训练,并且在NPU下多次训练;如果多次训练的结果中,GPU/CPU的精度和NPU的精度均在相同范围内波动,那么不能认为NPU训练存在精度问题;如果GPU/CPU多次训练的平均精度明显高于NPU多次训练的平均精度,并且超出正常波动范围,可以认为NPU训练存在精度异常。
如果以上检查完成后仍然存在精度问题,可以打开NPU训练的高精度模式后再次训练,检查是否是由算子精度模式引入的问题。
session.run模式训练配置示例:
custom_op.parameter_map["op_select_implmode"].s = tf.compat.as_bytes("high_precision")
具体可参考《TF Adapter 接口(1.x)》的“session配置参数说明”章节。
estimator模式训练配置示例:
config = NPURunConfig(op_select_implmode="high_precision")
具体可参考《TF Adapter 接口(1.x)》的“NPURunConfig配置参数说明”章节。