I am getting the following error when trying to build an ONNX model using relay.build:
Traceback (most recent call last):
File "main_onnx.py", line 49, in <module>
module = relay.build(mod, executor=EXECUTOR, runtime=RUNTIME, target=TARGET, params=params)
File "/local_disk/local_sw/tvm/python/tvm/relay/build_module.py", line 416, in build
graph_json, runtime_mod, params = bld_mod.build(
File "/local_disk/local_sw/tvm/python/tvm/relay/build_module.py", line 154, in build
self._build(mod, raw_targets, executor, runtime, workspace_memory_pools, mod_name)
File "/local_disk/local_sw/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):
109: TVMFuncCall
108: tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
107: tvm::relay::backend::RelayBuildModule::BuildRelay(tvm::IRModule, tvm::runtime::String const&)
106: tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::relay::backend::AOTExecutorCodegenModule::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#2}> >::Call(tvm::runtime::PackedFuncObj const*, tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)
105: tvm::relay::backend::AOTExecutorCodegen::Codegen(tvm::IRModule, tvm::relay::Function, tvm::runtime::String)
104: tvm::transform::Pass::operator()(tvm::IRModule) const
103: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
102: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
101: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
100: tvm::transform::ModulePassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
99: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_8IRModuleES5_NS_9transform11PassContextEEE17AssignTypedLambdaIZNS_5relay3tec11LowerTEPassERKNS0_6StringESt8functionIFvNS_8BaseFuncEEENS_13VirtualDeviceEEUlS5_S7_E_EEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SN_SR_
98: tvm::relay::tec::LowerTE(tvm::IRModule const&, tvm::runtime::String const&, std::function<void (tvm::BaseFunc)>, tvm::VirtualDevice)
97: tvm::transform::Pass::operator()(tvm::IRModule) const
96: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
95: tvm::relay::transform::FunctionPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
94: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_5relay8FunctionES6_NS_8IRModuleENS_9transform11PassContextEEE17AssignTypedLambdaIZNS5_3tec15LowerTensorExprERKNS0_6StringENSD_10TECompilerESt8functionIFvNS_8BaseFuncEEENS_13VirtualDeviceEEUlS6_S7_S9_E_EEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SP_ST_
93: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
92: _ZZN3tvm5relay11ExprFunctorIFNS_9RelayExprERKS2_EE10InitVTableEvENUlRKNS_7r
91: tvm::relay::transform::DeviceAwareExprMutator::VisitExpr_(tvm::relay::FunctionNode const*)
90: tvm::relay::tec::LowerTensorExprMutator::DeviceAwareVisitExpr_(tvm::relay::FunctionNode const*)
89: _ZN3tvm5relay9transform22DeviceAwareExprMutator21DeviceAwareVisit
88: tvm::relay::ExprMutator::VisitExpr_(tvm::relay::FunctionNode const*)
87: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
86: _ZZN3tvm5relay11ExprFunctorIFNS_9RelayExprERKS2_EE10InitVTableEvENUlRKNS_7r
85: tvm::relay::transform::DeviceAwareExprMutator::VisitExpr_(tvm::relay::LetNode const*)
84: tvm::relay::tec::LowerTensorExprMutator::PreVisitLetBinding_(tvm::relay::Var const&, tvm::RelayExpr const&)
83: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
82: _ZZN3tvm5relay11ExprFunctorIFNS_9RelayExprERKS2_EE10InitVTableEvENUlRKNS_7r
81: tvm::relay::transform::DeviceAwareExprMutator::VisitExpr_(tvm::relay::CallNode const*)
80: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
79: _ZZN3tvm5relay11ExprFunctorIFNS_9RelayExprERKS2_EE10InitVTableEvENUlRKNS_7r
78: tvm::relay::transform::DeviceAwareExprMutator::VisitExpr_(tvm::relay::CallNode const*)
77: tvm::relay::tec::LowerTensorExprMutator::DeviceAwareVisitExpr_(tvm::relay::CallNode const*)
76: tvm::relay::tec::LowerTensorExprMutator::MakeLoweredCall(tvm::relay::Function, tvm::runtime::Array<tvm::RelayExpr, void>, tvm::Span, tvm::Target)
75: tvm::relay::tec::TECompilerImpl::Lower(tvm::relay::tec::CCacheKey const&, tvm::runtime::String)
74: tvm::relay::tec::TECompilerImpl::LowerInternal(tvm::relay::tec::CCacheKey const&, std::function<tvm::runtime::String (tvm::runtime::String)>)
73: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::te::Tensor, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
72: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
71: tvm::ScheduleToModule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&)
70: tvm::te::SchedulePostProcToPrimFunc(tvm::runtime::Array<tvm::runtime::ObjectRef, void>, tvm::tir::Stmt, tvm::runtime::Optional<tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer, void, void> >)
69: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
68: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
67: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
66: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
65: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
64: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime9Ob
63: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::SeqStmtNode const*)
62: void tvm::runtime::Array<tvm::tir::Stmt, void>::MutateByApply<tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1}>(tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1})
61: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
60: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
59: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
58: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
57: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
56: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime9Ob
55: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::SeqStmtNode const*)
54: void tvm::runtime::Array<tvm::tir::Stmt, void>::MutateByApply<tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1}>(tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1})
53: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
52: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
51: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
50: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
49: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
48: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime9Ob
47: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::SeqStmtNode const*)
46: void tvm::runtime::Array<tvm::tir::Stmt, void>::MutateByApply<tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1}>(tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1})
45: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
44: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
43: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
42: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::ProducerRealizeNode const*)
41: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
40: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime9Ob
39: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::SeqStmtNode const*)
38: void tvm::runtime::Array<tvm::tir::Stmt, void>::MutateByApply<tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1}>(tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1})
37: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
36: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
35: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::AttrStmtNode const*)
34: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::AttrStmtNode const*)
33: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
32: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
31: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::AttrStmtNode const*)
30: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::AttrStmtNode const*)
29: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
28: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
27: tvm::te::TensorToBufferMapper::VisitStmt_(tvm::tir::AttrStmtNode const*)
26: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::AttrStmtNode const*)
25: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
24: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
23: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::ForNode const*)
22: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
21: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
20: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::AllocateNode const*)
19: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
18: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
17: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::AllocateNode const*)
16: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
15: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime9Ob
14: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::SeqStmtNode const*)
13: void tvm::runtime::Array<tvm::tir::Stmt, void>::MutateByApply<tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1}>(tvm::tir::StmtMutator::Internal::Mutate(tvm::tir::StmtMutator*, tvm::runtime::Array<tvm::tir::Stmt, void> const&)::{lambda(tvm::tir::Stmt const&)#1})
12: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
11: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
10: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::WhileNode const*)
9: tvm::tir::StmtMutator::VisitStmt(tvm::tir::Stmt const&)
8: _ZZN3tvm3tir11StmtFunctorIFNS0_4StmtERKS2_EE10InitVTableEvENUlRKNS_7runtime
7: tvm::tir::StmtMutator::VisitStmt_(tvm::tir::IfThenElseNode const*)
6: tvm::tir::StmtExprMutator::VisitExpr(tvm::PrimExpr const&)
5: _ZZN3tvm3tir11ExprFunctorIFNS_8PrimExprERKS2_EE10InitVTableEvENUlRKNS_7runtime
4: tvm::tir::ExprMutator::VisitExpr_(tvm::tir::GTNode const*)
3: non-virtual thunk to tvm::tir::StmtExprMutator::VisitExpr(tvm::PrimExpr const&)
2: _ZZN3tvm3tir11ExprFunctorIFNS_8PrimExprERKS2_EE10InitVTableEvENUlRKNS_7runt
1: tvm::te::TensorToBufferMapper::VisitExpr_(tvm::tir::ProducerLoadNode const*)
0: tvm::te::TensorToBufferMapper::GetBuffer(tvm::te::Tensor const&, tvm::runtime::String, bool)
File "/local_disk/local_sw/tvm/src/te/schedule/schedule_postproc_to_primfunc.cc", line 143
TVMError:
---------------------------------------------------------------
An error occurred during the execution of TVM.
For more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
Check failed: (allow_alloc) is false: Cannot find the Realization point of tensor Tensor(shape=[], op.name=compile_engine_const)
This is the script I am using to try this:
import os
import numpy as np
import pathlib
import tvm
from tvm import relay
import onnx
onnx_file = "model.int8.onnx"
onnx_model = onnx.load(onnx_file)
input_name = "images"
input_shape = tuple([1,512, 512, 3])
input_dtype = "int8"
print("Importing ONNX model...")
mod, params = relay.frontend.from_onnx(
onnx_model, shape={input_name: input_shape}, dtype=input_dtype
)
RUNTIME = tvm.relay.backend.Runtime("crt", {"system-lib": False})
TARGET = tvm.target.target.Target({"kind": "c"})
EXECUTOR = tvm.relay.backend.Executor("aot",options={'interface-api': 'c','unpacked-api': 1})
print("Building model with TVM...")
with tvm.transform.PassContext(
opt_level=3, config={"tir.disable_vectorize": True}, disabled_pass=["AlterOpLayout"]
):
module = relay.build(mod, executor=EXECUTOR, runtime=RUNTIME, target=TARGET, params=params)
This is related to post 12883, because after getting errors trying to import the TFLite model, I decided to convert it to ONNX and try to import it with the other frontend. But as you can see, the errors are different, so I think 2 separate posts is the correct way to go here.
I also thought 10584 had something to do with this, but after some tests I dont think this is the case.