pt모델을 onnx로 변환 중 [에러1]와 같은 에러가 발생합니다.
TPS 변환 단계에서 사용하는 grid_sample 연산이 ONNX opset 13에서는 지원되지 않아서 발생하는 문제로 파악되어 opset_version=16로 수정하여 ONNX로 변환을 하였습니다.
이후 양자화 후 컴파일을 진행하려 하는데 [에러2]가 발생합니다.
Furiosa 컴파일러가 ONNX 그래프를 읽는 과정에서 GridSample 연산을 지원하지 못해서 발생하는 문제로 파악되는데 GridSample 연산을 다른방법으로 우회해 사용할 수 있는 방법이 있는지 문의드립니다.
[에러1]
(warboy) clapi@sysadmin-B7105F48TV4HR-2T-N:~/ocr_npu/innocr/npu$ python export_onnx_rec.py
/home/clapi/ocr_npu/innocr/mods/ocr/recognition/network.py:1440: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can’t record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
if is_train:
Traceback (most recent call last):
File “/home/clapi/ocr_npu/innocr/npu/export_onnx_rec.py”, line 54, in
export_to_onnx(model_path, “ocr_recognizer.onnx”)
File “/home/clapi/ocr_npu/innocr/npu/export_onnx_rec.py”, line 33, in export_to_onnx
torch.onnx.export(
File “/home/clapi/miniconda3/envs/warboy/lib/python3.10/site-packages/torch/onnx/utils.py”, line 504, in export
_export(
File “/home/clapi/miniconda3/envs/warboy/lib/python3.10/site-packages/torch/onnx/utils.py”, line 1529, in _export
graph, params_dict, torch_out = _model_to_graph(
File “/home/clapi/miniconda3/envs/warboy/lib/python3.10/site-packages/torch/onnx/utils.py”, line 1115, in _model_to_graph
graph = _optimize_graph(
File “/home/clapi/miniconda3/envs/warboy/lib/python3.10/site-packages/torch/onnx/utils.py”, line 663, in _optimize_graph
graph = _C._jit_pass_onnx(graph, operator_export_type)
File “/home/clapi/miniconda3/envs/warboy/lib/python3.10/site-packages/torch/onnx/utils.py”, line 1909, in _run_symbolic_function
raise errors.UnsupportedOperatorError(
torch.onnx.errors.UnsupportedOperatorError: Exporting the operator ‘aten::grid_sampler’ to ONNX opset version 13 is not supported. Support for this operator was added in version 16, try exporting with this version.
[에러2]
(warboy) clapi@sysadmin-B7105F48TV4HR-2T-N:~/ocr_npu/innocr/npu/recognizer$ furiosa-compile recognition_model_simplified_quant.onnx --target-npu warboy-2pe
[1/6] Compiling from onnx to dfg
thread ‘main’ panicked at ‘failed to parse node.op_type(GridSample)’, crates/npu-ir/src/furiosa_ir/furiosa_ir_onnx.rs:4928:33
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: failed to fill whole buffer