模型计算图图鉴

10 个不同结构范式的模型,每个给出 ONNX 原始图 与 TPU-MLIR top 图层 两种视图, 配结构统计与读图要点。选型覆盖:链式 CNN、残差、Inception、Fire、深度可分离、分组卷积、 MBConv、目标检测、Transformer 编码器、LLM 解码层。

怎么看这两张图

节点 = 算子,箭头 = 张量流向。ONNX 图是模型导出时的原始算子(权重隐藏); MLIR 图是 tpu-mlir 把 ONNX 导入为 top 方言后的样子(权重画成 top.Weight 节点)。 两边节点名(loc)一致,可以逐节点对照。

为什么 MLIR 节点数会变

导入时会做常量折叠与算子融合:ReLU 融进 Conv(do_relu)、BN 融成 Scale、 SiLU 从 Sigmoid+Mul 融合成单个算子、动态 Shape 运算被静态化。所以 MLIR 图通常更「短」,也更接近硬件视角。

三个结构统计

深度 = 最长路径长度(串行程度);分支点 = 扇出 ≥2 的节点; 汇合点 = 扇入 ≥2 的节点(Add/Concat/Sum)。链式网络三者是「深、0、0」, 残差/多分支网络则会出现大量分叉-汇合回路。

卷积 Conv池化 Pool激活 Relu/Clip归一化 Norm矩阵乘 MatMul逐元素 Add/Mul拼接 Concat/Split形状变换 Reshape/Transpose归约/Softmax量化/Cast其它

横向对比:结构签名一眼区分

模型范式ONNX 节点深度分支点汇合点分组卷积结构签名
VGG-19纯卷积链4747000无分叉的长链
ResNet-50残差17417016160Add 回路 ×16
GoogLeNetInception14362990Concat 汇合 ×9
SqueezeNetFire6650880Concat 汇合 ×8
MobileNetV2Depthwise+残差1051031112171×1→DW3×3→1×1
ShuffleNet分组卷积203200161648Reshape/Transpose 重排
EfficientNet-Lite4MBConv188188232330DW 卷积密集堆叠
YOLOv5s检测3921901231350Concat ×41 + 3 尺度输出
BERT-SQuADTransformer11676811453010MatMul/Softmax + 残差
Qwen3.5 blockLLM 解码层73*—11*24*0RMSNorm/RoPE/SiLU

* Qwen 行为 MLIR 图统计(该层无 ONNX);“深度”依赖 ONNX 拓扑,故留空。

01

VGG-19 纯卷积 · 链式堆叠

model-zoo: vgg19-7.onnx · 1×3×224×224 → 1×1000
ONNX 节点47
MLIR 节点63
深度47
分支点0
汇合点0
分组卷积0
权重节点38
分辨率阶段(按特征图尺寸切分)
224×224
4 ops
Conv×2 Relu×2
112×112
5 ops
Conv×2 Relu×2 MaxPool×1
56×56
9 ops
Conv×4 Relu×4 MaxPool×1
28×28
9 ops
Conv×4 Relu×4 MaxPool×1
14×14
9 ops
Conv×4 Relu×4 MaxPool×1
7×7
1 ops
MaxPool×1
ONNX 算子直方图(前 8)
Relu18
Conv16
MaxPool5
Flatten3
Gemm3
Dropout2
ONNX 计算图 在新标签打开 →
vgg19 graph
MLIR top 计算图 在新标签打开 →
vgg19 graph
02

ResNet-50 v2 残差连接 · 跨层短路

