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:
   ```
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 2, 2, 
1, 1, 1, 1, 32, 1, False)
     input = ops.torchvision.deform_conv2d(x, _1, argument_2, mask, bias, 1, 1, 
1, 1, 1, 1, 32, 1, False)
     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