Skip to content

[QNN EP] Support Conv + Clip/Relu fusion#21537

Merged
adrianlizarraga merged 22 commits intomainfrom
adrianl/qnn-conv-relu-clip
Aug 2, 2024
Merged

[QNN EP] Support Conv + Clip/Relu fusion#21537
adrianlizarraga merged 22 commits intomainfrom
adrianl/qnn-conv-relu-clip

Conversation

@adrianlizarraga
Copy link
Copy Markdown
Contributor

@adrianlizarraga adrianlizarraga commented Jul 29, 2024

Description

  • Supports quantized Conv + Activation on the HTP backend:
    • Translates DQs -> Conv -> Relu/Clip -> Q into a single QNN Conv operator if the Relu (or Clip) are redundant.

Motivation and Context

Expands support for QDQ models created with tools that do not wrap Relu or Clip with QDQ nodes.

This PR introduces the IQnnNodeGroup class. In the same way that a NodeUnit represents a collection of Nodes, a IQnnNodeGroup can represent one or more NodeUnits that are translated into a QNN operator. QNN EP parses the ONNX graph to create a list of IQnnNodeGroup objects, each representing a single NodeUnit or a fusion of multiple NodeUnits.

@adrianlizarraga adrianlizarraga added the ep:QNN issues related to QNN exeution provider label Jul 29, 2024
@adrianlizarraga adrianlizarraga marked this pull request as ready for review July 29, 2024 08:22
@adrianlizarraga adrianlizarraga merged commit 0e708de into main Aug 2, 2024
@adrianlizarraga adrianlizarraga deleted the adrianl/qnn-conv-relu-clip branch August 2, 2024 18:02
@jywu-msft jywu-msft added the release:1.19.0 Cherry pick to ORT 1.19 label Aug 2, 2024
@adrianlizarraga
Copy link
Copy Markdown
Contributor Author

Hi @MaanavD, @sophies927, and @prathikr. We would also like to cherry-pick this PR. We can provide more context.

prathikr pushed a commit that referenced this pull request Aug 2, 2024
### Description
- Supports quantized Conv + Activation on the HTP backend:
- Translates `DQs -> Conv -> Relu/Clip -> Q` into a single QNN Conv
operator if the Relu (or Clip) are redundant.



### Motivation and Context
Expands support for QDQ models created with tools that do not wrap Relu
or Clip with QDQ nodes.

This PR introduces the `IQnnNodeGroup` class. In the same way that a
`NodeUnit` represents a collection of `Nodes`, a `IQnnNodeGroup` can
represent one or more `NodeUnits` that are translated into a QNN
operator. QNN EP parses the ONNX graph to create a list of
`IQnnNodeGroup` objects, each representing a single `NodeUnit` or a
fusion of multiple `NodeUnits`.
prathikr pushed a commit that referenced this pull request Aug 3, 2024
### Description
- Supports quantized Conv + Activation on the HTP backend:
- Translates `DQs -> Conv -> Relu/Clip -> Q` into a single QNN Conv
operator if the Relu (or Clip) are redundant.



### Motivation and Context
Expands support for QDQ models created with tools that do not wrap Relu
or Clip with QDQ nodes.

This PR introduces the `IQnnNodeGroup` class. In the same way that a
`NodeUnit` represents a collection of `Nodes`, a `IQnnNodeGroup` can
represent one or more `NodeUnits` that are translated into a QNN
operator. QNN EP parses the ONNX graph to create a list of
`IQnnNodeGroup` objects, each representing a single `NodeUnit` or a
fusion of multiple `NodeUnits`.
@prathikr prathikr added the cherry-picked Cherry-picked for a cherrypicks branch label Aug 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-picked Cherry-picked for a cherrypicks branch ep:QNN issues related to QNN exeution provider release:1.19.0 Cherry pick to ORT 1.19

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants