ONNX 序列化

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)。