scs4onnx
A very simple tool that compresses the overall size of the ONNX model by aggregating duplicate constant values as much as possible. Simple Constant value Shrink for ONNX.
Key concept
- If the same constant tensor is found by scanning the entire graph for Constant values, it is aggregated into a single constant tensor.
- Ignore scalar values.
- Ignore variables.
1. Setup
### option
$ echo export PATH="~/.local/bin:$PATH" >> ~/.bashrc \
&& source ~/.bashrc
### run
$ pip install -U onnx \
&& python3 -m pip install -U onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com \
&& pip install -U scs4onnx
2. Usage
$ scs4onnx -h
usage: scs4onnx [-h] [--mode {shrink,npy}] [--non_verbose] input_onnx_file_path output_onnx_file_path
positional arguments:
input_onnx_file_path
Input onnx file path.
output_onnx_file_path
Output onnx file path.
optional arguments:
-h, --help show this help message and exit
--mode {shrink,npy} Constant Value Compression Mode.
shrink: Share constant values inside the model as much as possible.
The model size is slightly larger because
some shared constant values remain inside the model,
but performance is maximized.
npy: Outputs constant values used repeatedly in the model to an
external file .npy. Instead of the smallest model body size,
the file loading overhead is greater.
Default: shrink
--non_verbose Do not show all information logs. Only error logs are displayed.
3. CLI Execution
$ scs4onnx input.onnx output.onnx --mode shrink
4. In-script Execution
from scs4onnx import shrinking
shrunk_graph, npy_file_paths = shrinking('input.onnx', 'output.onnx', mode='npy')
5. Sample
5-1. shrink mode sample
-
297.8MB -> 67.4MB
5-2. npy mode sample
-
297.8MB -> 21.3MB
5-3. .npy file view
$ python
>>> import numpy as np
>>> param = np.load('gmflow_sintel_480x640_shrunken_exported_1646.npy')
>>> param.shape
(8, 1200, 1200)
>>> param
array([[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[-100., -100., -100., ..., 0., 0., 0.],
[-100., -100., -100., ..., 0., 0., 0.],
[-100., -100., -100., ..., 0., 0., 0.]]], dtype=float32)
6. Reference
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
scs4onnx-1.0.5.tar.gz
(5.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scs4onnx-1.0.5.tar.gz.
File metadata
- Download URL: scs4onnx-1.0.5.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74bf2f3f17d51e45c0b143f8d6f7098586cd038f27e5a250b5c99fd1acdcb3bd
|
|
| MD5 |
554d3401cddc4e0ef49a49c91a82d773
|
|
| BLAKE2b-256 |
0d26c79a363f80181cd947e988d4c907385a2be336246328f2c1fa07909f49d7
|
File details
Details for the file scs4onnx-1.0.5-py3-none-any.whl.
File metadata
- Download URL: scs4onnx-1.0.5-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df617dbc117072b119cdb8578883e2f3699c8c53e6929ee56b29e448704977b2
|
|
| MD5 |
698b717cb478a52989f1bd1ced161d68
|
|
| BLAKE2b-256 |
7562da3a1f4e989d2aa96375ddb5d22450fe31763d3d2f2ec5c1e91e2827ecc4
|