[Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(4)

发布时间:2024年01月12日

[Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(4)

简介

现在主要用于通过实操进行onnx简化库的每种pass的特性和效果。因为Pass实在太多,因此这里挑了一些效果显著的Pass进行呈现。

左边的是原始模型,右边的是特定Pass优化后的模型

OnnxOptimizer各Pass的实操和特性说明

adjust_add

  • 前:常量输入是A,动态输入是B
  • 后:常量输入是B, 动态输入是A
  • 特性:把动态输入变成Add算子的第一个input
    在这里插入图片描述在这里插入图片描述

eliminate_common_subexpression

  • 前:含有两个公共的表达式Y(Mul(X,Sigmoid(X)))
  • 后:合并只有一个
  • 特性:合并公共的结构

在这里插入图片描述在这里插入图片描述

eliminate_if_with_const_cond

  • 前:含有If算子,存在子图
  • 后:没有If算子,子图被暴露
  • 特性:cond确定的If算子被去除

请添加图片描述请添加图片描述

eliminate_nop_cast

  • 前:有一个Cast算子,to=float32,input_dtype=float32
  • 后:没有Cast算子
  • 特性:to=input_dtype的Cast被消除

请添加图片描述在这里插入图片描述

eliminate_nop_flatten

  • 前:存在Flatten算子
  • 后:没有Flatten算子
  • 特性:对shape不起作用的Flatten算子被消除

在这里插入图片描述在这里插入图片描述

eliminate_nop_monotone_argmax

  • 前:存在Y=ArgMax(Exp(X))这样的结构
  • 后:只有Y=ArgMax(X)
  • 特性:类似于Exp,只要是输出/输入是正相关的激活函数接入ArgMax算子后,该激活函数可以被消除而不影响结果

在这里插入图片描述在这里插入图片描述

eliminate_nop_with_unit

  • 前:存在很多乘1.0、加0.0等无效操作
  • 后:去除了很多无效的操作
  • 特性:消除掉同0并的And、同1乘的Mul、同0或的Or、同0加的Add、减0的Sub、除1的Div、方1的Pow、 无效的Concat

在这里插入图片描述在这里插入图片描述

eliminate_shape_gather

  • 前:Y=Gather(Shape(X))
  • 后:Y=2
  • 特性:X的Shape已知,那么Y就是已知的。

在这里插入图片描述在这里插入图片描述

fuse_add_bias_into_conv

  • 前:B=Add(Conv2d(X,Y), A)
  • 后:B=Conv2d(X,Y,A)
  • 特性:把Add常量融合进Conv2d中

在这里插入图片描述在这里插入图片描述

fuse_bn_into_conv

  • 前:Y=BN(Conv2d(X))
  • 后:Y=Conv2d(X)
  • 特性:把BN融合进Conv2d中,主要因为重构了Conv2d的weight和bias

在这里插入图片描述在这里插入图片描述

fuse_consecutive_concats

  • 前:存在很多axes一致的连续concat操作
  • 后:只有一个concat
  • 特性:合并很多axes一致的连续concat操作为一个

在这里插入图片描述在这里插入图片描述

fuse_consecutive_log_softmax

  • 前:Z=log(softmax(X))
  • 后:X=logsoftmax(X)
  • 特性:合并算子成为一个算子

在这里插入图片描述在这里插入图片描述

fuse_qkv

  • 前:普通的产生qkv的结构,拥有三个矩阵乘
  • 后:合并为一个矩阵乘,后续用split分开
  • 特性:对qkv结构特定优化

在这里插入图片描述在这里插入图片描述

fuse_transpose_into_gemm

  • 前:存在transpose执行矩阵转置操作
  • 后:转置操作被gemm的transA/B属性替代
  • 特性:消除transpose算子

在这里插入图片描述在这里插入图片描述

总结

结束了,已经搞定了onnx官方的简化库的基本细节了。后面再续其他有趣的东东。
文章来源:https://blog.csdn.net/Pengcode/article/details/135555551
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。