Onnxruntime outputs와 Quantized model outputs 비교

양자화한 Yolov8 모델의 output을 postprocess하는 과정 중에 궁금한 점이 있습니다.

현재 모델의 상태는 다음과 같습니다.
image

ModelEditor API를 통해 모델의 입력 타입을 변경했고 양자화된 모델로 추론을 진행했습니다.

ONNX 런타임에서 계산된 출력값과 위 양자화된 모델에서 계산된 출력값을 비교해보고 싶어서 각각 후처리를 진행하는데 결과값의 차이가 큰 이유가 궁금합니다.

양자화한 모델이 dequantize된 float 형식의 출력값을 뱉기 때문에 결과 값이 어느 정도 비슷할거라고 생각했습니다.

두 모델의 출력 텐서와 타입은 일치합니다.

<ONNX 런타임에서 계산된 결과값 일부>
image

<양자화한 모델에서 계산된 결과값 일부>

1 Like

안녕하세요 FuriosaAI 김종욱입니다. 질문주신 내용에 대하여 답을 드리면
양자화를 진행하는 경우에, 출력에 대하여 오차가 발생할 수 있습니다.

양자화를 진행하는 과정에서 보정 범위를 구하기 위해, 학습데이터 중 일부를 사용하게 되는데 이때 모델이 가질 수 있는 다양한 범위의 값을 잘 표현할 수 있는 데이터셋을 선정하여야 합니다.

즉, dequantize 된 float 형식의 값이라도 원본 모델과 달라질 수 있으며 이는 양자화시 사용한 데이터에 따라 영향을 많이 받고(학습 데이터 중 일부를 사용), 보정 범위를 계산할때 사용하는 CalibrationMethod 방법에 따라도 값이 달라질 수 있기 때문에 추가적인 테스트를 통하여 검증이 필요합니다.

1 Like