diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 14:21:05 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 14:21:05 +0000 |
commit | 148b487848bec1f0cb7ed5205c7007af0d182bf6 (patch) | |
tree | d09fae016b0a66c6fb59477b5c1be2da64f17199 | |
parent | 813f61c82aee525efb3130e5250a7c5f584327e1 (diff) |
automatic import of python-onnx-simplifier
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-onnx-simplifier.spec | 409 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 411 insertions, 0 deletions
@@ -0,0 +1 @@ +/onnx-simplifier-0.4.19.tar.gz diff --git a/python-onnx-simplifier.spec b/python-onnx-simplifier.spec new file mode 100644 index 0000000..671bf83 --- /dev/null +++ b/python-onnx-simplifier.spec @@ -0,0 +1,409 @@ +%global _empty_manifest_terminate_build 0 +Name: python-onnx-simplifier +Version: 0.4.19 +Release: 1 +Summary: Simplify your ONNX model +License: Apache License v2.0 +URL: https://github.com/daquexian/onnx-simplifier +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/31/70/4056e2a5797dae2e3edda382e35eb5ee95ba3040e8201fe5737d9e72b1fa/onnx-simplifier-0.4.19.tar.gz + +Requires: python3-onnx +Requires: python3-rich + +%description +# ONNX Simplifier + +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://github.com/daquexian/onnx-simplifier/pulls) + +_ONNX is great, but sometimes too complicated._ + +## Background + +One day I wanted to export the following simple reshape operation to ONNX: + +```python +import torch + + +class JustReshape(torch.nn.Module): + def __init__(self): + super(JustReshape, self).__init__() + + def forward(self, x): + return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2])) + + +net = JustReshape() +model_name = 'just_reshape.onnx' +dummy_input = torch.randn(2, 3, 4, 5) +torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output']) +``` + +The input shape in this model is static, so what I expected is + + + +However, I got the following complicated model instead: + + + +## Our solution + +ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph +and then replaces the redundant operators with their constant outputs (a.k.a. constant folding). + +### Web version + +We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe. + +### Python version + + +``` +pip3 install -U pip && pip3 install onnxsim +``` + +Then + +``` +onnxsim input_onnx_model output_onnx_model +``` + +For more advanced features, try the following command for help message + +``` +onnxsim -h +``` + +## Demonstration + +An overall comparison between +[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190) +and its simplified version: + + + +## In-script workflow + +If you would like to embed ONNX simplifier python package in another script, it is just that simple. + +```python +import onnx +from onnxsim import simplify + +# load your predefined ONNX model +model = onnx.load(filename) + +# convert model +model_simp, check = simplify(model) + +assert check, "Simplified ONNX model could not be validated" + +# use model_simp as a standard ONNX model object +``` + +You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py) + +## Projects Using ONNX Simplifier + +* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model) +* [MMDetection](https://github.com/open-mmlab/mmdetection) +* [YOLOv5](https://github.com/ultralytics/yolov5) +* [ncnn](https://github.com/Tencent/ncnn) +* ... + +## Chat + +We created a Chinese QQ group for ONNX! + +ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join! + +For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there. + + +%package -n python3-onnx-simplifier +Summary: Simplify your ONNX model +Provides: python-onnx-simplifier +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-cffi +BuildRequires: gcc +BuildRequires: gdb +%description -n python3-onnx-simplifier +# ONNX Simplifier + +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://github.com/daquexian/onnx-simplifier/pulls) + +_ONNX is great, but sometimes too complicated._ + +## Background + +One day I wanted to export the following simple reshape operation to ONNX: + +```python +import torch + + +class JustReshape(torch.nn.Module): + def __init__(self): + super(JustReshape, self).__init__() + + def forward(self, x): + return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2])) + + +net = JustReshape() +model_name = 'just_reshape.onnx' +dummy_input = torch.randn(2, 3, 4, 5) +torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output']) +``` + +The input shape in this model is static, so what I expected is + + + +However, I got the following complicated model instead: + + + +## Our solution + +ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph +and then replaces the redundant operators with their constant outputs (a.k.a. constant folding). + +### Web version + +We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe. + +### Python version + + +``` +pip3 install -U pip && pip3 install onnxsim +``` + +Then + +``` +onnxsim input_onnx_model output_onnx_model +``` + +For more advanced features, try the following command for help message + +``` +onnxsim -h +``` + +## Demonstration + +An overall comparison between +[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190) +and its simplified version: + + + +## In-script workflow + +If you would like to embed ONNX simplifier python package in another script, it is just that simple. + +```python +import onnx +from onnxsim import simplify + +# load your predefined ONNX model +model = onnx.load(filename) + +# convert model +model_simp, check = simplify(model) + +assert check, "Simplified ONNX model could not be validated" + +# use model_simp as a standard ONNX model object +``` + +You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py) + +## Projects Using ONNX Simplifier + +* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model) +* [MMDetection](https://github.com/open-mmlab/mmdetection) +* [YOLOv5](https://github.com/ultralytics/yolov5) +* [ncnn](https://github.com/Tencent/ncnn) +* ... + +## Chat + +We created a Chinese QQ group for ONNX! + +ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join! + +For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there. + + +%package help +Summary: Development documents and examples for onnx-simplifier +Provides: python3-onnx-simplifier-doc +%description help +# ONNX Simplifier + +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://pypi.python.org/pypi/onnx-simplifier/) +[](https://github.com/daquexian/onnx-simplifier/pulls) + +_ONNX is great, but sometimes too complicated._ + +## Background + +One day I wanted to export the following simple reshape operation to ONNX: + +```python +import torch + + +class JustReshape(torch.nn.Module): + def __init__(self): + super(JustReshape, self).__init__() + + def forward(self, x): + return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2])) + + +net = JustReshape() +model_name = 'just_reshape.onnx' +dummy_input = torch.randn(2, 3, 4, 5) +torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output']) +``` + +The input shape in this model is static, so what I expected is + + + +However, I got the following complicated model instead: + + + +## Our solution + +ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph +and then replaces the redundant operators with their constant outputs (a.k.a. constant folding). + +### Web version + +We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe. + +### Python version + + +``` +pip3 install -U pip && pip3 install onnxsim +``` + +Then + +``` +onnxsim input_onnx_model output_onnx_model +``` + +For more advanced features, try the following command for help message + +``` +onnxsim -h +``` + +## Demonstration + +An overall comparison between +[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190) +and its simplified version: + + + +## In-script workflow + +If you would like to embed ONNX simplifier python package in another script, it is just that simple. + +```python +import onnx +from onnxsim import simplify + +# load your predefined ONNX model +model = onnx.load(filename) + +# convert model +model_simp, check = simplify(model) + +assert check, "Simplified ONNX model could not be validated" + +# use model_simp as a standard ONNX model object +``` + +You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py) + +## Projects Using ONNX Simplifier + +* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model) +* [MMDetection](https://github.com/open-mmlab/mmdetection) +* [YOLOv5](https://github.com/ultralytics/yolov5) +* [ncnn](https://github.com/Tencent/ncnn) +* ... + +## Chat + +We created a Chinese QQ group for ONNX! + +ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join! + +For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there. + + +%prep +%autosetup -n onnx-simplifier-0.4.19 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-onnx-simplifier -f filelist.lst +%dir %{python3_sitearch}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.19-1 +- Package Spec generated @@ -0,0 +1 @@ +afe55d0a2d50646ff834967af625f89e onnx-simplifier-0.4.19.tar.gz |