模型迁移:在NPU上正确使能混合精度
目标
在精度调优前,首先需要确保模型迁移成功且在NPU上功能调通。如果涉及分布式训练,确保正确使能。
特别需要注意的是,在迁移过程中,需要确保正确使能混合精度训练。
参考步骤
混合精度在NPU上使能可以使用三种主要的方法,以达到性能、精度的最优权衡:
- 如果用户参考基准脚本使用了GPU的手动混合精度模式(参考链接),在模型中已经明确定义了所有的算子数据类型。那么迁移到NPU上时也保持同样的方式,并且请确保NPU的precision_mode需要设置当前版本默认值。
针对Atlas 训练系列产品,默认配置项为“allow_fp32_to_fp16”。
针对Atlas A2 训练系列产品,默认配置项为“must_keep_origin_dtype”。
- 如果用户参考基准脚本使用了GPU的自动混合精度模式(参考链接),利用TensorFlow框架或者第三方接口(例如apex)能力,定义模型的算子数据类型。那么迁移到NPU上时也保持同样的方式,并且确保NPU的precision_mode需要设置当前版本默认值。
针对Atlas 训练系列产品,默认配置项为“allow_fp32_to_fp16”。
针对Atlas A2 训练系列产品,默认配置项为“must_keep_origin_dtype”。
- 如果用户参考基准脚本使用fp32高精度模式定义模型,那么迁移到NPU上时,需要使能NPU框架的自动混合精度模式(即precision_mode为allow_mix_precision)。
1 2 3
import npu_device as npu npu.global_options().precision_mode = 'allow_mix_precision' npu.open().as_default()
为尽可能减少重复改图带来不期望的问题,以上方法需要确保仅使能一种。
父主题: 检查迁移后脚本