转换算子是一种特殊的算子,用于转换Tensor的Data Type与Format等信息,使得图中上下游节点能够被正常处理。
图经过一系列处理后,如下沉、优化、融合等,节点中的Tensor信息可能发生了变化,所以需要插入转换算子使图能够继续被正常处理。在网络拓扑图进行编译时,FE会自动插入转换算子,无需用户手工进行上下游算子间的格式转换。
Tensorflow网络中Conv2d、Matmul算子使用的变量format为HWCN,其他算子使用变量format为NCHW或NHWC。
AI Core模块中Conv2d、Matmul算子使用变量format为FZ,其他算子使用变量format为NC1HWC0。
AI CPU模块中的TF Ops使用的format与Tensorflow网络一致。
网络运行时,不同的算子在不同的模块执行,涉及到Format的转换如下。
有些昇腾AI处理器的算子仅支持FP16类型的数据,当输入变量的数据类型为FP32时,需要在变量与算子间添加数据类型转换算子。
为优化变量更新,训练网络中新增一个变量算子,其数据类型为FP16,使用方式如下:
正向与反向计算时,直接使用FP16变量参与计算。
梯度更新时,将FP32与FP16变量同时参与计算,其中FP32数据作为基准数据。