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
1-1. HostPC
### 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
1-2. Docker
### docker pull
$ docker pull pinto0309/scs4onnx:latest
### docker build
$ docker build -t pinto0309/scs4onnx:latest .
### docker run
$ docker run --rm -it -v `pwd`:/workdir pinto0309/scs4onnx:latest
$ cd /workdir
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.6.tar.gz
(6.0 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.6.tar.gz.
File metadata
- Download URL: scs4onnx-1.0.6.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c4d3b387d01277be9875266c615a9934e6e9194c694385fec5af1a64138edd3
|
|
| MD5 |
e35e98b864118a3a043e6770bcbb03bc
|
|
| BLAKE2b-256 |
a63242feadc619f373d249f22c66466a390ecb0ddadabc4dd00dc4a57770f427
|
File details
Details for the file scs4onnx-1.0.6-py3-none-any.whl.
File metadata
- Download URL: scs4onnx-1.0.6-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 |
8db79656e36c71be74d642aaef7249309fb1ec3916b0cadaf0396881af737854
|
|
| MD5 |
ec195f5019c492bcfb58cd72ea0b99a1
|
|
| BLAKE2b-256 |
ce62711348b4ed60ee399ddda219c02db7bd2a72b44a281eb1405be5d3bcc904
|