将PyTorch模型转换为ONNX的实验性工具
项目描述
PyTorch到ONNX导出器
实验性的torch ONNX导出器。与torch>=2.1兼容。
[!WARNING] 这是一个实验性项目,并不适合生产使用。请使用
torch.onnx.export
来完成这些目的。
安装
pip install --upgrade torch-onnx
用法
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)
设计
{dynamo/jit} -> {ExportedProgram} -> {torchlib} -> {ONNX IR} -> {ONNX}
- 使用ExportedProgram
- 依赖于torch.export实现的健壮性
- 简化导出器的复杂性
- 这并没有解决dynamo的限制,但它通过运行fx传递避免了引入额外的破坏
- 平面图;作用域信息作为元数据,而不是函数
- 因为现有工具不擅长处理这些
- 适当的地方进行急切优化
- 因为现有工具不擅长优化
- torch.onnx.export的替代品
- 最小的迁移工作量
- 在导出器中急切地构建图
- 让导出器完全控制正在构建的图
为什么这可行?
- 我们需要在Huggingface Optimum上验证torch.export的覆盖率https://github.com/huggingface/optimum/tree/main/optimum/exporters/onnx;他们没有对torch.onnx本身进行修补。
- 修改torch.onnx.export,使得包在使用dynamo时无需修改任何一行代码
- 我们已经实现了所有操作符,并且是可移植的
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
torch_onnx-0.1.25.tar.gz (72.8 kB 查看哈希值)
构建分发
torch_onnx-0.1.25-py3-none-any.whl (81.6 kB 查看哈希值)
关闭
torch_onnx-0.1.25.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cddcc6089cbfdd3e5ab65dc8ed93249e257215eb0f6c068ffa7377d6ef6b767e |
|
MD5 | 2afd465c52a603b4b6f705a2bdc9ef06 |
|
BLAKE2b-256 | 87bc454c57e61e47875245230491313cd5813ce15eb3aa8633e8064008097924 |
关闭
torch_onnx-0.1.25-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a9ce6d5fe4d77c4e697cf97dbbf919a1b77834b299a9e9debd2a25d5415ce68d |
|
MD5 | 529db9f902eca1428f9e6349f79459ba |
|
BLAKE2b-256 | 9686a5bae457e4fceb61cf873789e59f265f83bac0380ffb607abba42ba472a5 |