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]


Reply via email to