Quantizer 실행 시 Unsupported model IR version 오류

xception 모델을 onnx로 변환 후 로드하여 양자화하는 과정 중에서 오류가 납니다.

model = onnx.load_model("model.onnx")
optimized_onnx_model = optimize_model(model=model, opset_version=13, input_shapes={"x": [1, 224, 224, 3]},
    )

해당 코드에서

Exception has occurred: InvalidArgument
[ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Failed to load model with error: /onnxruntime_src/onnxruntime/core/graph/model.cc:147 onnxruntime::Model::Model(onnx::ModelProto&&, const PathString&, const IOnnxRuntimeOpSchemaRegistryList*, const onnxruntime::logging::Logger&, const onnxruntime::ModelOptions&) Unsupported model IR version: 9, max supported IR version: 8
File “/home/ubuntu/miniconda3/envs/new_env/furiosa/furiosa_quantizer.py”, line 17, in main
optimized_onnx_model = optimize_model(
File “/home/ubuntu/miniconda3/envs/new_env/furiosa/furiosa_quantizer.py”, line 46, in
main()
onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Failed to load model with error: /onnxruntime_src/onnxruntime/core/graph/model.cc:147 onnxruntime::Model::Model(onnx::ModelProto&&, const PathString&, const IOnnxRuntimeOpSchemaRegistryList*, const onnxruntime::logging::Logger&, const onnxruntime::ModelOptions&) Unsupported model IR version: 9, max supported IR version: 8

위와 같이 IR version이 맞지 않는다는 오류가 납니다.

어떻게 해결할 수 있을까요?

감사합니다.

안녕하세요 FuriosaAI 김종욱입니다.

현재 환경의 onnx 버전과, onnx runtime의 버전을 알 수 있을까요.
버전이 너무 높을 경우, 버전의 차이로 인한 문제가 발생할 수 있어 아래 버전으로 변경 후 시도가 가능하신 상황이신지요?

$ pip list | grep onnx
onnx                                    1.14.1
onnxruntime                             1.15.1

빠른 답변 감사드립니다.
버전을 확인해보니 onnxruntime이 1.13.1 버전이라서
말씀해주신대로 onnxruntime==1.15.1 로 재설치 했습니다.

그러나 model load 이후

calibrator = Calibrator(optimized_onnx_model, calibration_method=CalibrationMethod.MIN_MAX_ASYM, percentage=99.99
    )

Calibrator code에서 아래와 같은 오류가 발생하네요 ㅠㅠ

Exception has occurred: RuntimeError

Failed to load model with error: /onnxruntime_src/onnxruntime/core/graph/model.cc:146 onnxruntime::Model::Model(onnx::ModelProto&&, const PathString&, const IOnnxRuntimeOpSchemaRegistryList*, const onnxruntime::logging::Logger&, const onnxruntime::ModelOptions&) Unsupported model IR version: 9, max supported IR version: 8

onnxruntime 버전 업데이트 후에도 전에 문의드린 내용과 같은 오류가 발생하는 듯 합니다,

현재 환경의 onnx 버전들은 다음과 같습니다.
onnx 1.14.1
onnx-simplifier 0.4.31
onnxoptimizer 0.3.13
onnxruntime 1.15.1
tf2onnx 1.15.1

감사합니다.

혹시 onnx을 만드실때, 사용하신 방법을 여쭤보아도 괜찮을까요?

동일한 에러를 보았던 기억이 있었는데, 저는 아래와 같은 형식으로 keras 모델로부터 onnx 파일을 만들었더니 해결이 되었던 기억이 있습니다.

onnx_model, _ = tf2onnx.convert.from_keras(model, input_signature, opset=13)
onnx.save(onnx_model, "model.onnx")