Skip to content

Conversation

ahmtox
Copy link
Contributor

@ahmtox ahmtox commented Jun 9, 2025

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@ahmtox ahmtox requested a review from SS-JIA as a code owner June 9, 2025 15:04
Copy link

pytorch-bot bot commented Jun 9, 2025

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/11481

Note: Links to docs will display an error until the docs builds have been completed.

❌ 1 Cancelled Job, 3 Unrelated Failures

As of commit 794428e with merge base 8cfa858 (image):

CANCELLED JOB - The following job was cancelled. Please retry:

FLAKY - The following jobs failed but were likely due to flakiness present on trunk:

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

ASSERT_TRUE(output_correct);
}

// Test cases for dequantize_per_tensor
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also add tests for int32 and int64

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

theres no real support for int64 in the shader. right now dequantize matches the IO for quantize which include half, float and then uint8, int8, and int32 as common dtypes and to avoid generating excess variants. if int64 is a necessary variant I'll make those changes in a future diff.

there is a diff that adds double support (though really just fp32 underneath)

i will add more tests in this diff.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As @ahmtox has pointed out, to reduce binary size Vulkan kind of takes the opposite approach of the portable kernels, which means supporting the minimum dtypes necessary i.e. basically what we would expect to encounter in a "real" model.

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

@ahmtox ahmtox added the release notes: vulkan Changes to the Vulkan backend delegate label Jun 11, 2025
Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

Creating dequantize_per_tensor testing framework along with a reference implementation for testing

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)

[ghstack-poisoned]
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D76267054

@facebook-github-bot facebook-github-bot merged commit dad8b5b into gh/ahmtox/14/base Jun 14, 2025
93 of 98 checks passed
@facebook-github-bot facebook-github-bot deleted the gh/ahmtox/14/head branch June 14, 2025 03:46
kedarnath03 pushed a commit to kedarnath03/executorch that referenced this pull request Jun 25, 2025
Pull Request resolved: pytorch/executorch#11481

# Context
In order to enhance my own understanding of these operators, I needed to create a reference implementation, and also build out the vulkan testing framework which creates the necessary build up when I need to call the vulkan implementations. I won't explain what the dequantize operator actually is in this diff, but will rather opt to explain the operator in a future diff where I implement the glsl shader, however, the reference implementation is heavily inspired by the cpu implementation and aims to create similar checks when using the zero points and scales and performing the dequantization with the given parameters.

This diff is the per_tensor reference implementation.

# Changes
The main changes were the include of the reference implementation that is used for my own learning, and the necessary wrapper functions that will be called later when the vulkan implementation is successfully completed. It has everything necessary for this purpose, including calling the operator by its appropriate name as when defined in the C++ implementation header, and staging components correctly from the GPU and then the CPU which will be where the comparison is done. I have also included comprehensive failure print statements that prints the tensor size along with relevant parameters such as the zero points or scales passed in.

This is for the per_tensor implementation.
ghstack-source-id: 290376492
@exported-using-ghexport

Differential Revision: [D76267054](https://our.internmc.facebook.com/intern/diff/D76267054/)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported release notes: vulkan Changes to the Vulkan backend delegate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants