onnxruntime
1765da17 - QDQ transformations in the OpenVINO EP for the NPU device (#20622)

Commit
1 year ago
QDQ transformations in the OpenVINO EP for the NPU device (#20622) We introduce rulesets that eliminate QDQ nodes of unsupported types and for unsupported quantised operators for the NPU device. This leads to improved performance and accuracy on critical client AI models. Here's a summary of the changes: - Introduces the provider option `enable_qdq_optimizer` which when set to `True` enables stripping of QDQ nodes on the NPU device for models with `QuantizeLinear` and `DequantizeLinear` layers in them. `enable_qdq_optimizer` defaults to `False`. - Always strip out int16/uint16 QDQ layers as these types are not supported by the NPU compiler. - Only supported ops `Conv`, `MatMul`, and `Add` retain QDQ layers around them, specifically identified for optimal inference performance. OpenVINO EP achieves this by iterating through NodeUnits in the QDQ model, and reconstructing the graph only with the required layers. - Added provider APIs to manipulate node units from EP code by @adrianlizarraga - Added capability rule for the Pad operator when it takes DQ layers as input - Fixes from static code analysis tool --------- Co-authored-by: adrianlizarraga <adlizarraga@microsoft.com> Co-authored-by: Preetha Veeramalai <preetha.veeramalai@intel.com> Co-authored-by: sfatimar <sahar.fatima@intel.com> Co-authored-by: saurabhkale17 <saurabh1.kale@intel.com>
Author
Parents
Loading