Skip to main content

Simple OP Renamer for ONNX.

Project description

sor4onnx

Simple OP Renamer for ONNX.

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

Downloads GitHub PyPI CodeQL

Key concept

  • Performs a partial match search on the specified string and replaces all input and output names with the specified string.

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 sor4onnx

1-2. Docker

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

2. CLI Usage

$ sor4onnx -h

usage:
  sor4onnx [-h]
  -if INPUT_ONNX_FILE_PATH
  -on OLD_NEW OLD_NEW
  -of OUTPUT_ONNX_FILE_PATH
  [-m {full,inputs,outputs}]
  [-sm {exact_match,partial_match,prefix_match,suffix_match}]
  [-n]

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

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

  -on OLD_NEW OLD_NEW, --old_new OLD_NEW OLD_NEW
      All occurrences of substring old replaced by new.
      e.g. --old_new "onnx::" ""

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

  -m {full,inputs,outputs}, --mode {full,inputs,outputs}
      Specifies the type of node to be replaced.
      full or inputs or outputs.
      full: Rename all nodes.
      inputs: Rename only the input node.
      outputs: Rename only the output node.
      Default: full

  -sm {exact_match,partial_match,prefix_match,suffix_match}, --search_mode {exact_match,partial_match,prefix_match,suffix_match}
      OP name search mode.
      exact_match or partial_match or prefix_match or suffix_match.
      exact_match: Exact match search for OP name.
      partial_match: Partial match search for OP name.
      prefix_match: Prefix match search for OP name.
      suffix_match: Suffix match search for OP name.
      Default: exact_match

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

3. In-script Usage

>>> from sor4onnx import rename
>>> help(rename)

Help on function rename in module sor4onnx.onnx_opname_renamer:

rename(
    old_new: List[str],
    input_onnx_file_path: Union[str, NoneType] = '',
    onnx_graph: Union[onnx.onnx_ml_pb2.ModelProto, NoneType] = None,
    output_onnx_file_path: Union[str, NoneType] = '',
    mode: Union[str, NoneType] = 'full',
    search_mode: Union[str, NoneType] = 'exact_match',
    non_verbose: Union[bool, NoneType] = False
) -> onnx.onnx_ml_pb2.ModelProto

    Parameters
    ----------
    old_new: List[str]
        All occurrences of substring old replaced by new.
        e.g.
        old_new = ["onnx::", ""]

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

    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.

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

    mode: Optional[str]
        Specifies the type of node to be replaced.
        full or inputs or outputs.
        full: Rename all nodes.
        inputs: Rename only the input node.
        outputs: Rename only the output node.
        Default: full

    search_mode: Optional[str]
        OP name search mode.
        exact_match or partial_match or prefix_match or suffix_match.
        exact_match: Exact match search for OP name.
        partial_match: Partial match search for OP name.
        prefix_match: Prefix match search for OP name.
        suffix_match: Suffix match search for OP name.
        Default: exact_match

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

    Returns
    -------
    renamed_graph: onnx.ModelProto
        Renamed onnx ModelProto.

4. CLI Execution

$ sor4onnx \
--input_onnx_file_path fusionnet_180x320.onnx \
--old_new "onnx::" "" \
--mode full \
--search_mode prefix_match \
--output_onnx_file_path fusionnet_180x320_renamed.onnx

5. In-script Execution

from sor4onnx import rename

onnx_graph = rename(
  old_new=["onnx::", ""],
  input_onnx_file_path="fusionnet_180x320.onnx",
  output_onnx_file_path="fusionnet_180x320_renamed.onnx",
  mode="full",
  search_mode="prefix_match",
)

# or

onnx_graph = rename(
  old_new=["onnx::", ""],
  onnx_graph=graph,
  mode="full",
  search_mode="prefix_match",
)

6. Sample

Before

image

After

image

7. Reference

  1. https://github.com/onnx/onnx/blob/main/docs/Operators.md
  2. https://docs.nvidia.com/deeplearning/tensorrt/onnx-graphsurgeon/docs/index.html
  3. https://github.com/NVIDIA/TensorRT/tree/main/tools/onnx-graphsurgeon
  4. https://github.com/PINTO0309/simple-onnx-processing-tools
  5. https://github.com/PINTO0309/PINTO_model_zoo

8. Issues

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sor4onnx-1.0.7.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

sor4onnx-1.0.7-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file sor4onnx-1.0.7.tar.gz.

File metadata

  • Download URL: sor4onnx-1.0.7.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for sor4onnx-1.0.7.tar.gz
Algorithm Hash digest
SHA256 6a3e91e91da0b11aec86bce96a3f28f9f52ab000421b59a2ae689c10fef782be
MD5 efa3108f4b3d541616fe297b5b7d2b9b
BLAKE2b-256 4d8ad930f6215383d530f042022f8cabb96d8e5b32c134a6f32baeafab96efbd

See more details on using hashes here.

File details

Details for the file sor4onnx-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: sor4onnx-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for sor4onnx-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 aca7a9b71bf0319415141332ccbd0c01fb8f7feb485e66a2342dda2104fd3e95
MD5 bf2fafa3102ed32047403f0d5adc09d1
BLAKE2b-256 f1c42091efd5236c0a9f755f6de4dfec1985cb2dfd270f92237486c521815778

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page