Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] [torch] Expected Array[PrimExpr], but got Array[index 1: relay.Constant] #14794

Closed
jikechao opened this issue May 7, 2023 · 0 comments
Closed
Labels
needs-triage PRs or issues that need to be investigated by maintainers to find the right assignees to address it type: bug

Comments

@jikechao
Copy link
Contributor

jikechao commented May 7, 2023

In the latest TVM (v.0.13.dev0). TVM load the torch model failed and threw "Expected Array[PrimExpr], but got Array[index 1: relay.Constant]" This bug is similar to this PR

What caused this crash? Wish for your comments. Thanks!

Expected behavior

Load successfully!

Actual behavior

File "test.py", line 11, in <module>
    mod, params = relay.frontend.from_pytorch(trace, input_shapes)
  File "/workplace/software/tvm/tvm_/python/tvm/relay/frontend/pytorch.py", line 5002, in from_pytorch
    outputs = converter.convert_operators(operator_nodes, outputs, ret_name)
  File "/workplace/software/tvm/tvm_/python/tvm/relay/frontend/pytorch.py", line 4260, in convert_operators
    _get_input_types(op_node, outputs, default_dtype=self.default_dtype),
  File "/workplace/software/tvm/tvm_/python/tvm/relay/frontend/pytorch.py", line 1099, in adaptive_avg_pool
    return func(data)
  File "/workplace/software/tvm/tvm_/python/tvm/relay/frontend/pytorch.py", line 1094, in func
    return op(x, output_size=output_size)
  File "/workplace/software/tvm/tvm_/python/tvm/relay/op/nn/nn.py", line 3388, in adaptive_avg_pool2d
    return _make.adaptive_avg_pool2d(data, output_size, layout, out_layout)
  File "/workplace/software/tvm/tvm_/python/tvm/_ffi/_ctypes/packed_func.py", line 237, in __call__
    raise get_last_ffi_error()
tvm._ffi.base.TVMError: Traceback (most recent call last):
  4: TVMFuncCall
  3: _ZN3tvm7runtime13Pac
  2: tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String)>(tvm::RelayExpr (*)(tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*) const
  1: tvm::runtime::TVMMovableArgValueWithContext_::operator tvm::runtime::Array<tvm::PrimExpr, void><tvm::runtime::Array<tvm::PrimExpr, void> >() const
  0: _ZN3tvm7runtime6detail
  6: TVMFuncCall
  5: _ZN3tvm7runtime13Pac
  4: tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String)>(tvm::RelayExpr (*)(tvm::RelayExpr, tvm::runtime::Array<tvm::PrimExpr, void>, tvm::runtime::String, tvm::runtime::String), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*) const
  3: tvm::runtime::TVMMovableArgValueWithContext_::operator tvm::runtime::Array<tvm::PrimExpr, void><tvm::runtime::Array<tvm::PrimExpr, void> >() const
  2: tvm::runtime::TVMMovableArgValue_::operator tvm::runtime::Array<tvm::PrimExpr, void><tvm::runtime::Array<tvm::PrimExpr, void>, void>() const
  1: tvm::runtime::Array<tvm::PrimExpr, void> tvm::runtime::TVMPODValue_::AsObjectRef<tvm::runtime::Array<tvm::PrimExpr, void> >() const
  0: _ZN3tvm7runtime6detail
  File "/workplace/software/tvm/tvm_/include/tvm/runtime/packed_func.h", line 777
TVMError: In function relay.op.nn._make.adaptive_avg_pool2d(0: RelayExpr, 1: Array<PrimExpr>, 2: runtime.String, 3: runtime.String) -> RelayExpr: error while converting argument 1: [03:05:14] /workplace/software/tvm/tvm_/include/tvm/runtime/packed_func.h:1866: 
---------------------------------------------------------------
An error occurred during the execution of TVM.
For more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
  Check failed: (!checked_type.defined()) is false: Expected Array[PrimExpr], but got Array[index 1: relay.Constant]

Environment

Any environment details, such as: Operating System, TVM version, etc

Steps to reproduce

import torch
from tvm import relay


m = torch.nn.AdaptiveAvgPool2d((3,None),)
input_data=[torch.randn([1, 3, 5, 6], dtype=torch.float32)]

trace = torch.jit.trace(m, input_data)
input_shapes = [('input0', torch.Size([1, 3, 5, 6]))]

mod, params = relay.frontend.from_pytorch(trace, input_shapes)

Triage

  • frontend:pytorch

cc @shingjan @yelite

@jikechao jikechao added needs-triage PRs or issues that need to be investigated by maintainers to find the right assignees to address it type: bug labels May 7, 2023
@masahi masahi closed this as completed May 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-triage PRs or issues that need to be investigated by maintainers to find the right assignees to address it type: bug
Projects
None yet
Development

No branches or pull requests

2 participants