算子优化总结(resnet18中的upsample算子反向为例)
发现问题
模型训练,从输出打印来看,每次迭代耗时约1.03s;
ixprof收集性能数据,看到upsample_bilinear2d_backward_nhwc_out_frame这个kernel耗时占比高达22.56%,推测有可优化空间;
shape获取
获取方式:
1.保存为onnx模型直接查看,有些特殊op无法看到,比如本例中的upsample
2.通过hook获取,需要知道网络结构,和对应的调用kernel的算子的名称,本例中找不到kernel调用函数interpolate在结构中对应的算子名称;
分析模型,interpolate的调用应该是在这个heads结构中的,但是没有具体的算子体现;
3.在模型定义的地方添加打印,获取到如下几种shape,但是存在一个问题,这个模型的upsample算子有两种kernel,
upsample_bilinear