TF Adapter简介
TF Adapter为加速TensorFlow图在昇腾AI处理器上执行的Tensorflow插件。
用户Python接口
【接口简介】
TF Adapter提供了适配TensorFlow框架的用户Python接口,用户可以基于Tensorflow框架进行训练脚本开发。主要包括:
- 扩展Estimator API,提供在昇腾AI处理器上进行高效训练的易用API;
- 提供分布式训练API,例如npu_distributed_optimizer_wrapper,提供简便的基于RING-ALLREDUCE的数据并行分布式训练架构接口;
- 提供子图下沉、预处理下沉、profiling等配置项。
详细接口介绍请参考TF Adapter接口参考。
【获取路径】
“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_bridge”。
【头文件引用】
使用接口前,可以新增以下头文件引用,用于导入NPU相关库。
from npu_bridge.npu_init import *
然后直接使用相关接口:
mnist_classifier=NPUEstimator( model_fn=cnn_model_fn, config=npu_config, model_dir="/tmp/mnist_convert_model" )
也可以通过如下方式导入:
from npu_bridge.estimator.npu.npu_estimator import NPUEstimator
子图拆分优化器
TF Adapter在TensorFlow图执行器扩展子图拆分优化器,子图拆分优化器在TensorFlow图构建、基于设备的图拆分、图优化后执行,识别可下沉的节点,对可下沉节点进行边收缩,使连续的可下沉的节点变为一副子图,在原图上添加一个持有该子图的GEOP算子, GEOP在算子执行时,将子图交由GE引擎执行。
用数据流图描述的完整训练过程时,会包括多个GEOP子图:
- 数据处理图:包含数据读取和数据增强;当包含训练和评估时,产生两张数据处理图,分别对训练数据集和评估数据集进行数据处理;
- 模型初始化图:变量初始化、变量校验、变量广播(分布式场景可选);
- 模型训练图:获取训练数据处理图的输出作为输入数据,按模型定义的网络结构执行前向计算,计算损失,按优化算法计算梯度并更新模型参数;训练过程中的模型保存、log输出也包含在计算图中。上述步骤封装在图中的一个循环体内,按训练配置迭代多次。
- 模型评估图:获取评估数据处理图的输出作为输入数据,按模型定义的网络结构执行前向计算,按精度计算算法计算精度。
全下沉与混合计算
昇腾AI处理器默认采用计算全下沉模式,即所有的计算类算子全部在Device侧执行。针对在计算图中有不支持的算子的场景(例如py_func),为提供灵活性和扩展性,提供混合计算模式,将不支持在Device侧执行的算子留在Host由前端框架执行。
TF Adapter识别资源类算子,在混合计算场景下不下沉,另外通过opp/built-in/framework/tensorflow/npu_supported_ops.json中的算子信息识别哪些算子可下沉到昇腾AI处理器。文件示例:
"Abs": { "isGray": false, "isHeavy": false },
- 出现在json文件中的算子,在全下沉模式下都会下沉;
- isGray为true的算子,在混合计算模式下不下沉,当前版本isGray全部为false,即混合计算模式下做下沉处理;
- isHeavy表示性能敏感的计算密集型算子,当该算子在Shape推导时为unknow时,TF_Adapter会拦截子图下沉。
除此之外,混合计算场景下,用户还可通过接口自行指定不下沉的算子,更多介绍请参考混合计算。
父主题: 入门学习