Skip to content

[QNN EP] Support Softmax/LogSoftmax with any axis attribute#17877

Merged
adrianlizarraga merged 5 commits intomainfrom
adrianl/qnn-softmax-axis-support
Oct 12, 2023
Merged

[QNN EP] Support Softmax/LogSoftmax with any axis attribute#17877
adrianlizarraga merged 5 commits intomainfrom
adrianl/qnn-softmax-axis-support

Conversation

@adrianlizarraga
Copy link
Copy Markdown
Contributor

Description

The QNN HTP backend only supports Softmax/LogSoftmax operators with an axis attribute set to input_rank - 1 (i.e., the last dimension). This PR adds support for any axis by wrapping the QNN operator in transposes.

Motivation and Context

Support more models.

@adrianlizarraga adrianlizarraga marked this pull request as ready for review October 11, 2023 00:10
Copy link
Copy Markdown
Contributor

@HectorSVC HectorSVC left a comment

Choose a reason for hiding this comment

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

:shipit:

@adrianlizarraga adrianlizarraga merged commit 565bead into main Oct 12, 2023
@adrianlizarraga adrianlizarraga deleted the adrianl/qnn-softmax-axis-support branch October 12, 2023 00:43
adrianlizarraga added a commit that referenced this pull request Oct 13, 2023
### Description
We need to ensure that tensors are first created and validated by their
producers. If we don't, then builders that need to modify their outputs
may not be able to do so if consumers are processed first (due to
caching of tensors). For example, the Tanh builder may need to override
its output quant param for 16-bit QDQ. I've encountered a scenario
(while working on a partner model) where the override was not being
correctly applied due to the graph traversal order.

I tried to fix this bug in a previous
[PR](#17877 (comment)),
but my fix was incorrect.
jchen351 pushed a commit that referenced this pull request Oct 18, 2023
### Description
We need to ensure that tensors are first created and validated by their
producers. If we don't, then builders that need to modify their outputs
may not be able to do so if consumers are processed first (due to
caching of tensors). For example, the Tanh builder may need to override
its output quant param for 16-bit QDQ. I've encountered a scenario
(while working on a partner model) where the override was not being
correctly applied due to the graph traversal order.

I tried to fix this bug in a previous
[PR](#17877 (comment)),
but my fix was incorrect.
kleiti pushed a commit to kleiti/onnxruntime that referenced this pull request Mar 22, 2024
…t#17877)

### Description
The QNN HTP backend only supports Softmax/LogSoftmax operators with an
axis attribute set to `input_rank - 1` (i.e., the last dimension). This
PR adds support for any axis by wrapping the QNN operator in transposes.


### Motivation and Context
Support more models.
kleiti pushed a commit to kleiti/onnxruntime that referenced this pull request Mar 22, 2024
…soft#17913)

### Description
We need to ensure that tensors are first created and validated by their
producers. If we don't, then builders that need to modify their outputs
may not be able to do so if consumers are processed first (due to
caching of tensors). For example, the Tanh builder may need to override
its output quant param for 16-bit QDQ. I've encountered a scenario
(while working on a partner model) where the override was not being
correctly applied due to the graph traversal order.

I tried to fix this bug in a previous
[PR](microsoft#17877 (comment)),
but my fix was incorrect.
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.

2 participants