替换LossScaleOptimizer
如果您的原始脚本中未使用LossScaleOptimizer,可以直接跳过该迁移点。
通常,用户原始脚本在使用混合精度提升性能时,会使用LossScaleOptimizer保证精度,由于NPU上浮点溢出的行为是全局标志置位而非产生Inf或NaN的输出,所以您需要使用NPU提供的npu.train.optimizer.NpuLossScaleOptimizer以获取正确的溢出检测结果。
npu.train.optimizer.NpuLossScaleOptimizer使用方法与tf.keras.mixed_precision.LossScaleOptimizer完全一致,使用细节可参考链接。
如果您的脚本中使用的是tf.keras.mixed_precision.LossScaleOptimizer,直接替换为npu.train.optimizer.NpuLossScaleOptimizer即可。如果您使用了其他类型的LossScaleOptimizer,您应当先切换为tf.keras.mixed_precision.LossScaleOptimizer,进行功能精度验证后再进行上述替换。
父主题: 手工迁移