下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

迁移操作

前提条件

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

迁移操作

  1. 安装依赖。

    pip3 install pandas==1.3.5

    pip3 install openpyxl

    pip3 install google_pasta

  2. 训练脚本扫描和自动迁移。

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

    python3 main.py -i /root/models/examples/test -m /root/models/example/test/test.py

    其中main.py为工具入口脚本,参数说明如下所示:

    表1 参数说明

    参数名

    参数说明

    可选/必选

    -i

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

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

    必选

    -o

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

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

    可选

    -r

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

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

    可选

    -m

    Python执行入口文件。

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

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

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

    可选

    -d

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

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

    可选

    -c

    如果在脚本使用了tf.compat.v1 API,控制以Tensorflow 1.x行为执行,需要在执行脚本转换命令时添加-c或者--compat。

    可选

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

    • 迁移过程中,打印如下信息,表明正在扫描相关文件进行脚本迁移。
      图1 迁移过程信息
    • 迁移结束后,生成迁移后的脚本,以及迁移报告。
      图2 迁移结束信息
      • 如果没有生成failed_report.txt,一般迁移后的模型即可直接在昇腾AI处理器执行训练,用户可尝试执行训练,如果训练失败,可详细分析迁移报告,同时酌情修改训练脚本再次训练,如果仍然训练失败,请到昇腾开源社区求助。
      • 如果生成了failed_report.txt,请优先根据报错修改训练脚本,再次执行训练。

迁移报告说明

  • success_report.txt:记录工具对脚本的全部修改点,例如:
    # 表示adain.py第3行新增头文件引用
    /root/models/examples/adain/adain.py:3 import npu_device as npu
    # 表示adain.py第4行新增npu虚拟设备初始化
    /root/models/examples/adain/adain.py:4 npu.open().as_default()
  • failed_report.txt:记录迁移过程中的报错信息以及不支持的api,例如:
    Finish conver file: /root/ast_test/hvd/model_lib.py
    /root/ast_test/hvd/test.py:3, NPU Unsupport API: hvd.allreduce
  • api_analysis_report.xlsx:为API支持度分析报告,用户可以筛选“不支持API单独分析,并根据修改建议修改训练脚本。
    图3 API支持度分析报告举例
    表2 工具迁移API支持度说明

    工具迁移API支持度

    说明

    支持(无需迁移)

    此类API在昇腾AI处理器上绝对支持,无需适配修改。

    例如"tf.abs"等接口,在昇腾AI处理器上能够完全支持,不需要迁移。

    工具迁移后API功能支持

    工具迁移后,该API在昇腾AI处理器上可以支持。

    工具迁移后训练功能打通

    工具迁移后,能够保证在昇腾AI处理器训练执行成功,但原有API功能可能不完全支持。

    例如"tf.compat.v1.config.experimental.set_memory_growth"接口,它的作用一般是将所有GPU设置为仅在需要时申请显存空间,在昇腾AI处理器上训练时,该接口实际并不生效。

    因此,迁移工具会直接return返回None,从而保证在昇腾AI处理器上训练正常执行。

    "tf.compat.v1.config.experimental.set_memory_growth" --> 直接return返回None。

    不支持(不影响迁移,无需干预)

    此类API在昇腾AI处理器上不支持,但不影响脚本执行,无需用户干预。

    例如"tf.compat.v1.config.experimental.get_memory_growth"接口,由于工具会将"tf.compat.v1.config.experimental.set_memory_growth"直接return返回None,因此对应的get接口也不会影响脚本在昇腾AI处理器上的执行,即便出现这个接口,用户也无需干预。

    不支持(无迁移方案,建议不使用)

    此类API在昇腾AI处理器上不支持,且当前暂无具体迁移方案,建议您不要使用,否则会引起训练失败。

    例如"tf.distribute.TPUStrategy"等TPU相关接口,需通过Google TPU设备执行,昇腾AI处理器上不支持,建议用户不要使用。

    废弃类

    此类API在TensorFlow 2.6版本已经废弃,建议用户使用TensorFlow官网推荐的API,否则可能会引起训练失败。

    例如"tf.compat.v1.layers.conv3d "等接口。此类API在TensorFlow 2.6版本已经废弃,建议用户使用TensorFlow官网推荐的API,否则可能会引起训练失败。

    分析中

    此类API在昇腾AI处理器中的支持度未知,正在分析中。

  • api_brief_report.txt:汇总脚本中API支持度统计结果,例如:
    # 未去重的统计结果,分类和API支持度表中的一致
     1.In brief: Total API: 231, in which Support: 222, Unsupport: 2,No operator is involved: 0, Analysing: 0 
     # 去重后的统计结果,分类和API支持度表中的一致
     2.After eliminate duplicate: Total API: 98, in which Support: 92, Unsupport or recommended: 1,No operator is involved: 0, , Analysing: 0
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词