ONNX 序列化#
参考:concepts
ONNX 可以类比为一种专门用于数学函数的编程语言。它定义了机器学习模型实现其推理功能所需的所有运算。
线性回归可以用以下方式表示:
from onnxscript import script
from onnxscript import opset17 as op
@script()
def onnx_linear_regressor(X, Wt, Bias):
"ONNX code for a linear regression"
return op.MatMul(X, Wt) + Bias
onnx_linear_regressor: Already defined.
模型序列化导出:
import onnx
onnx.save_model(
onnx_linear_regressor.to_model_proto(),
".temp/linear_regressor.onnx",
)
这个例子与开发者在 Python 中编写的表达式非常相似。它也可以表示为计算图,展示了逐步变换特征以获得预测的过程。这就是为什么用 ONNX 实现的机器学习模型通常被称为 ONNX 计算图。
ONNX旨在提供一种通用语言,任何机器学习框架都可以用来描述其模型。第一个场景是使在生产环境中部署机器学习模型更加容易。可以在部署环境中专为这一任务实现和优化一个ONNX解释器(或运行时)。有了ONNX,可以构建一个独特的流程,将模型独立于用于构建模型的学习框架部署到生产中。ONNX实现了一个Python运行时,可用于评估ONNX模型和ONNX操作。这旨在澄清ONNX的语义,并帮助理解和调试ONNX工具及转换器。它不适用于生产环境,性能也不是目标(参见onnx.reference)。