他的回复:
第二节课笔记:1.模型迁移的原因:高性能AI处理器高效地高速地计算参数量、样本数繁多的模型,大大缩短模型训练的时间可借助异构计算架构CANN的Plugin设配层转换,使TensorFlow和PyTorch等深度学习框架下的模型可以在昇腾AI处理器上训练和推理。模型迁移主要包括:手工迁移和自动迁移2.两种模型迁移方式:自动迁移方式:通过迁移工具对原始脚本进行 AST 语法树扫描,可自动分析原生的 TensorFlow API 在昇腾 AI 处理器上的支持度,并将原始的 TensorFlow训练脚本自动迁移成昇腾 AI 处理器支持的脚本,对于无法自动迁移的 API,可以参考工具输出的迁移报告,对训练脚本进行相应的适配修改。手工迁移方式:算法工程师需要人工分析 TensorFlow 训练脚本中的 API 支持度情况,并且参照文档逐一手工修改不支持的 API,以便在昇腾 AI 处理器上训练,该种方式较为复杂,我们建议大家优先使用自动迁移方式。3.自动迁移详解Ascend平台提供的TensorFlow1.15网络迁移工具,该工具适用于原生的TensorFlow训练脚本迁移场景,分析原生的TensorFlow Python API和Horovod Python API在昇腾AI处理器上的支持度情况,自动将Tensorflow训练脚本自动迁移成昇腾AI支持的脚本。而无法迁移的API,则可对训练脚本进行相应的适配修改。获取:a.CANN软件的“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_bridge/convert_tf2npu/”目录下; b.直接下载convert_tf2npu文件夹到linux或wins环境上使用限制:a.要求原始脚本在GPU/CPU上跑通且精度收敛;b.要求原始脚本仅使用TF1.15官方API和Horovod官方API,不支持原生Keras API和CuPy API; c.脚本迁移最好使用如下方式:import tensorflow as tf import tensorflow.compat.v1 as tf import horovod.tensorflow as hvdd.不支持float64/complex64/complex128/DT_VARIANT数据类型;e.不支持te.keras和原生Keras的Loss Scale功能迁移;f.不支持动态shape网络迁移 。迁移操作步骤:a.安装依赖:pip install pandas xlrd==1.2.0 openpyxl tkintertable goole_pastab.linux环境操作步骤:python3 main.py -i modelfile 参数-i(迁移脚本原始路径)-o指指定迁移后的脚本路径 -r 指定生成的迁移报告路径 -m(python执行入口文件)-d原始脚本支持分布式训练,需要指定分布式策略,其取值为tf_strategy (tf.distribute.Strategy分布式策略)和horovod(horovod策略);-h 获取使用帮助c.windows环境操作步骤:python3 main_win.py启动工具窗口d.迁移结束产生迁移脚本和迁移报告迁移报告说明:success_report.txt:记录脚本的全部修改点 failed_report.txt:记录迁移过程中的报错信息以及不支持的API api_analysis.xlsx:API支持度分析,用户可以筛选“不支持(无迁移方案,建议不使用)”和“废弃类”API单独分析,并根据修改建议修改训练脚本。 api_brief_report.txt:汇总脚本中API支持度统计结果单Device训练:a.配置环境变量 b.执行训练脚本拉起训练过程:python3 /home/xxx.py检查执行结果:a.检查训练过程是否正常,Loss是否收敛 b.训练结束后,一般会生成如下目录和文件:model目录:存放checkpoint文件和模型文件 在脚本执行目录下生成kernel_meta:用于存放算子的.o及.json文件,可用于GE/FE问题定位,默认情况该目录没有文件,可在训练脚本中将运行参数op_debug_level传入3,从而保留.o和.json文件。问题定位:通过日志分析并定位问题,Host侧日志路径~/ascend/log/plog/plog_*.log和Device侧日志路径:~/ascend/log/device-id/device-id_*.log。日志格式:[Level] ModuleName(PID,PName):DateTimeMS [FileName:LineNumber]LogContent ModuleName:系统类报错、数据类处理、GE、FE、TEFUSION、RUNTIME迁移好的TensorFlow训练脚本在裸机环境的多个Device上执行训练,单个Device上对应执行一个训练进程,不支持多个进程在同一个Device上进行训练。如果使用1台训练服务器(Server),要求实际参与集合通信的昇腾AI处理器数目只能为1/2/4/8,且0-3卡和4-7卡各为一个组网,使用2张卡或4张卡训练时,不支持跨组网创建设备集群。如果使用Server集群,即由集群管理主节点+一组训练服务器(Server)组成训练服务器集群,要求参与集合通信的的昇腾AI处理器数目只能为8*n(其中n为参与训练的Server个数,上限为512)。且n为2的指数倍情况下,集群性能最好,建议用户优先采用此种方式进行集群组网。4.手工迁移:迁移流程:模型迁移->模型训练->训练性能提升->训练精度提升->将ckpt模型转换成pb模型手工迁移有:Estimator迁移,keras迁移和sess.run迁移Estimation进行训练脚本开发的流程:数据预处理、模型构建、进行配置、执行训练。keras API和Estimation都属于TF高阶API,提供了方便的构图功能,并对训练、评估、验证、导出都提供了方便的接口。流程:数据预处理、模型搭建、模型编译、模型训练。sess.run API属于TF的低阶API,其灵活性较高,但模型的实现较为复杂。