前言
描述本手册的读者对象,TensorFlow 1.15模型迁移的全流程,以及使用本手册的一些注意点。
读者对象
本文档适用于AI算法工程师,用于将基于TensorFlow 1.15的Python API开发的网络脚本迁移到NPU上执行。当前NPU支持TensorFlow 1.15的三种API开发的网络脚本迁移:分别是Estimator,Session,Keras。
掌握以下经验和技能可以更好地理解本文档:
- 熟悉CANN软件基本架构以及特性。
- 熟悉TensorFlow 1.15的API。
- 对机器学习、深度学习有一定的了解,熟悉训练网络的基本知识与流程。
- 具有熟练的Python语言编程能力。
支持的产品
- Ascend 950PR/Ascend 950DT
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
- Atlas A2 训练系列产品/Atlas A2 推理系列产品
- Atlas 训练系列产品
- Atlas 推理系列产品(仅支持在线推理特性)
使用前须知
- 在NPU进行模型迁移之前,建议用户事先准备好基于TensorFlow 1.15开发的训练模型以及配套的数据集,并要求在GPU或CPU上运行通过,达到预期精度和性能要求,同时记录相关精度和性能指标,用于后续在NPU进行精度和性能对比。
- 本文中的代码片段仅为示例,用户使用时请注意修改适配。
系统约束与限制
-
该文档仅配套TensorFlow 1.15版本使用。
-
当前版本不支持float64、complex64、complex128、DT_VARIANT数据类型。
-
目前系统支持的数据format主要有NCHW、NHWC、NC、HWCN、CN。
-
条件分支、循环分支只支持tf.cond、tf.while_loop、tf.case。
-
多卡训练时,NPURunConfig不支持tf.estimator.RunConfig中的配置参数save_checkpoints_secs。
-
多卡训练时,不支持仅保存单卡的Summary信息(tf.summary接口)。
-
针对Atlas 训练系列产品,算子不支持inf/nan输入。
-
数据预处理约束:当前不支持queue方式读取数据,仅支持dataset和placeholder方式。
-
如果使用python的多进程包multiprocessing创建多进程,请不要使用fork方法,建议使用forkserver方法。
因为在Python3.8~Python3.11版本中如果使用fork方法,在创建子进程时可能会复制主进程的锁状态,而在子进程里再触发获取锁时,就会导致死锁,进而导致业务进程卡死。