Closed leandron closed 3 years ago
I think this is happening because the shape of data is accessed by data.shape
, at some point something in TVM changed meaning shape needs to be accessed by data.checked_type.shape
. It looks like the convert layout tests didn't pick this up.
If we agree this is a legitimate issue, I found two places that need fixing:
cc @anijain2305
Thanks @leandron for raising the issue. Your fixes look good to me.
Just to mention, I checked PR #6419 and it completely fixes this issue here, so we can close it once that PR is merged.
Thanks @leandron. This can be closed now.
When using
tvm.relay.transform.ConvertLayout
(in the context of #6302), I'm getting some errors that are not really clear on how they are related to the convert process.It seems
ConvertLayout
it is looking forshape
(this check was introduced in #5284), when trying to find depthwise convolutions, but it doesn't seem to be the case thatshape
is there for some imported models, and might need some fixing. https://github.com/apache/incubator-tvm/blob/4b48d89c79a72f7799606e845bdb1ed938baa115/python/tvm/relay/op/nn/_nn.py#L158-L164This is the error I see, when trying to run
ConvertLayout
on an ONNX model:To reproduce the issue, you can run the script below:
Download resnet50:
Run the ConvertLayout following the script below:
boilerplate to load the ONNX model
model = onnx.load("resnet50-v2-7.onnx") name = model.graph.input[0].name proto_shape = model.graph.input[0].type.tensor_type.shape.dim shape = [d.dim_value for d in proto_shape] shape_dict = {name: shape} mod, params = relay.frontend.from_onnx(model, shape_dict)
converting layout
desired_layouts = {'nn.conv2d': ['NHWC', 'default']} seq = tvm.transform.Sequential([relay.transform.RemoveUnusedFunctions(), relay.transform.ConvertLayout(desired_layouts)])
with tvm.transform.PassContext(opt_level=3): mod = seq(mod)
with relay.build_config(opt_level=3): graph, lib, params = relay.build(mod, "llvm", params=params)