onnx_diagnostic.helpers.mini_onnx_builder¶
- class onnx_diagnostic.helpers.mini_onnx_builder.MiniOnnxBuilder(target_opset: int = 18, ir_version: int = 10, sep: str = '___')[source][source]¶
Simplified builder to build very simple model.
- Parameters:
target_opset – opset to specify
ir_verison – IR version to use
sep – separator to build output names
- append_output_dict(name: str, tensors: Dict[str, ndarray | Tensor])[source][source]¶
Adds two outputs, a string tensors for the keys and a sequence of tensors for the values.
The output name is
name___keys
andname___values
.
- append_output_initializer(name: str, tensor: ndarray | Tensor, randomize: bool = False)[source][source]¶
Adds an initializer as an output. The initializer name is prefixed by
t_
. The output name is name. If randomize is True, the tensor is not stored but replaced by a random generator.
- append_output_sequence(name: str, tensors: List[ndarray | Tensor])[source][source]¶
Adds a sequence of initializers as an output. The initializers names are prefixed by
seq_
. The output name isname
.
- to_onnx() ModelProto [source][source]¶
Conversion to onnx. :return: the proto
- onnx_diagnostic.helpers.mini_onnx_builder.create_input_tensors_from_onnx_model(proto: str | ModelProto, device: str = 'cpu', engine: str = 'ExtendedReferenceEvaluator', sep: str = '___') Any [source][source]¶
Deserializes tensors stored with function
create_onnx_model_from_input_tensors()
. It relies onExtendedReferenceEvaluator
to restore the tensors.- Parameters:
proto – ModelProto or the file itself
device – moves the tensor to this device
engine – runtime to use, onnx, the default value, onnxruntime
sep – separator
- Returns:
restored data
See example Dumps intermediate results of a torch model for an example.
- onnx_diagnostic.helpers.mini_onnx_builder.create_onnx_model_from_input_tensors(inputs: Any, switch_low_high: bool | None = None, randomize: bool = False, sep: str = '___') ModelProto [source][source]¶
Creates a model proto including all the value as initializers. They can be restored by executing the model. We assume these inputs are not bigger than 2Gb, the limit of protobuf. Nothing is implemented yet to get around that limit.
- Parameters:
inputs – anything
switch_low_high – if None, it is equal to
switch_low_high=sys.byteorder != "big"
randomize – if True, float tensors are not stored but randomized to save space
sep – separator
- Returns:
ModelProto
The function raises an error if not supported.