I’m not sure about executor class.
However, this method might work on your requirement too. (never run it, but from my guess it should work too)
mod, params = relay.frontend.from_onnx(onnx_model, shape_dict)
func = mod["main"]
target = "llvm"
with tvm.transform.PassContext(opt_level=3):
lib = relay.build(func, target, params=params)
dev = tvm.cpu(0)
m = graph_executor.GraphModule(lib["default"](dev))
# set input (you can set many input as you want, but you need to know input node name)
m.set_input("data", tvm.nd.array(x.astype(dtype)))
# execute
m.run()
# get outputs
tvm_output = m.get_output(0)