Skip to content

Recover Conv/ConvTranspose rank from weight when input shape is unknown#29149

Open
fanchenkong1 wants to merge 1 commit into
microsoft:mainfrom
fanchenkong1:rank-recover
Open

Recover Conv/ConvTranspose rank from weight when input shape is unknown#29149
fanchenkong1 wants to merge 1 commit into
microsoft:mainfrom
fanchenkong1:rank-recover

Conversation

@fanchenkong1

Copy link
Copy Markdown
Contributor

Recover Conv/ConvTranspose rank from weight when input shape is unknown, enabling layout transformation to NHWC for more nodes.

Description

The layout transformer skips converting a node to NHWC when input[0] has no inferred shape.

For Conv and ConvTranspose operators, the data input (input[0]) and the weight (input[1]) always share the same rank. When the input rank is unknown, recover it from the weight.

Performance Impact

Measured on Kokoro-82M-v1.0-ONNX text-to-speech model (onnx-community/Kokoro-82M-v1.0-ONNX) with WebGPU ep,

Platform Latency reduction Speedup
Intel Wildcat Lake −32.0% 1.47×
Intel Panther Lake −20.0% 1.25×

This change yields a 1.2–1.5× speedup on the Kokoro-82M text-to-speech model.

The layout transformer skips converting a node to NHWC when input[0] has
no inferred shape. But the NCHW<->NHWC permutation depends only on rank.

For Conv/ConvTranspose the data input and weight share the same rank, so
when input[0]'s rank is unknown, recover it from the weight at input[1].
@fanchenkong1 fanchenkong1 marked this pull request as ready for review June 18, 2026 04:44
@fanchenkong1

Copy link
Copy Markdown
Contributor Author

@qjia7 @guschmue This change is ready for review. PTAL, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant