Versioning questions for tool developers #3061
Unanswered
DrChainsaw
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Background is that there is some work ongoing to do a holistic take on ONNX import/export in Julia. A few scattered projects exist already (some which are maintained) so there exist some coarse knowledge on how to do it.
I have read the versioning guideline but it is still not clear to me what is required to provide a smooth IR and opset version handling experience in an import/export tool. This is basically the core question which I will try to break down into a few more concrete questions below (with the caveat that a misunderstanding on my part might make the questions meaningless).
Assume one wants to have an export API like this
onnx_export(model, irVersion, opsetVersion)
so that users can choose which versions to export to.Should one then use multiple versions of the proto-files or is it enough to just have the latest? I guess that having only the latest trivially works if the IR evolves only by adding new fields without modifying or removing any existing ones.
What about Opsets? I assume that one in general needs a set of primitive mapping functions for each OP (e.g
SomeMlFrameWork.ConvLayer
) into a NodeProto for each opset one wants to support (e.g.convproto_opset11(layer)
andconvproto_opset1(layer)
), right?Similar questions for importing. If one needs to use multiple versions of the protos then I guess one must first read the modelproto before deciding which IR and opset version of the remaining protos to assume. At least for IR this sounds a bit inconvenient so I’m thinking the multiple proto assumption is not correct.
For importing, is the recommendation to use the converter mechanism for handling opset versions instead of one function per version?
Beta Was this translation helpful? Give feedback.
All reactions