In this RFC, i like to propose an independent module inside TVM which will have key responsibility towards handling all the deliverables from TVM compiler(Relay Build) and offer an user friendly way to save, upload, reuse an TVM compiled library.
Recently i was into developing one new runtime for TVM. Where accidentally i made a mistake while saving the output from relay.build(), basically library, graph & parameters. Which took me in a debugging path into some portion of code in TVM, anyway eventually i figured out what was the mistake. This lead me to the mentioned idea. My concern here is why user have to bother about certain file format, name format to save and reuse the deliverables from TVM.
So based on the background i stated above, i want to introduce one universal canonicalized file format for all the deliverables from TVM compilation irrespective of the target types. So in short there will be always one single file of one single format.
So in order to achieve above mentioned goal, I have assigned certain responsibilities or requirements to the Unique module.
- File Package Management: Should have one in-built package manager which performs the task of uniting all deliverables into one single deliverable.
- Compression Support: Should be able to employ some lossless compression on top of it, to save some storage.
- Standardized Interfaces: To interact with TVM modules to perform saving and loading of various deliverables.
- Visualization Tool Support: This is optional.
Currently i can think of this much! So i am expecting on all TVM member expert opinions to fine tune above requirements or responsibilities.
I have a naive design based on above information, but i feel it is too early to state that here. First i think we all should brainstorm on below points:
- Whether the proposed module is helpful or required, so we pitch in to development/design.
- Curate all responsibilities under the module.
- Most important, find a name for the module .