Principle:Microsoft Onnxruntime Model Conversion to ONNX
Metadata
| Field | Value |
|---|---|
| Principle Name | Model_Conversion_to_ONNX |
| Repository | Microsoft_Onnxruntime |
| Source Repository | https://github.com/microsoft/onnxruntime |
| Domain | ML_Inference, Model_Conversion |
| Last Updated | 2026-02-10 |
| Workflow | Train_Convert_Predict |
| Pair | 3 of 5 |
Overview
Transformation of a trained machine learning model from its source framework representation into the ONNX interchange format.
Description
Model conversion translates a trained model's computational graph and parameters into the standardized ONNX format. This enables framework-agnostic inference using optimized runtimes like ONNX Runtime.
This is a Wrapper Doc for skl2onnx, which provides the convert_sklearn() function. The conversion process:
- Inspects the trained scikit-learn model's type, structure, and learned parameters.
- Maps scikit-learn operators to equivalent ONNX operators.
- Constructs an ONNX graph with the declared input schema and inferred output schema.
- Serializes the result as an
onnx.ModelProtoobject.
The conversion output can be saved to disk using the .SerializeToString() method of the ModelProto, producing a standard .onnx file.
The conversion workflow is demonstrated at docs/python/examples/plot_train_convert_predict.py:L56-58.
Theoretical Basis
ONNX (Open Neural Network Exchange) is an open standard for representing machine learning models. The format defines:
- A graph-based representation of computation, where nodes are operators and edges are tensors.
- A type system for tensors, supporting various element types and shapes.
- A versioned operator set (opset) that defines the semantics of each operator.
- Model metadata including version, domain, and documentation.
The conversion process must faithfully translate:
- Model parameters -- Weights, biases, and other learned values become constant tensors or initializers in the ONNX graph.
- Computation logic -- The prediction algorithm is decomposed into a sequence of standard ONNX operators.
- Pre/post-processing -- Any transformations that are part of the model pipeline.
The resulting ONNX model is self-contained and can be loaded by any ONNX-compatible runtime without requiring the original training framework.
Usage
A trained scikit-learn model is converted using convert_sklearn:
from skl2onnx import convert_sklearn
onx = convert_sklearn(clr, initial_types=initial_type)
with open("model.onnx", "wb") as f:
f.write(onx.SerializeToString())