You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2020/10/05 08:04:25 UTC

[GitHub] [incubator-tvm] m3at opened a new issue #6624: [Relay] Module mutated in-place

m3at opened a new issue #6624:
URL: https://github.com/apache/incubator-tvm/issues/6624


   Following [discussion on the forum](https://discuss.tvm.apache.org/t/unable-to-build-relay-function-twice/7987) I'm opening this issue for what appear to be a bug when running `relay.build`, with potentially `nn.pad` being mutated in-place.
   
   In practice the issue can be side-stepped by making a `deepcopy` of the module before building. This issue is to find which pass is potentially mutating the module in-place.
   
   Steps to reproduce:
   
   ```sh
   # Obtain the model
   python3 -m pip install geffnet
   wget "https://github.com/rwightman/gen-efficientnet-pytorch/blob/master/onnx_export.py"
   python3 onnx_export.py ./b4.onnx --model="tf_efficientnet_b4_ns" --img-size=380
   ```
   
   ```python
   import numpy as np
   import onnx
   import tvm
   from tvm import relay
   from tvm.contrib import graph_runtime
   
   # Prepare parameters
   input_shape = [1, 3, 380, 380]
   example_input = np.random.randn(*input_shape).astype(np.float32)
   target = "llvm -mcpu=core-avx2"
   ctx = tvm.cpu(0)
   
   # Get model from ONNX
   onnx_model = onnx.load("./b4.onnx")
   mod, params = relay.frontend.from_onnx(
       onnx_model, {"input0": input_shape},
   )
   
   # Build module
   with tvm.transform.PassContext(opt_level=3):
       graph_module = relay.build(mod, target=target, target_host=target, params=params)
   
   # Run, no issue
   runtime_module = graph_runtime.GraphModule(graph_module['default'](ctx))
   runtime_module.set_input(key="input0", value=tvm.nd.array(example_input))
   runtime_module.run()
   tvm_output = runtime_module.get_output(0).asnumpy()
   
   # Build again, or use autotvm.task.extract_from_program
   # Error (see below)
   with tvm.transform.PassContext(opt_level=3):
       graph_module = relay.build(mod, target=target, target_host=target, params=params
   ```
   
   Relevant part of the error:
   ```
     %45 = multiply(%43, %44);
     %46 = nn.pad(%45, pad_width=[[0, 0], [0, 0], [0, 1], [0, 1], [0, 0]]) an internal invariant was violated while typechecking your program [05:19:37] ../src/relay/op/nn/pad.cc:125: Check failed: data->shape.size() == param->pad_width.size(): There should be as many pad width pairs as shape dimensions but the shape has 4 dimensions and there are 5 pad width pairs.
   ; ;
     %47 = nn.conv2d(%46, meta[relay.Constant][38], strides=[2, 2], padding=[0, 0, 0, 0], groups=144, kernel_size=[3, 3]);
   ```


----------------------------------------------------------------
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:
users@infra.apache.org



[GitHub] [incubator-tvm] aseyboldt commented on issue #6624: [Relay] Module mutated in-place

Posted by GitBox <gi...@apache.org>.
aseyboldt commented on issue #6624:
URL: https://github.com/apache/incubator-tvm/issues/6624#issuecomment-711944589


   I ran into what I think is the same issue: https://discuss.tvm.apache.org/t/incorrect-gradient-with-relay-transform-gradient/8105
   This can lead to silently incorrect results in the gradients.


----------------------------------------------------------------
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:
users@infra.apache.org



[GitHub] [incubator-tvm] electriclilies commented on issue #6624: [Relay] Module mutated in-place

Posted by GitBox <gi...@apache.org>.
electriclilies commented on issue #6624:
URL: https://github.com/apache/incubator-tvm/issues/6624#issuecomment-708048388


   I am getting the exact same issue as you. It seems like the problem is being caused by the AlterOpLayout pass. 
   
   For me, disabling the pass by changing 
   `with tvm.transform.PassContext(opt_level=3):` to `with tvm.transform.PassContext(opt_level=3, disabled_pass=["AlterOpLayout"):` makes the problem go away. 


----------------------------------------------------------------
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:
users@infra.apache.org