[Feature] Support for Qualcomm NPU Hardware Acceleration (QNN Execution Provider) #25112
Replies: 1 comment
I have a working QNN HTP pipeline running on a Radxa Dragon Q6A (QCS6490, Hexagon v68) with Immich v3.0.3. The code changes to enable QNN EP are minimal:
The NPU engages and executes both ArcFace and CLIP ViT-SO400M models (confirmed via DDR bandwidth monitoring). However, I hit a hardware-level constraint that blocks production use on this specific SoC: The QCS6490's Hexagon v68 DSP (with the latest available firmware, c4-00004) only supports INT8 and not FP16 or FP32. Running an unquantized model returns The SocModel doesn't support FP16. This means every layer must be INT8-quantized with no precision fallback. For Immich's models:
For comparison, RK3588's NPU supports FP16, so RKNN quantization can keep sensitive layers in higher precision. That's why the existing -rknn models work and -qnn doesn't — at least on this generation of Qualcomm hardware. What may would help:
Happy to help test if anyone wants to iterate on this — the hardware is ready, the pipeline works, we just need better quantization or FP16 support. |
Uh oh!
There was an error while loading. Please reload this page.
I have searched the existing feature requests, both open and closed, to make sure this is not a duplicate request.
The feature
Hi Immich Team,
with the additions of RKNN and ARM NN support, I would like to propose adding support for Qualcomm NPUs via the ONNX Runtime QNN Execution Provider.
This would benefit users running Immich on high-end Qualcomm-based SBCs like the Radxa Dragon Q6A (QCS6490) or potentially Windows-on-ARM servers.
Technical Details:
-qnn) containing theonnxruntime-qnnbuild and the necessary shared libraries likelibQnnHtp.so.Benefits:
The Qualcomm QCS6490 NPU is significantly more powerful than standard ARM NN (Mali) implementations for ML tasks.
Is this something the team or community would be interested in exploring? I am happy to help test on a Radxa Dragon Q6A.
Platform
All reactions