model-zoo: resnet50-v2-7.onnx · 1×3×224×224 → 1×1000
ONNX 节点174
MLIR 节点215
深度170
分支点16
汇合点16
分组卷积0
权重节点124
分辨率阶段(按特征图尺寸切分)
224×224
1 ops
BatchNormalization×1
112×112
3 ops
Conv×1 BatchNormalization×1 Relu×1
56×56
37 ops
BatchNormalization×11 Relu×11 Conv×11 Add×3
28×28
41 ops
Conv×13 BatchNormalization×12 Relu×12 Add×4
14×14
61 ops
Conv×19 BatchNormalization×18 Relu×18 Add×6
7×7
28 ops
Conv×9 BatchNormalization×8 Relu×8 Add×3
1×1
1 ops
GlobalAveragePool×1
ONNX 算子直方图(前 8)
Conv53
BatchNormalization51
Relu50
Add16
MaxPool1
GlobalAveragePool1
Reshape1
Gemm1
ONNX 计算图 在新标签打开 →
resnet50 graph
MLIR top 计算图 在新标签打开 →
resnet50 graph
03

GoogLeNet (Inception v1) Inception · 多分支并行

model-zoo: googlenet-9.onnx · 1×3×224×224 → 1×1000
ONNX 节点143
MLIR 节点202
深度62
分支点9
汇合点9
分组卷积0
权重节点116
分辨率阶段(按特征图尺寸切分)
112×112
2 ops
Conv×1 Relu×1
56×56
7 ops
LRN×2 Conv×2 Relu×2 MaxPool×1
28×28
29 ops
Conv×12 Relu×12 MaxPool×3 Concat×2
14×14
71 ops
Conv×30 Relu×30 MaxPool×6 Concat×5
7×7
29 ops
Conv×12 Relu×12 MaxPool×3 Concat×2
1×1
2 ops
AveragePool×1 Dropout×1
ONNX 算子直方图(前 8)
Conv57
Relu57
MaxPool13
Concat9
LRN2
AveragePool1
Dropout1
Reshape1
ONNX 计算图 在新标签打开 →
googlenet graph
MLIR top 计算图 在新标签打开 →
googlenet graph
04

SqueezeNet 1.1 Fire 模块 · 先压后扩

model-zoo: squeezenet1.1-7.onnx · 1×3×224×224 → 1×1000
ONNX 节点66
MLIR 节点91
深度50
分支点8
汇合点8
分组卷积0
权重节点52
分辨率阶段(按特征图尺寸切分)
111×111
2 ops
Conv×1 Relu×1
55×55
15 ops
Conv×6 Relu×6 Concat×2 MaxPool×1
27×27
15 ops
Conv×6 Relu×6 Concat×2 MaxPool×1
13×13
32 ops
Conv×13 Relu×13 Concat×4 MaxPool×1
1×1
1 ops
AveragePool×1
ONNX 算子直方图(前 8)
Conv26
Relu26
Concat8
MaxPool3
Dropout1
AveragePool1
Reshape1
ONNX 计算图 在新标签打开 →
squeezenet graph
MLIR top 计算图 在新标签打开 →
squeezenet graph
05

MobileNetV2 深度可分离卷积 · 倒残差

model-zoo: mobilenetv2-12.onnx · 1×3×224×224 → 1×1000
ONNX 节点105
MLIR 节点69
深度103
分支点11
汇合点12
分组卷积17
权重节点6
分辨率阶段(按特征图尺寸切分)
112×112
7 ops
Conv×4 Clip×3
56×56
11 ops
Conv×6 Clip×4 Add×1
28×28
17 ops
Conv×9 Clip×6 Add×2
14×14
40 ops
Conv×21 Clip×14 Add×5
7×7
22 ops
Conv×12 Clip×8 Add×2
1×1
1 ops
GlobalAveragePool×1
ONNX 算子直方图(前 8)
Conv52
Clip35
Add10
GlobalAveragePool1
Shape1
Constant1
Gather1
Unsqueeze1
ONNX 计算图 在新标签打开 →
mobilenetv2 graph
MLIR top 计算图 在新标签打开 →
mobilenetv2 graph
06

ShuffleNet 分组卷积 · 通道重排

