Extend ONNX, extend runtime#
Existing converters assume it is possible to convert a model with the current list of ONNX operators. This list is growing at every version but it may happen a new node is needed. It could be added to ONNX specifications, it requires a new release, but that’s not mandatory. New nodes can easily be created by using a different domain. A domain defines a set of operators, there are currently two officially supported domains: ONNX operators and ONNX ML operators. Custom domains can be used. Once this new node is defined, a converter can use it. That leaves the last issue: the runtime must be aware of the implementation attached to this new node. That’s the difficult part.