昇腾社区首页
中文
注册

TF Adapter简介

TF Adapter为加速Tensorflow图在昇腾AI处理器上执行的Tensorflow插件。

用户Python接口

【接口简介】

TF Adapter提供了适配Tensorflow框架的用户Python接口,用户可以基于Tensorflow框架进行训练脚本开发。主要包括:
  1. 扩展Estimator API,提供在昇腾AI处理器上进行高效训练的易用API;
  2. 提供分布式训练API,例如npu_distributed_optimizer_wrapper ,提供简便的基于RING-ALLREDUCE的数据并行分布式训练架构接口;
  3. 提供子图下沉、预处理下沉、profiling等配置项。

详细接口介绍请参考TF Adapter接口参考

【获取路径】

“tfplugin安装目录/tfplugin/latest/python/site-packages/npu_bridge/convert_tf2npu/”

【头文件引用】

使用接口前,可以新增以下头文件引用,用于导入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/framework/built-in/tensorflow/npu_supported_ops.json中的算子信息识别哪些算子可下沉到昇腾AI处理器。文件示例:

  "Abs": {
    "isGray": false,
    "isHeavy": false
  },
  • 出现在json文件中的算子,在全下沉模式下都会下沉;
  • isGray为true的算子,在混合计算模式下不下沉,当前版本isGray全部为false,即混合计算模式下做下沉处理;
  • isHeavy表示性能敏感的计算密集型算子,当该算子在Shape推导时为unknow时,TF_Adapter会拦截子图下沉。

除此之外,混合计算场景下,用户还可通过接口自行指定不下沉的算子,更多介绍请参考混合计算