Skip to content

Arm backend: Keep internal shared qspec with uint8 IO#20978

Open
bdemirb wants to merge 3 commits into
pytorch:mainfrom
bdemirb:baris/1286838-keep-internal-shared-qspec-uint8
Open

Arm backend: Keep internal shared qspec with uint8 IO#20978
bdemirb wants to merge 3 commits into
pytorch:mainfrom
bdemirb:baris/1286838-keep-internal-shared-qspec-uint8

Conversation

@bdemirb

@bdemirb bdemirb commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

bdemirb added 2 commits June 25, 2026 16:12
When preserved uint8 model IO is used, SharedQspecQuantizer can
merge image-scale tensors with wider internal activation ranges.

Avoid using cat, concatenate, stack, pixel_shuffle, and slice as
fallback shared-qspec bridge ops for graphs with uint8 IO. This keeps
normal int8 quantization behaviour unchanged while preserving image
input qparams for uint8 IO flows.

Add a regression test covering image-like uint8 IO joined with a
high-range branch.

Signed-off-by: Baris Demir <baris.demir@arm.com>
Change-Id: Ieeb1cf59e606674ac34050ebe21fc080740cc567
The uint8 IO shared-qspec guard previously removed bridge

ops from SharedQspecQuantizer for the whole graph when a

model had preserved uint8 IO.

That protects image IO accuracy, but it also prevents

internal cat clusters from sharing qparams. In RIFE this

creates full-resolution FP32/QDQ concat islands before

quantized convs.

Keep the uint8 IO guard local to shared clusters that

actually touch uint8 model IO. Internal shared-qspec

clusters can still be annotated and lowered as quantized

ops.

Add regression coverage for both cases: cat must not bridge

uint8 IO to high-range activations, while internal cat

between quantized convs must still share qparams.

Signed-off-by: Baris Demir <baris.demir@arm.com>
Change-Id: I528572d6136f78cbfe27c75579c8b37a4e560887
@bdemirb bdemirb requested a review from digantdesai as a code owner July 16, 2026 13:45
@pytorch-bot

pytorch-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

🔗 Helpful Links

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

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

⏳ 255 Pending, 1 Unrelated Failure

As of commit cd7fb98 with merge base c2b273e (image):

FLAKY - The following job failed but was likely due to flakiness present on trunk:

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

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 16, 2026
@github-actions github-actions Bot added ciflow/trunk module: arm Issues related to arm backend labels Jul 16, 2026
@bdemirb

bdemirb commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator Author

@pytorchbot label "partner: arm"

@pytorch-bot pytorch-bot Bot added the partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm label Jul 16, 2026
@bdemirb

bdemirb commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator Author

@pytorchbot label "release notes: arm"

@pytorch-bot pytorch-bot Bot added the release notes: arm Changes to the ARM backend delegate label Jul 16, 2026
@bdemirb bdemirb changed the title Baris/1286838 keep internal shared qspec uint8 Arm backend: Keep internal shared qspec with uint8 IO Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunk CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. module: arm Issues related to arm backend partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm release notes: arm Changes to the ARM backend delegate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant