From e1f1974ba8dbf14ea4d40ab35d6e0ee8caea1ba2 Mon Sep 17 00:00:00 2001 From: "Qiong Wu (qiowu)" Date: Wed, 16 Sep 2026 00:35:31 +0800 Subject: [PATCH 1/2] recipe(vitpose): add unvalidated QNN NPU candidates --- .../npu/keypoint-detection_fp32_config.json | 57 ++++++++++++++ .../npu/keypoint-detection_w8a8_config.json | 77 +++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json create mode 100644 examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json diff --git a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json new file mode 100644 index 000000000..ed3ea5e01 --- /dev/null +++ b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json @@ -0,0 +1,57 @@ +{ + "_note": "UNVALIDATED CANDIDATE - DRAFT_ONLY_UNVALIDATED. Current-main model verification NOT_RUN; historical evidence only, not a model-support claim. #1401 is needed for a trustworthy canonical raw/no-optimize baseline. This optimization-enabled FP32 recipe is a fallback candidate, not that canonical raw baseline. The companion W8A8 candidate failed historical full-three-person and wallpaper parity; its posthoc two-person pass is not general quality evidence. Portable calibration processor/revision binding for W8A8 is not yet verified.", + "auto": false, + "export": { + "opset_version": 17, + "batch_size": 1, + "export_params": true, + "do_constant_folding": true, + "verbose": false, + "dynamo": false, + "enable_hierarchy_tags": true, + "clean_onnx": false, + "hierarchy_tag_format": "full", + "input_tensors": [ + { + "name": "pixel_values", + "dtype": "float32", + "shape": [1, 3, 256, 192], + "value_range": [0, 1] + } + ], + "output_tensors": [ + { + "name": "heatmaps" + } + ], + "compatibility": { + "transformers_attention": "eager" + } + }, + "optim": { + "gelu_fusion": true, + "matmul_add_fusion": true + }, + "quant": null, + "compile": { + "execution_provider": "qnn", + "provider_options": { + "device_type": "NPU", + "htp_performance_mode": "burst", + "htp_graph_finalization_optimization_mode": "3" + }, + "provider_option_file_keys": [], + "enable_ep_context": true, + "embed_context": false, + "compiler": "ort", + "qnn_sdk_root": null, + "device": "npu", + "ep_device": null, + "validate": true + }, + "loader": { + "task": "keypoint-detection", + "model_class": "VitPoseForPoseEstimation", + "model_type": "vitpose" + } +} \ No newline at end of file diff --git a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json new file mode 100644 index 000000000..d08894eb7 --- /dev/null +++ b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json @@ -0,0 +1,77 @@ +{ + "_note": "UNVALIDATED CANDIDATE - DRAFT_ONLY_UNVALIDATED. Current-main model verification NOT_RUN; historical evidence only, not a model-support claim. #1401 is needed for a trustworthy canonical raw/no-optimize baseline. Historical W8A8 full-three-person and wallpaper parity FAILED; posthoc two-person PASS does not establish general quality or overturn those failures. Portable calibration processor/revision binding and exact portable-config equivalence are not yet verified.", + "auto": false, + "export": { + "opset_version": 17, + "batch_size": 1, + "export_params": true, + "do_constant_folding": true, + "verbose": false, + "dynamo": false, + "enable_hierarchy_tags": true, + "clean_onnx": false, + "hierarchy_tag_format": "full", + "input_tensors": [ + { + "name": "pixel_values", + "dtype": "float32", + "shape": [1, 3, 256, 192], + "value_range": [0, 1] + } + ], + "output_tensors": [ + { + "name": "heatmaps" + } + ], + "compatibility": { + "transformers_attention": "eager" + } + }, + "optim": { + "gelu_fusion": true, + "matmul_add_fusion": true + }, + "quant": { + "mode": "static", + "samples": 10, + "calibration_method": "minmax", + "weight_type": "uint8", + "activation_type": "uint8", + "per_channel": false, + "symmetric": false, + "weight_symmetric": null, + "activation_symmetric": null, + "save_calibration": false, + "distribution": "uniform", + "seed": 42, + "calibration_load_path": null, + "calibration_save_path": null, + "op_types_to_quantize": null, + "nodes_to_exclude": null, + "task": "keypoint-detection", + "model_id": "usyd-community/vitpose-plus-base", + "model_type": "vitpose" + }, + "compile": { + "execution_provider": "qnn", + "provider_options": { + "device_type": "NPU", + "htp_performance_mode": "burst", + "htp_graph_finalization_optimization_mode": "3" + }, + "provider_option_file_keys": [], + "enable_ep_context": true, + "embed_context": false, + "compiler": "ort", + "qnn_sdk_root": null, + "device": "npu", + "ep_device": null, + "validate": true + }, + "loader": { + "task": "keypoint-detection", + "model_class": "VitPoseForPoseEstimation", + "model_type": "vitpose" + } +} \ No newline at end of file From b0660d0db4f22c91911c4b3b827fa6464123adee Mon Sep 17 00:00:00 2001 From: Qiong Wu Date: Tue, 29 Sep 2026 16:03:39 +0800 Subject: [PATCH 2/2] recipe(vitpose): retain only validated FP32 QNN NPU candidate --- .../npu/keypoint-detection_fp32_config.json | 122 ++++++++++-------- .../npu/keypoint-detection_w8a8_config.json | 77 ----------- 2 files changed, 65 insertions(+), 134 deletions(-) delete mode 100644 examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json diff --git a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json index ed3ea5e01..cd1cb9ed7 100644 --- a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json +++ b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_fp32_config.json @@ -1,57 +1,65 @@ -{ - "_note": "UNVALIDATED CANDIDATE - DRAFT_ONLY_UNVALIDATED. Current-main model verification NOT_RUN; historical evidence only, not a model-support claim. #1401 is needed for a trustworthy canonical raw/no-optimize baseline. This optimization-enabled FP32 recipe is a fallback candidate, not that canonical raw baseline. The companion W8A8 candidate failed historical full-three-person and wallpaper parity; its posthoc two-person pass is not general quality evidence. Portable calibration processor/revision binding for W8A8 is not yet verified.", - "auto": false, - "export": { - "opset_version": 17, - "batch_size": 1, - "export_params": true, - "do_constant_folding": true, - "verbose": false, - "dynamo": false, - "enable_hierarchy_tags": true, - "clean_onnx": false, - "hierarchy_tag_format": "full", - "input_tensors": [ - { - "name": "pixel_values", - "dtype": "float32", - "shape": [1, 3, 256, 192], - "value_range": [0, 1] - } - ], - "output_tensors": [ - { - "name": "heatmaps" - } - ], - "compatibility": { - "transformers_attention": "eager" - } - }, - "optim": { - "gelu_fusion": true, - "matmul_add_fusion": true - }, - "quant": null, - "compile": { - "execution_provider": "qnn", - "provider_options": { - "device_type": "NPU", - "htp_performance_mode": "burst", - "htp_graph_finalization_optimization_mode": "3" - }, - "provider_option_file_keys": [], - "enable_ep_context": true, - "embed_context": false, - "compiler": "ort", - "qnn_sdk_root": null, - "device": "npu", - "ep_device": null, - "validate": true - }, - "loader": { - "task": "keypoint-detection", - "model_class": "VitPoseForPoseEstimation", - "model_type": "vitpose" - } -} \ No newline at end of file +{ + "_note": "FP32 QNN/NPU recipe. Build and bounded COCO validation completed on source 0602891 with QNN EP 2.2480.53.0. Ten images / 26 persons are functional smoke evidence, not representative accuracy. No FP16 or quantized target support is claimed.", + "auto": false, + "export": { + "opset_version": 17, + "batch_size": 1, + "export_params": true, + "do_constant_folding": true, + "verbose": false, + "dynamo": false, + "enable_hierarchy_tags": true, + "clean_onnx": false, + "hierarchy_tag_format": "full", + "input_tensors": [ + { + "name": "pixel_values", + "dtype": "float32", + "shape": [ + 1, + 3, + 256, + 192 + ], + "value_range": [ + 0, + 1 + ] + } + ], + "output_tensors": [ + { + "name": "heatmaps" + } + ], + "compatibility": { + "transformers_attention": "eager" + } + }, + "optim": { + "gelu_fusion": true, + "matmul_add_fusion": true + }, + "quant": null, + "compile": { + "execution_provider": "qnn", + "provider_options": { + "device_type": "NPU", + "htp_performance_mode": "burst", + "htp_graph_finalization_optimization_mode": "3" + }, + "provider_option_file_keys": [], + "enable_ep_context": true, + "embed_context": false, + "compiler": "ort", + "qnn_sdk_root": null, + "device": "npu", + "ep_device": null, + "validate": true + }, + "loader": { + "task": "keypoint-detection", + "model_class": "VitPoseForPoseEstimation", + "model_type": "vitpose" + } +} diff --git a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json b/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json deleted file mode 100644 index d08894eb7..000000000 --- a/examples/recipes/usyd-community_vitpose-plus-base/qnn/npu/keypoint-detection_w8a8_config.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_note": "UNVALIDATED CANDIDATE - DRAFT_ONLY_UNVALIDATED. Current-main model verification NOT_RUN; historical evidence only, not a model-support claim. #1401 is needed for a trustworthy canonical raw/no-optimize baseline. Historical W8A8 full-three-person and wallpaper parity FAILED; posthoc two-person PASS does not establish general quality or overturn those failures. Portable calibration processor/revision binding and exact portable-config equivalence are not yet verified.", - "auto": false, - "export": { - "opset_version": 17, - "batch_size": 1, - "export_params": true, - "do_constant_folding": true, - "verbose": false, - "dynamo": false, - "enable_hierarchy_tags": true, - "clean_onnx": false, - "hierarchy_tag_format": "full", - "input_tensors": [ - { - "name": "pixel_values", - "dtype": "float32", - "shape": [1, 3, 256, 192], - "value_range": [0, 1] - } - ], - "output_tensors": [ - { - "name": "heatmaps" - } - ], - "compatibility": { - "transformers_attention": "eager" - } - }, - "optim": { - "gelu_fusion": true, - "matmul_add_fusion": true - }, - "quant": { - "mode": "static", - "samples": 10, - "calibration_method": "minmax", - "weight_type": "uint8", - "activation_type": "uint8", - "per_channel": false, - "symmetric": false, - "weight_symmetric": null, - "activation_symmetric": null, - "save_calibration": false, - "distribution": "uniform", - "seed": 42, - "calibration_load_path": null, - "calibration_save_path": null, - "op_types_to_quantize": null, - "nodes_to_exclude": null, - "task": "keypoint-detection", - "model_id": "usyd-community/vitpose-plus-base", - "model_type": "vitpose" - }, - "compile": { - "execution_provider": "qnn", - "provider_options": { - "device_type": "NPU", - "htp_performance_mode": "burst", - "htp_graph_finalization_optimization_mode": "3" - }, - "provider_option_file_keys": [], - "enable_ep_context": true, - "embed_context": false, - "compiler": "ort", - "qnn_sdk_root": null, - "device": "npu", - "ep_device": null, - "validate": true - }, - "loader": { - "task": "keypoint-detection", - "model_class": "VitPoseForPoseEstimation", - "model_type": "vitpose" - } -} \ No newline at end of file