快捷方式

torch.onnx

概述

开放神经网络交换 (ONNX) 是一种用于表示机器学习模型的开放标准格式。 torch.onnx 模块捕获来自本机 PyTorch torch.nn.Module 模型的计算图,并将其转换为 ONNX 图.

导出的模型可以被支持 ONNX 的许多 运行时 使用,包括微软的 ONNX Runtime.

您可以使用两种类型的 ONNX 导出器 API,如下所示

基于 TorchDynamo 的 ONNX 导出器

基于 TorchDynamo 的 ONNX 导出器是 PyTorch 2.1 及更高版本的新(且处于 Beta 阶段)导出器

TorchDynamo 引擎用于连接到 Python 的帧评估 API,并将它的字节码动态地重写为 FX 图。生成的 FX 图将在最终转换为 ONNX 图之前进行整理。

这种方法的主要优点是 FX 图 是使用字节码分析捕获的,该分析保留了模型的动态特性,而不是使用传统的静态跟踪技术。

了解有关基于 TorchDynamo 的 ONNX 导出器的更多信息

基于 TorchScript 的 ONNX 导出器

基于 TorchScript 的 ONNX 导出器自 PyTorch 1.2.0 起可用

TorchScript 用于跟踪(通过 torch.jit.trace())模型并捕获静态计算图。

因此,生成的图存在一些限制

  • 它不会记录任何控制流,例如 if 语句或循环;

  • 不处理 trainingeval 模式之间的细微差别;

  • 无法真正处理动态输入

为了解决静态跟踪限制,导出器还支持 TorchScript 脚本(通过 torch.jit.script()),它增加了对数据相关控制流的支持,例如。但是,TorchScript 本身是 Python 语言的一个子集,因此 Python 中的并非所有功能都受支持,例如就地操作。

了解有关基于 TorchScript 的 ONNX 导出器的更多信息

贡献 / 开发

ONNX 导出器是一个社区项目,我们欢迎贡献。我们遵循 PyTorch 贡献指南,但您可能也对阅读我们的 开发 Wiki 感兴趣。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源