Lightweight Command Line Toolbox for ONNX
Project description
Lightweight Command Line Toolbox for ONNX
- Aims to improve your development or usage experience of ONNX.
- Serves as a CLI wrapper for most cases.
- Use it like
onnx infershape /path/to/model.onnx.
Installation
Recommand to install via GitHub repo with virtualenv
pip install git+https://github.com/jackwish/onnxcli.git
Two alternative ways of installing the package are:
- Install via pypi package
pip install onnxcli - Download and add the code tree to your
$PYTHONPATH. This is for development purpose since the command line is different.git clone https://github.com/jackwish/onnxcli.git export PYTHONPATH=$(pwd)/onnxcli:${PYTHONPATH} python onnxcli/cli/dispatcher.py <more args>
The onnx draw requires dot command (graphviz) to be avaiable on your machine.
It can be installed by command as below on Ubuntu/Debian.
sudo install -y graphviz
Usage
Once installed, the onnx and onnxcli commands are avaiable on your machine.
And you can play with commands such as onnx infershape /path/to/model.onnx.
The sub commands of this tool are as below.
This tool is under construction, check the online help with onnx --help and onnx <subcmd> --help.
infershape
onnx infershape performs shape inference of the ONNX model.
It's an CLI wrapper of onnx.shape_inference.
You will find it useful to generate shape information for the models that are extracted by onnx extract
extract
onnx extract extracts the sub model that are determined by the names of the input and output tensor of the it from the original model.
It's a CLI wrapper of onnx.utils.extract_model
inspect
onnx inspect gives you a quick view of the information of the given model.
It's inspired by the tf-onnx tool.
When working on deep learning, you may like to take a look at the model. Netron is powerful but doesn't provide fine-grain view.
With onnx inspect, you no longer need to scroll the Netron window to look for the node.
You can even dump the node attributes and tensor values with a single command.
Click here to see a node example
$ onnx inspect ./assets/tests/conv.float32.onnx --node --indices 0 --detailInpect of model ./assets/tests/conv.float32.onnx Graph name: 9 Graph inputs: 1 Graph outputs: 1 Nodes in total: 1 ValueInfo in total: 2 Initializers in total: 2 Sparse Initializers in total: 0 Quantization in total: 0
Node information: Node "output": type "Conv", inputs "['input', 'Variable/read', 'Conv2D_bias']", outputs "['output']" attributes: [name: "dilations" ints: 1 ints: 1 type: INTS , name: "group" i: 1 type: INT , name: "kernel_shape" ints: 3 ints: 3 type: INTS , name: "pads" ints: 1 ints: 1 ints: 1 ints: 1 type: INTS , name: "strides" ints: 1 ints: 1 type: INTS ]
Click here to see a tensor example
$ onnx inspect ./assets/tests/conv.float32.onnx --tensor --names Conv2D_bias --detailInpect of model ./assets/tests/conv.float32.onnx Graph name: 9 Graph inputs: 1 Graph outputs: 1 Nodes in total: 1 ValueInfo in total: 2 Initializers in total: 2 Sparse Initializers in total: 0 Quantization in total: 0
Tensor information: Initializer "Conv2D_bias": type FLOAT, shape [16], float data: [0.4517577290534973, -0.014192663133144379, 0.2946248948574066, -0.9742919206619263, -1.2975586652755737, 0.7223454117774963, 0.7835700511932373, 1.7674627304077148, 1.7242872714996338, 1.1230682134628296, -0.2902531623840332, 0.2627834975719452, 1.0175092220306396, 0.5643373131752014, -0.8244842290878296, 1.2169424295425415]
draw
onnx draw draws the graph in dot, svg, png formats.
You may have quick view of the type and shape of the tensors that are fed to a specific node.
You can view the model topology in image viewer of browser without waiting for the model to load.
This is really helpful for large models.
If you are viewing svg in browser, you can even quick search for the nodes and tensors.
Together with onnx inspect, it will be very efficient to understand the issue you are looking into.
The node are in ellipses and tensors are in rectangles where the rounded ones are initializers. The node type of the node and the data type and shape of the tenors are also rendered. Here is a Convolution node example.
Contributing
Welcome to contribute new commands or enhance them. Let's make our life easier together.
The workflow is pretty simple:
- Starting with GitHub Codespace or clone locally.
make setupto config the dependencies (orpip install -r ./requirements.txtif you prefer).
- Create a new subcommand
- Starting by copying and modifying infershape.
- Register the command in the dispatcher
- Create a new command line test
make testto build and test.make checkandmake formatto fix any code style issues.
- Try out, debug, commit, push, and open pull request.
- The code has been protected by CI. You need to get a pass before merging.
- Ask if any questions.
License
Apache License Version 2.0.
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
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 onnxcli-0.1.0.tar.gz.
File metadata
- Download URL: onnxcli-0.1.0.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc00348957c8446379539d4b91fa02e0089733dfdb0404c4dff334ab7461619d
|
|
| MD5 |
2d434affb7bd8742eeddeb1d9cf061b4
|
|
| BLAKE2b-256 |
9ba91d4fedd584f530d3248839b56855f1d77ec2dc57d34690337111788e6e2d
|
File details
Details for the file onnxcli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: onnxcli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94a7f03a72e7c06737a691bbcadf670a19774f26f2f8756f46c400c0ea864b94
|
|
| MD5 |
58d73bd26bda44601e45a1fae682b7ce
|
|
| BLAKE2b-256 |
7ad2e09fabf44100508e8be4355dce68bd02ac81acda7d0aecb0a8416ab3af5a
|