Skip to main content

snd4onnx

Simple node deletion tool for onnx. I only test very miscellaneous and limited patterns as a hobby. There are probably a large number of bugs. Pull requests are welcome.

https://github.com/PINTO0309/simple-onnx-processing-tools

Downloads GitHub PyPI CodeQL

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 snd4onnx

1-2. Docker

https://github.com/PINTO0309/simple-onnx-processing-tools#docker

2. CLI Usage

$ snd4onnx -h

usage:
    snd4onnx [-h]
    -rn REMOVE_NODE_NAMES [REMOVE_NODE_NAMES ...]
    -if INPUT_ONNX_FILE_PATH
    -of OUTPUT_ONNX_FILE_PATH
    [-n]

optional arguments:
  -h, --help
        show this help message and exit.

  -rn REMOVE_NODE_NAMES [REMOVE_NODE_NAMES ...], --remove_node_names REMOVE_NODE_NAMES [REMOVE_NODE_NAMES ...]
        ONNX node name to be deleted.

  -if INPUT_ONNX_FILE_PATH, --input_onnx_file_path INPUT_ONNX_FILE_PATH
        Input onnx file path.

  -of OUTPUT_ONNX_FILE_PATH, --output_onnx_file_path OUTPUT_ONNX_FILE_PATH
        Output onnx file path.

  -n, --non_verbose
        Do not show all information logs. Only error logs are displayed.

3. In-script Usage

>>> from snd4onnx import remove
>>> help(remove)

Help on function remove in module snd4onnx.onnx_remove_node:

remove(
    remove_node_names: List[str],
    input_onnx_file_path: Union[str, NoneType] = '',
    output_onnx_file_path: Union[str, NoneType] = '',
    onnx_graph: Union[onnx.onnx_ml_pb2.ModelProto, NoneType] = None,
    non_verbose: Union[bool, NoneType] = False
) -> onnx.onnx_ml_pb2.ModelProto

    Parameters
    ----------
    remove_node_names: List[str]
        List of OP names to be deleted.
        e.g. remove_node_names = ['op_name1', 'op_name2', 'op_name3', ...]

    input_onnx_file_path: Optional[str]
        Input onnx file path.
        Either input_onnx_file_path or onnx_graph must be specified.

    output_onnx_file_path: Optional[str]
        Output onnx file path.
        If output_onnx_file_path is not specified, no .onnx file is output.

    onnx_graph: Optional[onnx.ModelProto]
        onnx.ModelProto.
        Either input_onnx_file_path or onnx_graph must be specified.
        onnx_graph If specified, ignore input_onnx_file_path and process onnx_graph.

    non_verbose: Optional[bool]
        Do not show all information logs. Only error logs are displayed.
        Default: False

    Returns
    -------
    removed_graph: onnx.ModelProto
        OP removed onnx ModelProto.

4. CLI Execution

$ snd4onnx \
--remove_node_names node_name_a node_name_b \
--input_onnx_file_path input.onnx \
--output_onnx_file_path output.onnx

5. In-script Execution

from snd4onnx import remove

onnx_graph = remove(
    remove_node_names=['node_name_a', 'node_name_b'],
    input_onnx_file_path='input.onnx',
)

# or

onnx_graph = remove(
    remove_node_names=['node_name_a', 'node_name_b'],
    onnx_graph=graph,
)

6. Sample

6-1. sample.1

Before After
test1 onnx test1_removed onnx

6-2. sample.2

Before After
test3 onnx test3_removed onnx

6-3. sample.3

Before After
test5 onnx test5_removed onnx

6-4. sample.4

Before After
test7 onnx test7_removed onnx

6-5. sample.5

Before After
test8 onnx test8_removed onnx

7. Reference

  1. https://docs.nvidia.com/deeplearning/tensorrt/onnx-graphsurgeon/docs/index.html
  2. https://github.com/NVIDIA/TensorRT/tree/main/tools/onnx-graphsurgeon
  3. https://github.com/PINTO0309/scs4onnx
  4. https://github.com/PINTO0309/sne4onnx
  5. https://github.com/PINTO0309/snc4onnx
  6. https://github.com/PINTO0309/sog4onnx
  7. https://github.com/PINTO0309/PINTO_model_zoo

8. Issues

https://github.com/PINTO0309/simple-onnx-processing-tools/issues

Release files for snd4onnx 1.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snd4onnx 1.1.7
File Size Uploaded
snd4onnx-1.1.7.tar.gz 10.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for snd4onnx 1.1.7
File Interpreter ABI Platform
snd4onnx-1.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 19.4 kB

Release files / snd4onnx-1.1.7.tar.gz

Download URL snd4onnx-1.1.7.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a50e8c3bef341193977b31f43777514e48deec71199467c2540c6ed4e5039f63
BLAKE2b-256 checksum
How to use checksums
854c84032b3a38a4dc3a5608238ebcb4427faeea79c8c2e794fb0de43a50825d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release files / snd4onnx-1.1.7-py3-none-any.whl

Download URL snd4onnx-1.1.7-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
246c90e60ecae68dda9d50b5bc4edb401efdbd8dd0bab3ab8f340d4313451b46
BLAKE2b-256 checksum
How to use checksums
2812b1afdd587cc1b3f4d2b60440bd9633e034a124960778fb26306ad2dfaa03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release history Release notifications | RSS feed

This release

1.1.7 This release

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page