sacalo edited a comment on issue #8057:
URL: https://github.com/apache/tvm/issues/8057#issuecomment-843956703
Thanks @comaniac I could extract the subgraph of the traced model, after
serializing and deserializing it.
@masahi: I have tried the traced model before serializing it and it doesn't
work neither.
```
def forward(self,
x: Tensor,
argument_2: Tensor) -> Tensor:
_0 = self.norm
_1 = self.weight
out_channels = ops.prim.NumToTensor(torch.size(_1, 0))
_2 = int(out_channels)
_3 = ops.prim.NumToTensor(torch.size(x, 0))
mask = torch.zeros([int(_3), 0], dtype=6, layout=None,
device=torch.device("cpu"), pin_memory=False)
bias = torch.zeros([_2], dtype=6, layout=None, device=torch.device("cpu"),
pin_memory=False)
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2,
1, 1, 1, 1, 32, 1, False)
return (_0).forward(input, )
```
```
graph(%self.1 : __torch__.detectron2.layers.deform_conv.DeformConv,
%x.1 : Tensor,
%argument_2.1 : Tensor):
%25 : bool = prim::Constant[value=0]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:71:0
%56 : Device = prim::Constant[value="cpu"]()
%22 : None = prim::Constant() # :0:0
%8 : int = prim::Constant[value=0]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:66:0
%21 : int = prim::Constant[value=6]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:71:0
%39 : int = prim::Constant[value=2]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:92:0
%40 : int = prim::Constant[value=1]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:92:0
%41 : int = prim::Constant[value=32]() #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:92:0
%4 :
__torch__.detectron2.layers.batch_norm.___torch_mangle_35.FrozenBatchNorm2d =
prim::GetAttr[name="norm"](%self.1)
%6 : Tensor = prim::GetAttr[name="weight"](%self.1)
%9 : int = aten::size(%6, %8) #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:66:0
%out_channels.1 : Tensor = prim::NumToTensor(%9) # :0:0
%13 : int = aten::Int(%out_channels.1)
%15 : int = aten::size(%x.1, %8) #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:71:0
%16 : Tensor = prim::NumToTensor(%15) # :0:0
%19 : int = aten::Int(%16)
%20 : int[] = prim::ListConstruct(%19, %8)
%mask.1 : Tensor = aten::zeros(%20, %21, %22, %56, %25) #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:71:0
%28 : int[] = prim::ListConstruct(%13)
%bias.1 : Tensor = aten::zeros(%28, %21, %22, %56, %25) #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:74:0
%input.1 : Tensor = torchvision::deform_conv2d(%x.1, %6, %argument_2.1,
%mask.1, %bias.1, %39, %39, %40, %40, %40, %40, %41, %40, %25) #
./venv3/lib/python3.8/site-packages/torchvision/ops/deform_conv.py:92:0
%46 : Tensor = prim::CallMethod[name="forward"](%4, %input.1) # :0:0
return (%46)
```
and these are all the instances where modules calls the "deform_conf2d"
function:
```
model.backbone.bottom_up.res3.0.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.1.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.2.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.3.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.4.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.5.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.6.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res3.7.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.0.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.1.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.2.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.3.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.4.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.5.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.6.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.7.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.8.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.9.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.10.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.11.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.12.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.13.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.14.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.15.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.16.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.17.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.18.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.19.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.20.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.21.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.22.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.23.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.24.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.25.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.26.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.27.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.28.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.29.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.30.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.31.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.32.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.33.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.34.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res4.35.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res5.0.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res5.1.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
model.backbone.bottom_up.res5.2.conv2
input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1,
1, 1, 1, 1, 32, 1, False)
```
Hope it helps
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]