ONNX 简介 || 将 PyTorch 模型导出为 ONNX || 扩展 ONNX 导出器的算子支持 || 将带有控制流的模型导出为 ONNX
ONNX 简介
作者: Ti-Tai Wang, Thiago Crepaldi.
开放神经网络交换格式 (ONNX) 是用于表示机器学习模型的开放标准格式。torch.onnx
模块提供了从原生 PyTorch torch.nn.Module
模型中捕获计算图并将其转换为 ONNX 图 的 API。
导出的模型可以被许多支持 ONNX 的运行时使用,包括微软的 ONNX Runtime。
目前,您可以通过布尔参数
dynamo
在 torch.onnx.export 中选择使用 `TorchScript https://pytorch.org/docs/stable/jit.html`_ 或 `ExportedProgram https://pytorch.org/docs/stable/export.html`_ 将模型导出到 ONNX。在本教程中,我们将重点介绍ExportedProgram
方法。
当设置 dynamo=True
时,导出器将使用 torch.export 来捕获一个 ExportedProgram
,然后再将图转换为 ONNX 表示。这种方法是导出模型到 ONNX 的新推荐方式。它更稳健地支持 PyTorch 2.0 的特性,对较新的 ONNX 操作集有更好的支持,并且消耗更少的资源,从而使得导出更大的模型成为可能。
依赖项
需要 PyTorch 2.5.0 或更高版本。
ONNX 导出器依赖于额外的 Python 包:
ONNX 标准库
ONNX Script 库,使开发者能够以简洁而直观的方式,使用 Python 子集编写 ONNX 操作符、函数和模型
ONNX Runtime 加速机器学习库
它们可以通过 pip 安装:
pipinstall--upgradeonnxonnxscriptonnxruntime
要验证安装情况,请运行以下命令:
importtorch
print(torch.__version__)
importonnxscript
print(onnxscript.__version__)
importonnxruntime
print(onnxruntime.__version__)
每次导入必须成功且无任何错误,同时必须打印出库的版本信息。
延伸阅读
以下列表涵盖了从基础示例到高级场景的教程,这些教程并不一定按照列出的顺序排列。您可以直接跳转到您感兴趣的特定主题,或者静下心来,逐一浏览,全面了解 ONNX 导出器的所有内容。