model-zoo: shufflenet-9.onnx · 1×3×224×224 → 1×1000
ONNX 节点203
MLIR 节点222
深度200
分支点16
汇合点16
分组卷积48
权重节点100
分辨率阶段(按特征图尺寸切分)
112×112
3 ops
Conv×1 BatchNormalization×1 Relu×1
56×56
4 ops
MaxPool×1 Conv×1 BatchNormalization×1 Relu×1
56×56
1 ops
Reshape×1
28×28
10 ops
Conv×3 BatchNormalization×3 Relu×2 AveragePool×1
28×28
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
28×28
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
28×28
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
28×28
1 ops
Reshape×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 AveragePool×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
14×14
10 ops
Conv×3 BatchNormalization×3 Relu×2 Reshape×1
ONNX 算子直方图(前 8)
Conv49
BatchNormalization49
Relu33
Reshape33
Transpose16
Sum13
AveragePool4
Concat3
ONNX 计算图 在新标签打开 →
shufflenet graph
MLIR top 计算图 在新标签打开 →
shufflenet graph
07

EfficientNet-Lite4 MBConv · 复合缩放

model-zoo: efficientnet-lite4-11.onnx · 1×224×224×3 (NHWC) → 1×1000
ONNX 节点188
MLIR 节点298
深度188
分支点23
汇合点23
分组卷积30
权重节点180
分辨率阶段(按特征图尺寸切分)
224×224
1 ops
Transpose×1
112×112
8 ops
Conv×4 Clip×3 BatchNormalization×1
56×56
24 ops
Conv×12 Clip×8 Add×3 BatchNormalization×1
28×28
24 ops
Conv×12 Clip×8 Add×3 BatchNormalization×1
14×14
72 ops
Conv×36 Clip×24 Add×10 BatchNormalization×2
7×7
54 ops
Conv×27 Clip×18 Add×7 BatchNormalization×2
1×1
1 ops
AveragePool×1
ONNX 算子直方图(前 8)
Conv91
Clip61
Add24
BatchNormalization7
Transpose1
AveragePool1
Squeeze1
MatMul1
ONNX 计算图 在新标签打开 →
efficientnet graph
MLIR top 计算图 在新标签打开 →
efficientnet graph
08

YOLOv5s 单阶段目标检测

本地: model_yolov5s/yolov5s.onnx · 1×3×640×640 → 3 个尺度 (80/40/20)
ONNX 节点392
MLIR 节点268
深度190
分支点123
汇合点135
分组卷积0
权重节点120
分辨率阶段(按特征图尺寸切分)
?
197 ops
Conv×58 Sigmoid×57 Mul×57 Concat×13
?
1 ops
Conv×1
?
1 ops
Conv×1
ONNX 算子直方图(前 8)
Mul75
Conv60
Sigmoid60
Concat41
Unsqueeze30
Reshape24
Shape21
Expand12
ONNX 计算图 在新标签打开 →
yolov5s graph
MLIR top 计算图 在新标签打开 →
yolov5s graph
09

BERT-SQuAD Transformer 编码器

model-zoo: bertsquad-12.onnx · 4 个 int32 输入 → start/end logits
ONNX 节点1167
MLIR 节点887
深度681
分支点145
汇合点301
分组卷积0
权重节点202
ONNX 算子直方图(前 8)
Unsqueeze191
Mul186
Add185
MatMul98
Reshape71
Cast70
Sub62
Transpose62
ONNX 计算图 在新标签打开 →
bert graph
MLIR top 计算图 在新标签打开 →
bert graph
10

Qwen3.5 解码器层 (block_3) LLM · 因果注意力 + 门控 MLP

本地: qwen3.5_2b 编译产物 (MLIR only) · hidden 1×1024×2048 + KV cache → hidden
MLIR 节点73
边86
分支点11
汇合点24
权重节点29
MLIR 算子直方图(前 8)
Weight29
A16MatMul7
Reshape6
Slice6
RMSNorm4
Gather4
Permute4
Input2
MLIR top 计算图 在新标签打开 →
qwen graph