Per offline discussions, here is a summary of the updated proposal:
* The original proposal uses a runtime module to maintain both json and metadata (e.g., constant weights) together. As @tqchen pointed out, although this is simple to be implemented, it is hard to debug and cannot be shared over other runtimes such as VM and AOT. * Accordingly, we now aim to separate code and metadata. In other words, while the code can be in any formats (e.g., C++ for CSourceModule; JSON or other forms for customized runtime), **we will use the same mechanism to deal with the metadata over all kinds of runtime modules**. In terms of the implementation and user inreface, the current API is: ```python json, lib, params = relay.build(mod, target='llvm', params=params) ``` One question to solve with the current API is that we only have one fixed output from `relay.build` for the built runtime module, `lib`, so it is not straightforward to get both code and metadata via this API. As a result, instead of returning a runtime module, we are thinking to return a `PackingModule` for the Relay module with external functions, and use modular approach to build pipeline on the Python side. `PackingModule` is composed of a mapping from `symbol` to `(implement, {var_name: NDArray})`. The `implement` would be the C++ code for `CSourceModule`, or JSON string for `JSONRuntimeModule`. In this way, we could have a unified inferface for both cases. @tqchen do you think it's ok to use the `PackingModule`, or you have a better idea? --- [Visit Topic](https://discuss.tvm.ai/t/byoc-runtime-json-runtime-for-byoc/6579/12) to respond. You are receiving this because you enabled mailing list mode. To unsubscribe from these emails, [click here](https://discuss.tvm.ai/email/unsubscribe/7106b5859e7649b14cde3043155a0a6a3e3bc9ec5e700a59cf8a93ffa386e3fb).