728x90
728x90
onnx-simplifier란?
onnx-simplifier은 복잡한 구조의 onnx 모델을 간소화하는 작업을 진행해 준다.
모델에 따라 복잡한 모델의 구조라고 하더라도 간소화되는 부분이 많을 수도 있고 적을 수도 있다.
onnx-simplifier에 대한 git 주소를 들어가보면 3.4M모델을 1.9M모델로 간소화 시켰는데, 내가 가지고 있는 모델들은 저정도 까지는 아니지만 보통 사용하면 적으면 0.1M, 보통은 0.5M정도는 모델이 간소화 되었다.
그리고, onnx를 tensorrt로 변환할 때 오류가 발생하는 모델에 대해 onnx-simplifier을 한번 해주면 가끔 오류 없이 변환이 완료될 때도 있다.
(해당 오류의 경우에 대해서는 연구하다가 다시 발생하면 추가할 예정)
https://github.com/daquexian/onnx-simplifier
onnx-simplifier 설치 및 사용
onnx-simplifier를 설치하고 사용하는건 정말 간단하다.
onnx-simplifier 설치 명령어
pip3 install -U pip && pip3 install onnx-simplifier
onnx-simplifier 사용 방법
python3 -m onnxsim input.onnx output.onnx
onnx-simplifier Option
python3 -m onnxsim -h
usage: __main__.py [-h] [--enable-fuse-bn] [--skip-fuse-bn]
[--skip-optimization]
[--input-shape INPUT_SHAPE [INPUT_SHAPE ...]]
[--skip-optimizer SKIP_OPTIMIZER [SKIP_OPTIMIZER ...]]
[--skip-shape-inference] [--dynamic-input-shape]
[--input-data-path INPUT_DATA_PATH [INPUT_DATA_PATH ...]]
[--custom-lib CUSTOM_LIB]
input_model output_model [check_n]
positional arguments:
input_model Input ONNX model
output_model Output ONNX model
check_n Check whether the output is correct with n random
inputs
optional arguments:
-h, --help show this help message and exit
--enable-fuse-bn This option is deprecated. Fusing bn into conv is
enabled by default.
--skip-fuse-bn Skip fusing batchnorm into conv.
--skip-optimization Skip optimization of ONNX optimizers.
--input-shape INPUT_SHAPE [INPUT_SHAPE ...]
The manually-set static input shape, useful when the
input shape is dynamic. The value should be
"input_name:dim0,dim1,...,dimN" or simply
"dim0,dim1,...,dimN" when there is only one input, for
example, "data:1,3,224,224" or "1,3,224,224". Note:
you might want to use some visualization tools like
netron to make sure what the input name and dimension
ordering (NCHW or NHWC) is.
--skip-optimizer SKIP_OPTIMIZER [SKIP_OPTIMIZER ...]
Skip a certain ONNX optimizer
--skip-shape-inference
Skip shape inference. Shape inference causes segfault
on some large models
--dynamic-input-shape
This option enables dynamic input shape support.
"Shape" ops will not be eliminated in this case. Note
that "--input-shape" is also needed for generating
random inputs and checking equality. If
"dynamic_input_shape" is False, the input shape in
simplified model will be overwritten by the value of
"input_shapes" param.
--input-data-path INPUT_DATA_PATH [INPUT_DATA_PATH ...]
input data, The value should be "input_name1:xxx1.bin"
"input_name2:xxx2.bin ...", input data should be a
binary data file.
--custom-lib CUSTOM_LIB
custom lib path which should be absolute path, if you
have custom onnxruntime backend you should use this to
register you custom op
728x90
반응형
'Development > Onnx' 카테고리의 다른 글
onnxruntime-gpu: Failed to create CUDAExecutionProvider (0) | 2023.05.11 |
---|---|
[ONNX] Convert TorchScript model to Onnx model (0) | 2022.10.25 |
[ONNX] Onnx-modifier (2) | 2022.10.21 |
[Onnx] onnx-simplifier dynamic batch 모델 사용 방법 (0) | 2022.02.04 |
댓글