深度学习 工具实现的Op算子 融合功能

 

 

https://support.huawei.com/enterprise/zh/doc/EDOC1100234052/74beb2a9

 

 

工具实现的融合功能

当前该工具主要实现的融合功能,分为如下几类:

  • Conv+BN融合:昇腾模型压缩工具在量化前会对模型中的"Conv2D+BatchNorm"结构做Conv+BN融合,融合后的"BatchNorm"层会被删除。
  • Depthwise_Conv+BN融合:昇腾模型压缩工具在量化前会对模型中的"DepthwiseConv2dNative+BatchNorm"结构做Depthwise_Conv+BN融合,融合后的"BatchNorm"层会被删除。
  • OP+(BiasAdd)+Mul融合:昇腾模型压缩工具在量化前会对模型中的“Conv2D/MatMul/DepthwiseConv2dNative/Conv2DBackpropInput+Mul”和“Conv2D/MatMul/DepthwiseConv2d/Conv2DBackpropInput+BiasAdd+Mul”结构做OP+(BiasAdd)+Mul融合,融合后的“Mul”层会被删除。

    该场景下,要求Mul的另外一路输入为Const类型,且shape为空。

  • Group_conv+BN融合:如果模型中使用"Split+多路Conv2D+ ConcatV2(或Concat,且Concat在C轴)"表示Group_conv,昇腾模型压缩工具在量化前会对模型中"Group_conv+BatchNorm"结构做融合,融合后的"BatchNorm"层会被删除。

    BN支持融合的算子类型为FusedBatchNorm, FusedBatchNormV2 和FusedBatchNormV3。

  • MatMul+BN融合:
    • MatMul算子要满足如下条件,并且第二个Reshape算子输出的shape和MatMul输出Tensor shape要一致,示例如图13-32所示。
      • 不带biasadd,format为NHWC,shape不固定
      • 不带biasadd,format为NCHW,shape不固定
      • 不带biasadd,format为NHWC,shape固定
      • 不带biasadd,format为NCHW,shape固定
      • 带biasadd,format为NHWC,shape不固定
      • 带biasadd,format为NCHW,shape不固定
      • 带biasadd,format为NHWC,shape固定
      • 带biasadd,format为NCHW,shape固定
      图13-32 MatMul+BN融合场景
    • BN支持融合的算子类型为FusedBatchNorm, FusedBatchNormV2 和FusedBatchNormV3。
  • BN小算子融合为FusedBatchNormV3大算子:仅训练后量化支持,BN小算子融合为大算子,只支持BN小算子输入为4维的场景。
    昇腾模型压缩工具对tf.keras.layers.BatchNormalization产生的小算子结构的BN进行匹配,并且将匹配到的小算子BN结构替换为大算子的BN结构,具体支持的小算子BN结构的场景如下所示:
 
 
 
 
posted @ 2022-10-28 10:10  sinferwu  阅读(413)  评论(0编辑  收藏  举报