mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Add non-package python modules to the public API checks. The original change is to remove the `ispkg` check in this line https://github.com/pytorch/pytorch/blob/main/docs/source/conf.py#L518 Everything else is to add the appropriate modules to the rst files, make sure every module we provide can be imported (fixed by either making optional dependencies optional or just deleting files that have been un-importable for 3 years), make API that are both modules and functions (like torch.autograd.gradcheck) properly rendered on the docs website without confusion and add every non-documented API to the allow list (~3k of them). Next steps will be to try and fix these missing docs Pull Request resolved: https://github.com/pytorch/pytorch/pull/110568 Approved by: https://github.com/zou3519
85 lines
3.5 KiB
ReStructuredText
85 lines
3.5 KiB
ReStructuredText
torch.onnx
|
|
==========
|
|
|
|
Overview
|
|
--------
|
|
|
|
`Open Neural Network eXchange (ONNX) <https://onnx.ai/>`_ is an open standard
|
|
format for representing machine learning models. The ``torch.onnx`` module captures the computation graph from a
|
|
native PyTorch :class:`torch.nn.Module` model and converts it into an
|
|
`ONNX graph <https://github.com/onnx/onnx/blob/main/docs/IR.md>`_.
|
|
|
|
The exported model can be consumed by any of the many
|
|
`runtimes that support ONNX <https://onnx.ai/supported-tools.html#deployModel>`_, including
|
|
Microsoft's `ONNX Runtime <https://www.onnxruntime.ai>`_.
|
|
|
|
**There are two flavors of ONNX exporter API that you can use, as listed below:**
|
|
|
|
TorchDynamo-based ONNX Exporter
|
|
-------------------------------
|
|
|
|
*The TorchDynamo-based ONNX exporter is the newest (and Beta) exporter for PyTorch 2.0 and newer*
|
|
|
|
TorchDynamo engine is leveraged to hook into Python's frame evaluation API and dynamically rewrite its
|
|
bytecode into an FX Graph. The resulting FX Graph is then polished before it is finally translated into an
|
|
ONNX graph.
|
|
|
|
The main advantage of this approach is that the `FX graph <https://pytorch.org/docs/stable/fx.html>`_ is captured using
|
|
bytecode analysis that preserves the dynamic nature of the model instead of using traditional static tracing techniques.
|
|
|
|
:doc:`Learn more about the TorchDynamo-based ONNX Exporter <onnx_dynamo>`
|
|
|
|
TorchScript-based ONNX Exporter
|
|
-------------------------------
|
|
|
|
*The TorchScript-based ONNX exporter is available since PyTorch 1.2.0*
|
|
|
|
`TorchScript <https://pytorch.org/docs/stable/jit.html>`_ is leveraged to trace (through :func:`torch.jit.trace`)
|
|
the model and capture a static computation graph.
|
|
|
|
As a consequence, the resulting graph has a couple limitations:
|
|
|
|
* It does not record any control-flow, like if-statements or loops;
|
|
* Does not handle nuances between ``training`` and ``eval`` mode;
|
|
* Does not truly handle dynamic inputs
|
|
|
|
As an attempt to support the static tracing limitations, the exporter also supports TorchScript scripting
|
|
(through :func:`torch.jit.script`), which adds support for data-dependent control-flow, for example. However, TorchScript
|
|
itself is a subset of the Python language, so not all features in Python are supported, such as in-place operations.
|
|
|
|
:doc:`Learn more about the TorchScript-based ONNX Exporter <onnx_torchscript>`
|
|
|
|
Contributing / Developing
|
|
-------------------------
|
|
|
|
The ONNX exporter is a community project and we welcome contributions. We follow the
|
|
`PyTorch guidelines for contributions <https://github.com/pytorch/pytorch/blob/main/CONTRIBUTING.md>`_, but you might
|
|
also be interested in reading our `development wiki <https://github.com/pytorch/pytorch/wiki/PyTorch-ONNX-exporter>`_.
|
|
|
|
.. toctree::
|
|
:hidden:
|
|
|
|
onnx_dynamo
|
|
onnx_dynamo_onnxruntime_backend
|
|
onnx_torchscript
|
|
|
|
.. This module needs to be documented. Adding here in the meantime
|
|
.. for tracking purposes
|
|
.. py:module:: torch.onnx.errors
|
|
.. py:module:: torch.onnx.operators
|
|
.. py:module:: torch.onnx.symbolic_caffe2
|
|
.. py:module:: torch.onnx.symbolic_helper
|
|
.. py:module:: torch.onnx.symbolic_opset10
|
|
.. py:module:: torch.onnx.symbolic_opset11
|
|
.. py:module:: torch.onnx.symbolic_opset13
|
|
.. py:module:: torch.onnx.symbolic_opset14
|
|
.. py:module:: torch.onnx.symbolic_opset15
|
|
.. py:module:: torch.onnx.symbolic_opset16
|
|
.. py:module:: torch.onnx.symbolic_opset17
|
|
.. py:module:: torch.onnx.symbolic_opset18
|
|
.. py:module:: torch.onnx.symbolic_opset7
|
|
.. py:module:: torch.onnx.symbolic_opset8
|
|
.. py:module:: torch.onnx.symbolic_opset9
|
|
.. py:module:: torch.onnx.utils
|
|
.. py:module:: torch.onnx.verification
|
|
.. py:module:: torch.onnx.symbolic_opset12 |