-
Notifications
You must be signed in to change notification settings - Fork 724
Arm backend: Explicitly convert quantized value to int64 #7289
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Previously, dequantizing a value with dequantize_value() in backends/arm/tosa_quant_utils.py could result in integer overflow when using numpy 2.1.3. The offending part of the formula is `qx - qargs.zp`. If the subtraction results in a value outside of the range of the dtype of `qx` the following warning is printed: "RuntimeWarning: overflow encountered in scalar subtract" With numpy 1.21.3 the dtype is implicitly convert to a dtype that can store the correct value. However, in numpy 2.1.3 there's no such conversion, leading the function to return an incorrect value. Here's a concrete example: ``` import numpy as np a = np.int8(127) b = -128 print(a-b) ``` Numpy 1.21.3: a - b = 255 Numpy 2.1.3: a - b = -1 To remedy this, explicitly convert qx to int64. Change-Id: Ie0e9e7745a424103ce650e2d58fe1a1a4cbd30e1
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/7289
Note: Links to docs will display an error until the docs builds have been completed. ❌ 1 New FailureAs of commit efb97d5 with merge base 3f7eb3b ( NEW FAILURE - The following job has failed:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
|
@pytorchbot label ciflow/trunk |
|
Can't add following labels to PR: ciflow/trunk. Please ping one of the reviewers for help. |
|
Please seek CI approval before scheduling CIFlow labels |
|
@pytorchbot label ciflow/trunk |
|
Pls rebase |
|
Rebase done. Failing CI test seems unrelated. Error: |
Previously, dequantizing a value with dequantize_value() in backends/arm/tosa_quant_utils.py could result in integer overflow when using numpy 2.1.3. The offending part of the formula is
qx - qargs.zp. If the subtraction results in a value outside of the range of the dtype ofqxthe following warning is printed:"RuntimeWarning: overflow encountered in scalar subtract"
With numpy 1.21.3 the dtype is implicitly convert to a dtype that can store the correct value. However, in numpy 2.1.3 there's no such conversion, leading the function to return an incorrect value.
Here's a concrete example:
Numpy 1.21.3: a - b = 255
Numpy 2.1.3: a - b = -1
To remedy this, explicitly convert qx to int64.
Signed-off-by: Sebastian Larsson [email protected]