Experimental tools for converting PyTorch models to ONNX
Project description
PyTorch to ONNX Exporter
Experimental torch ONNX exporter. Compatible with torch>=2.1.
[!WARNING] This is an experimental project and is not designed for production use. Use
torch.onnx.export
for these purposes.
Installation
pip install --upgrade torch-onnx
Usage
import torch
import torch_onnx
from onnxscript import ir
import onnx
# Get an exported program with torch.export
exported = torch.export.export(...)
model = torch_onnx.exported_program_to_ir(exported)
proto = ir.to_proto(model)
onnx.save(proto, "model.onnx")
# Or patch the torch.onnx export API
# Set error_report=True to get a detailed error report if the export fails
torch_onnx.patch_torch(report=True, verify=True, profile=True)
torch.onnx.export(...)
# Use the analysis API to print an analysis report for unsupported ops
torch_onnx.analyze(exported)
Design
{dynamo/jit} -> {ExportedProgram} -> {torchlib} -> {ONNX IR} -> {ONNX}
- Use ExportedProgram
- Rely on robustness of the torch.export implementation
- Reduce complexity in the exporter
- This does not solve dynamo limitations, but it avoids introducing additional breakage by running fx passes
- Flat graph; Scope info as metadata, not functions
- Because existing tools are not good at handling them
- Eager optimization where appropriate
- Because exsiting tools are not good at optimizing
- Drop in replacement for torch.onnx.export
- Minimum migration effort
- Build graph eagerly in the exporter
- Give the exporter full control over the graph being built
Why is this doable?
- We need to verify torch.export coverage on Huggingface Optimum https://github.com/huggingface/optimum/tree/main/optimum/exporters/onnx; and they are not patching torch.onnx itself.
- Patch torch.onnx.export such that packages do not need to change a single line to use dynamo
- We have all operators implemented and portable
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
torch_onnx-0.1.24.tar.gz
(72.4 kB
view details)
Built Distribution
File details
Details for the file torch_onnx-0.1.24.tar.gz
.
File metadata
- Download URL: torch_onnx-0.1.24.tar.gz
- Upload date:
- Size: 72.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.1 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2ea2552221307d8f1059a5e8b569df4ed60342442d60034bf8a89b2d452285b |
|
MD5 | 7dc4e2c073a616130213dc60e06cf7ab |
|
BLAKE2b-256 | 1434451faec36aa9eecf7106c2d7fc2c4ea45774deca9d1b9fbd5a5511254a7f |
File details
Details for the file torch_onnx-0.1.24-py3-none-any.whl
.
File metadata
- Download URL: torch_onnx-0.1.24-py3-none-any.whl
- Upload date:
- Size: 81.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.1 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8daa972e5469234282e35eac894dd1f5b1002612e0b9345d441be67cf7a6e457 |
|
MD5 | d733a56310eaf2e4cd87e6fcf0493fff |
|
BLAKE2b-256 | 014a1e4109f82a3540493bb7bde63c9334f758bdb8ad3b933368a39fff9aad34 |