工具简介
功能介绍
Ascend平台提供了TensorFlow 2.6.5网络迁移工具,该工具适用于原生的TensorFlow训练脚本迁移场景,AI算法工程师通过该工具分析原生的TensorFlow Python API在昇腾AI处理器上的支持度情况,同时将原生的TensorFlow训练脚本自动迁移成昇腾AI处理器支持的脚本,迁移后的脚本能在昇腾AI处理器上执行训练,功能跑通。对于无法自动迁移的API,您可以参考工具输出的迁移报告,对训练脚本进行相应的适配修改。
获取路径
CANN软件安装完成后,迁移工具在“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_device/convert_tf2npu/”目录下。
使用限制
在使用工具进行模型迁移前,先来了解对原始训练脚本的限制:
- 要求原始脚本在GPU/CPU上跑通,精度收敛。
- 要求原始脚本仅使用TensorFlow 2.6官方API,或者当脚本中以tf.compat.v1形式调用Tensorflow 1.x API时,支持使用Horovod API。
若用户脚本使用了其他第三方API,当前工具暂不支持迁移。例如:
- 不支持原生Keras API,但由于Tensorflow官方API中包括了Tensorflow的Keras API,因此支持Tensorflow的Keras API。
- 不支持CuPy API,即便原始脚本能在GPU上运行成功,但不能保证在昇腾AI处理器运行成功。
- 原始脚本中的TensorFlow模块最好按照如下方式引用,否则工具迁移后,无法生成准确的迁移报告(但并不影响脚本迁移)。
1 2
import tensorflow as tf import horovod.tensorflow as hvd
- 当前版本不支持float64/complex64/complex128/DT_VARIANT数据类型。
- 关于分布式脚本迁移的限制:
- 使用工具迁移前,需要手工添加数据集分片操作,具体请参考3。
- 当前工具仅支持对使用了Tensorflow Keras优化器(包括SGD/RMSprop/Adam/Ftrl/Adagrad/Adadelta/Adamax/Nadam)的分布式脚本进行自动迁移,其他分布式脚本需要参考分布式训练脚本适配(兼容单卡)进行手工迁移。
- 如果用户原始脚本中使用了LossScaleOptimizer,当前工具仅支持将tf.keras.mixed_precision.LossScaleOptimizer迁移为npu.train.optimizer.NpuLossScaleOptimizer,对于其他类型的LossScaleOptimizer,您应当先切换为tf.keras.mixed_precision.LossScaleOptimizer,进行功能精度验证后再手工替换为npu.train.optimizer.NpuLossScaleOptimizer。
- 迁移工具目前无法自动使能循环下沉功能,如果原始脚本中使用了循环下沉,则需要用户手工使能NPU的循环下沉能力,具体请参考训练循环下沉时设置NPU上的循环次数。
父主题: 自动迁移