昇腾社区首页
中文
注册

使用迁移工具迁移

了解网络迁移工具

  • 【功能介绍】

    Ascend平台提供了Tensorflow 1.15网络迁移工具,该工具适用于原生的Tensorflow训练脚本迁移场景,AI算法工程师通过该工具分析原生的TensorFlow Python API和Horovod Python API在昇腾AI处理器上的支持度情况,同时将原生的TensorFlow训练脚本自动迁移成昇腾AI处理器支持的脚本。对于无法自动迁移的API,您可以参考工具输出的迁移报告,对训练脚本进行相应的适配修改。

  • 【获取路径】
    • CANN软件安装完成后,迁移工具在“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_bridge/convert_tf2npu/”目录下。
    • 您也可以从昇腾社区获取,直接下载convert_tf2npu文件夹到Linux或Windows环境上任意目录即可。
  • 【使用限制】在使用工具进行模型迁移前,先来了解对原始训练脚本的限制:
    1. 要求原始脚本在GPU/CPU上跑通,精度收敛。
    2. 要求原始脚本仅使用TensorFlow 1.15官方APIHorovod官方API,若用户脚本使用了其他第三方API,当前工具暂不支持迁移。例如:
      1. 不支持原生Keras API,但由于Tensorflow官方API中包括了Tensorflow的Keras API,因此支持Tensorflow的Keras API。
      2. 不支持CuPy API,即便原始脚本能在GPU上运行成功,但不能保证在昇腾AI处理器运行成功。
    3. 原始脚本中的TensorFlow模块和Horovod模块最好按照如下方式引用,否则工具迁移后,无法生成准确的迁移报告(但并不影响脚本迁移)。
      import tensorflow as tf
      import tensorflow.compat.v1 as tf
      import horovod.tensorflow as hvd
    4. 当前版本不支持float64/complex64/complex128/DT_VARIANT数据类型。
    5. 当前不支持tf.keras和原生Keras的Loss Scale功能迁移。
    6. 当前不支持动态shape网络迁移。

GPU训练复现

昇腾AI处理器进行模型迁移之前,建议用户事先准备好基于TensorFlow 1.15开发的训练模型以及配套的数据集,并要求在GPU或CPU上跑通,精度收敛,且达到预期精度和性能要求。同时记录相关精度和性能指标,用于后续在昇腾AI处理器进行精度和性能对比。

迁移操作步骤

  1. 安装依赖。

    pip3 install pandas

    pip3 install xlrd==1.2.0

    pip3 install openpyxl

    pip3 install tkintertable

    pip3 install google_pasta

  2. 训练脚本扫描和自动迁移。
    该工具支持在Linux或Windows环境进行脚本迁移。
    • Linux环境操作步骤:

      进入迁移工具所在目录,例如“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_bridge/convert_tf2npu/”,执行命令可同时完成脚本扫描和自动迁移,例如:

      python3 main.py -i /root/models/official/resnet
      表1 参数说明

      参数名

      参数说明

      可选/必选

      -i

      被迁移的原始脚本路径,当前该路径仅支持配置为文件夹,不支持单个文件。

      说明:
      • 工具仅对-i参数指定的文件夹下的.py文件进行扫描和迁移。
      • 如果用户原始脚本跨目录存放,则建议放到一个目录执行迁移命令,或者在对应目录下依次执行迁移命令。

      必选

      -o

      指定迁移后的脚本路径,该路径不能为原始脚本路径的子目录。

      该参数可选,如果不指定,默认生成在当前路径下,例如output_npu_20210401150929。

      可选

      -r

      指定生成的迁移报告路径,该路径不能为原始脚本路径的子目录。

      该参数可选,如果不指定,默认生成在当前路径下,例如report_npu_20210401150929。

      可选

      -m

      Python执行入口文件。

      如果原始脚本使用了tf.keras/hvd接口,且脚本中没有main函数,由于迁移工具无法识别入口函数,因此无法进行NPU资源初始化,以及NPU训练相关配置。

      对于以上场景,需要通过-m参数指定Python执行的入口文件,以便工具可以将用户脚本进行彻底迁移,保证后续训练的顺利执行。

      配置示例:-m /root/models/xxx.py

      可选

      -d

      如果原始脚本支持分布式训练,需要指定原始脚本使用的分布式策略,便于工具对分布式脚本进行自动迁移。取值:

      • tf_strategy:表示原始脚本使用tf.distribute.Strategy分布式策略
      • horovod:表示原始脚本使用horovod分布式策略

      目前session run分布式脚本无法彻底进行自动迁移,如需支持请参考Session run脚本支持分布式训练

      分布式必选

      通过python3 main.py -h可以获取迁移工具使用帮助。

    • Windows环境操作步骤:
      python3 main_win.py

      在弹出的窗口根据界面提示进行操作。

  3. 迁移过程中,打印如下信息,表明正在扫描相关文件进行脚本迁移。
    图1 迁移过程信息
  4. 迁移结束后,生成迁移后的脚本,以及迁移报告。
    图2 迁移结束信息