Skip to content

Part of QuantizeLinear results have a bias of 1 #707

@sgbihu

Description

@sgbihu

Describe the issue

The OV's implementation:

// levels is the number of quantization levels (e.g. 2 is for binarization, 255/256 is for int8 quantization)
if x <= min(input_low, input_high):
    output = output_low
elif x > max(input_low, input_high):
    output = output_high
else:
    # input_low < x <= input_high
    output = round((x - input_low) / (input_high - input_low) * (levels-1)) / (levels-1) * (output_high - output_low) + return output_low

The ONNX's implementation:

y = round((x / y_scale) + y_zero_point)

So it will have 1 difference in some corner case.

To reproduce

onnxruntime_test_all.exe --gtest_filter=QuantizeLinearOpTest.Int8_PositiveZeroPoint
Note: Google Test filter = QuantizeLinearOpTest.Int8_PositiveZeroPoint
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from QuantizeLinearOpTest
[ RUN ] QuantizeLinearOpTest.Int8_PositiveZeroPoint
No of unsupported nodes 0
D:\lianggao\Documents\onnxruntime\onnxruntime\test\providers\checkers.cc(314): error: Expected equality of these values:
cur_expected[i]
Which is: 'c' (99, 0x63)
cur_actual[i]
Which is: 'd' (100, 0x64)
i:2
Google Test trace:
D:\lianggao\Documents\onnxruntime\onnxruntime\test\providers\checkers.cc(568): provider type: OpenVINOExecutionProvider
D:\lianggao\Documents\onnxruntime\onnxruntime\test\providers\base_tester.cc(846): registered execution providers: OpenVINOExecutionProvider
Stack trace:
00007FF7133E28DE: (unknown)
00007FF7133E0245: (unknown)
00007FF7133E0A3A: (unknown)
00007FF7133EE7B1: (unknown)
00007FF7133D5EF2: (unknown)
00007FF7133DBB6C: (unknown)
00007FF7133DE03D: (unknown)
00007FF7133DC9FD: (unknown)
00007FF7133DCB38: (unknown)
00007FF7138FAB05: (unknown)
00007FF7143CC69B: (unknown)
00007FF7143CC586: (unknown)
00007FF7143F2034: (unknown)
00007FF7143F214D: (unknown)
00007FF7143F22EE: (unknown)
... Google Test internal frames ...

[ FAILED ] QuantizeLinearOpTest.Int8_PositiveZeroPoint (860 ms)
[----------] 1 test from QuantizeLinearOpTest (886 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (892 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] QuantizeLinearOpTest.Int8_PositiveZeroPoint

1 FAILED TEST

Urgency

No response

Platform

Windows

OS Version

Win11

ONNX Runtime Installation

Built from Source

ONNX Runtime Version or Commit ID

660adfc

ONNX Runtime API

Python

Architecture

X64

Execution Provider

OpenVINO

Execution Provider Library Version

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions