Skip to content

Conversation

@evkotov
Copy link
Contributor

@evkotov evkotov commented Nov 18, 2025

Details:

This PR fixes incorrect behavior of DequantizeLinear operator (opset 21) with blocked quantization when axis > 1.

The old implementation had two issues:

  1. Did not support axis > 1 (returned error "Axis > 1 isn't supported")
  2. For axis = 1, produced incorrect results due to wrong dimension ordering

The root cause was incorrect reshape logic that used different ordering for axis = 0 vs axis > 0:

  • axis = 0: [num_blocks, block_size, ...] - correct
  • axis > 0: [D0, ..., block_size, num_blocks, ...] - incorrect

This caused elements to interleave instead of forming sequential blocks, which violates the ONNX specification.

Example

For axis=1, block_size=2, input=[9,9,9,9,9,9,9,9], scale=[1,2,3,4], zero_point=[1,2,3,4]:

  • Old output (incorrect): [8, 14, 8, 14, 18, 20, 18, 20] - elements interleaved
  • New output (correct): [8, 8, 14, 14, 18, 18, 20, 20] - sequential blocks
  • ONNX Runtime: [8, 8, 14, 14, 18, 18, 20, 20] - matches new implementation

Changes

  1. Removed axis <= 1 restriction
  2. Fixed reshape to always use [D0, ..., num_blocks, block_size, ...] ordering for all axes
  3. Fixed unsqueeze position: changed from conditional (axis == 0 ? 1 : axis) to always axis + 1

Implementation

src/frontends/onnx/frontend/src/op/dequantize_linear.cpp:

  • Unified reshape logic: always split dimension at axis into [num_blocks, block_size]
  • Fixed unsqueeze_axis = axis + 1 (previously was incorrect for axis > 0)
  • Removed axis validation that limited support to axis <= 1

Updated 1 existing test:

  • onnx_model_dequantize_linear_opset21_4d: fixed expected output (was using old incorrect interleaved values)

Tickets:

  • 164793

@evkotov evkotov self-assigned this Nov 18, 2025
@evkotov evkotov requested a review from a team as a code owner November 18, 2025 18:14
@evkotov evkotov added the category: ONNX FE OpenVINO ONNX FrontEnd label Nov 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: ONNX FE OpenVINO ONNX FrontEnd

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant