From 4386562f9b649146d5574523ea298b0a893397a2 Mon Sep 17 00:00:00 2001 From: tzhouam Date: Thu, 24 Sep 2026 14:38:51 +0800 Subject: [PATCH] Record pinned S25 and X Elite vocoder waveform evidence --- .../results/e2e_expansion_20260924/README.md | 10 ++- .../qwen_tts_vocoder_qualcomm/README.md | 17 +++- .../s25/full_pinned_tflite/README.md | 16 ++-- .../s25/full_pinned_tflite/audit_report.json | 78 ++++++++++++++++++ .../s25/full_pinned_tflite/device_output.npz | Bin 0 -> 115235 bytes .../historical_device_parity_report.json | 16 ++++ .../full_pinned_tflite/inference_report.json | 33 ++++++++ .../xelite/qnn_short_chunk/README.md | 15 ++-- .../xelite/qnn_short_chunk/audit_report.json | 77 +++++++++++++++++ .../xelite/qnn_short_chunk/device_output.npz | Bin 0 -> 3639 bytes .../qnn_short_chunk/inference_report.json | 32 +++++++ .../evidence/summary/README.md | 10 +-- docs/design/omni_edge_e2e_roadmap.md | 12 ++- 13 files changed, 291 insertions(+), 25 deletions(-) create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/audit_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/device_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/historical_device_parity_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/inference_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/audit_report.json create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/device_output.npz create mode 100644 benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/inference_report.json diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md index ef289d41d..d9a670a7a 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/README.md @@ -31,8 +31,10 @@ ONNX CPU waveform at 1.89e-6 relative L2 on that fixture, without proving the source export's revision. A [fresh 25-frame export](evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md) from that pinned snapshot matches local eager CPU at 1.99e-6 relative L2 and -has compiled to S25 TFLite. Its GPU-requested inference and placement -profile are pending, separate from the historical target's measurements. +has compiled to S25 TFLite. Its GPU-requested inference returned an +unsaturated waveform at 4.239% relative L2 versus local ONNX CPU, bitwise +identical to the historical GPU output on this fixture. Its own placement +profile remains pending; the historical timing is separate evidence. The same pinned [two-frame graph on Galaxy S24](evidence/qwen_tts_vocoder_qualcomm/s24/tflite_short_chunk/README.md) matched local ONNX CPU at 5.75e-6 relative L2 when requested on CPU, while @@ -42,7 +44,9 @@ its GPU-requested waveform was fully saturated at 24.218 relative L2. The A FP32-preserving GPU control returned the same saturated waveform bitwise. A [Snapdragon X Elite FP16 QNN short graph](evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md) -compiled, with NPU inference still pending. These are component-only results. +compiled and returned an unsaturated NPU-requested waveform at 0.930% +relative L2 versus local ONNX CPU on one fixture. Its placement profile +remains pending. These are component-only results. The [Qwen3-TTS vocoder study](evidence/qwen_tts_vocoder_qualcomm/README.md) reuses a retained fixed-shape Code2Wav export and historical Workbench input to test numerical behavior on SA8775P and other Qualcomm settings. The fresh SA8775P GPU-requested inference produces a saturated waveform, while the same binary's CPU-requested output on the exact SA device matches ONNX CPU within 4.13e-6 relative L2. Its 100-sample CPU-requested component profile had p50/p95 5.384/5.534 s with all 738 execution-detail rows on CPU. A FP32-preserving GPU-option control still saturated 84.89% of samples, so that option did not repair the tested path. RB3 GPU-requested execution produces an unsaturated but 15.73%-divergent waveform; its fresh 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s, not a usable TTS timing claim. On the exact RB3 device, the same binary requested on CPU matched original ONNX CPU within 4.13e-6 relative L2 on the retained fixture; its 47-sample component profile measured p50/p95 12.727/13.424 s with all 738 execution-detail rows on CPU. This is a major streaming-latency blocker. A single-fixture-calibrated RB3 INT8 QNN vocoder returned a finite but 66.93%-relative-L2 divergent waveform (3.49 dB SNR) versus ONNX CPU; its 100-sample component profile was p50/p95 1.971/1.992 s with all 728 execution-detail rows on NPU; these timings describe numerically unqualified audio. X Elite ONNX CPU output matches the local ONNX Runtime reference on the retained fixture; its 94-sample component p50/p95 was 6.384/6.644 s with all execution-detail rows on CPU. Corrected X Elite DirectML inference and profile both failed during provider initialization; separate FP16 QNN DLC inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR against original ONNX CPU; its placement profile timed out during QNN graph preparation without samples. A separate SA8775P FP16 QNN vocoder compile passed, but same-fixture NPU-requested inference failed after compilation without a waveform or placement samples. Fresh S24 and S25 CPU-requested TFLite vocoder inferences matched ONNX CPU within 4.04e-6 relative L2 on the retained fixture. S25 measured 100 component samples at p50/p95 4.418/4.641 s with all 738 execution-detail rows on CPU; S24 measured 100 at 4.826/4.958 s with all 738 rows on CPU. Separate explicit INT8 and W8A16 QDQ ONNX exports checked on local ORT CPU failed the same-fixture numerical gate at 246.97% and 331.83% waveform relative L2, respectively. S25 CPU talker inference preserved token 80 and its 100-sample component profile measured p50/p95 30.161/31.301 ms with all 1,800 rows on CPU. No complete on-device TTS stream or model-quality qualification is claimed. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md index d75f1bb4a..da3ef5712 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md @@ -10,7 +10,22 @@ matched that historical ONNX CPU waveform at **1.89e-6 relative L2** on the same fixture, strengthening numerical continuity without proving the historical export revision. -On [Galaxy S24](s24/tflite_short_chunk/README.md), the same pinned two-frame TFLite source matched local ONNX CPU at 5.75e-6 relative L2 when requested on CPU, but its GPU-requested output saturated every sample and differed by 24.218 relative L2. The 100-sample CPU component p50/p95 was 3.433/3.873 s for only 0.16 s audio (median RTF 21.46), with all 738 rows on CPU. The mixed CPU/GPU component measured 0.601/0.895 s with 403 CPU and 335 GPU rows, but that timing describes numerically failed audio. A FP32-preserving delegate control remains pending; neither route is a complete S24 TTS stream. +A [revision-pinned 25-frame export](s25/full_pinned_tflite/README.md) from +CustomVoice revision `85e237c12c027371202489a0ec509ded67b5e4b5` +matched its eager decoder at 1.99e-6 relative L2 on the retained synthetic +fixture and compiled for S25 TFLite. Its GPU-requested inference returned a +finite unsaturated waveform at 4.239% relative L2 versus local ONNX CPU, +bitwise identical to the historical target's device output on the same fixture. +Its own placement profile is still running; the historical target's latency +is separate evidence. + +The same pinned two-frame source [compiled for X Elite QNN](xelite/qnn_short_chunk/README.md) +and its NPU-requested inference returned an unsaturated waveform at 0.930% +relative L2 / 40.63 dB SNR versus local ONNX CPU. Its placement profile is +still running; this is component numerical evidence, not verified NPU node +placement or complete TTS. + +On [Galaxy S24](s24/tflite_short_chunk/README.md), the same pinned two-frame TFLite source matched local ONNX CPU at 5.75e-6 relative L2 when requested on CPU, but its GPU-requested output saturated every sample and differed by 24.218 relative L2. The 100-sample CPU component p50/p95 was 3.433/3.873 s for only 0.16 s audio (median RTF 21.46), with all 738 rows on CPU. The mixed CPU/GPU component measured 0.601/0.895 s with 403 CPU and 335 GPU rows, but that timing describes numerically failed audio. An [FP32-preserving delegate control](s24/tflite_short_chunk_gpu_fp32/audit_report.json) returned the same saturated waveform bitwise, so that option did not fix this artifact. Neither route is a complete S24 TTS stream. The historical Workbench source model `mqyer339n` is a 423,655,047-byte ONNX graph with one FP32 input `[1,512,97]` and one 48,000-sample output. The [manifest](artifact_manifest.json) pins its SHA256, the retained Workbench fixture dataset `d7m80jl32`, a local ONNX Runtime 1.29 CPU output, compiled target downloads, and the prior [S25 GPU output](s25_reference_output.npz). The source export script identifies the Qwen3-TTS 0.6B CustomVoice model family, but did not attest the exact checkpoint revision; these results must not be promoted to a revision-qualified release claim. Large source/target artifacts and the fixture remain outside Git under `/home/zhout/project/edge_infer/models/`. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md index 520ef34ec..bac3e8bac 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md @@ -13,9 +13,13 @@ reproduces this graph with `--chunk-frames 25`. The [source upload](upload_submission.json) and [one-sample input dataset](dataset_submission.json) were submitted to Qualcomm AI Hub Workbench. The [S25 TFLite compile](compile_report.json) -succeeded; [GPU-requested inference](inference_submission.json) and a separate -[placement profile](profile_submission.json) are pending on that target. -Device numerical waveform quality, node placement, -complete-stream handoff and sustained behavior remain unverified for this -revision-pinned artifact. The [historical 25-frame target](../full_tflite_gpu_profile/README.md) -is separate despite the local same-fixture numerical continuity. +and [GPU-requested inference](inference_report.json) succeeded on that exact +target. The [waveform audit](audit_report.json) measured **4.239% relative L2** +and **27.46 dB SNR** versus local ONNX Runtime CPU, with no saturated samples. +The new device waveform is [bitwise identical](historical_device_parity_report.json) +to the [historical 25-frame target's](../full_tflite_gpu_profile/README.md) +GPU output on this retained fixture. This supports numerical continuity on +one input, not identical historical export provenance or listening quality. +A separate [placement profile](profile_submission.json) is in progress; GPU +node placement and latency for this revision-pinned target remain unverified. +Complete-stream handoff and sustained behavior are also unverified. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/audit_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/audit_report.json new file mode 100644 index 000000000..0c203d2ac --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/audit_report.json @@ -0,0 +1,78 @@ +{ + "scope": "one 25-frame Qwen3-TTS vocoder component on hosted Samsung Galaxy S25; no complete stream", + "status": "component_inference_numeric_measured", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mng2vkdrm", + "target_model_id": "mn4o5j17q", + "input_dataset_id": "d2nmpxd57", + "jobs": { + "compile": "jgddd1zzg", + "inference": "jglyymx25" + }, + "route": { + "compile_options": "--target_runtime tflite", + "run_options": "--compute_unit gpu" + }, + "files": { + "fixture": { + "bytes": 129721, + "sha256": "dfca9e8d2a724a568a31b6cd18ff6a52fdc205fd34e13cbf1cd75f0f7937e82d" + }, + "ort_cpu": { + "bytes": 179957, + "sha256": "e6c1f321ed752e6c2dec3586e7e80cdf43f18487c25a74acc7eddfd61f4f9f98" + }, + "eager_cpu": { + "bytes": 179870, + "sha256": "0b4ddaf66d1cb737a2a101db1c1e7fa5871e4a73164a607afe029197a854058c" + }, + "device_output": { + "bytes": 115235, + "sha256": "4a26486d5e84a6e22d16f9b26f995b8fe645c29bbd70b103615ec35a0fcb10a0" + } + }, + "ort_cpu_vs_device": { + "relative_l2": 0.042385301235348234, + "snr_db": 27.45569451867911, + "max_abs": 0.10591868683695793, + "reference_rms": 0.0837343916262634, + "output_rms": 0.08376787228276501, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "eager_cpu_vs_device": { + "relative_l2": 0.04238528582586735, + "snr_db": 27.455697676497284, + "max_abs": 0.10591860488057137, + "reference_rms": 0.083734386044337, + "output_rms": 0.08376787228276501, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "gross_numeric_failure_screen": { + "failed": false, + "criteria": "relative L2 >= 1.0 or fraction |sample| >= 0.999 at least 0.1; this is not a speech-quality acceptance threshold" + }, + "limits": [ + "One fixed-window waveform has no listening-quality tolerance.", + "The 72-frame input history, talker, predictor and stage handoff did not run on the device.", + "No persistent state, admission, cancellation or complete TTS stream was tested.", + "Requested accelerator execution is not verified node placement without a profile." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/device_output.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/device_output.npz new file mode 100644 index 0000000000000000000000000000000000000000..c739e54593f7924ff713bc24a9b4a1f4fbf3dd7d GIT binary patch literal 115235 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 literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/historical_device_parity_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/historical_device_parity_report.json new file mode 100644 index 000000000..870fc6e5c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/historical_device_parity_report.json @@ -0,0 +1,16 @@ +{ + "scope": "one retained synthetic 25-frame fixture; historical and revision-pinned S25 GPU-requested TFLite outputs", + "new_output_sha256": "4a26486d5e84a6e22d16f9b26f995b8fe645c29bbd70b103615ec35a0fcb10a0", + "historical_output_sha256": "4a26486d5e84a6e22d16f9b26f995b8fe645c29bbd70b103615ec35a0fcb10a0", + "output_shape": [ + 1, + 48000 + ], + "dtype": "float32", + "bitwise_equal": true, + "maximum_absolute_difference": 0.0, + "limits": [ + "Bitwise same output on one fixture does not prove identical graph provenance for historical export.", + "No listening-quality gate or complete stream is established." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/inference_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/inference_report.json new file mode 100644 index 000000000..930878b27 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/inference_report.json @@ -0,0 +1,33 @@ +{ + "timestamp_utc": "2026-09-24T06:34:28.494002+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jglyymx25", + "url": "https://workbench.aihub.qualcomm.com/jobs/jglyymx25/", + "status": "SUCCESS", + "status_message": "", + "options": "--compute_unit gpu", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Samsung Galaxy S25", + "os": "15", + "attributes": [ + "os:android", + "framework:tflite", + "framework:onnx", + "abi:aarch64-android", + "vendor:samsung", + "format:phone", + "chipset:qualcomm-snapdragon-8-elite-for-galaxy", + "chipset:sm8750-ac", + "hexagon:v79", + "soc-model:69", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "model_id": "mn4o5j17q", + "input_dataset_id": "d2nmpxd57", + "outputs": "device_output.npz" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md index 8c3313879..67639bfd6 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md @@ -2,11 +2,14 @@ The same pinned [Qwen3-TTS two-frame source and fixture](../../s25/qnn_short_chunk/README.md) compiled to [FP16 QNN DLC](compile_report.json) for Snapdragon X Elite CRD. -An [NPU-requested inference job](inference_submission.json) is pending on -the retained fixture. A separate [placement profile](profile_submission.json) -is also pending for the same target and tensor shape. Compilation alone does -not establish numerical output, NPU placement, timing, or complete TTS -support. The earlier +[NPU-requested inference](inference_report.json) succeeded on the retained +fixture. The [audit](audit_report.json) measures **0.930% relative L2** and +**40.63 dB SNR** against local ONNX Runtime CPU, with no saturated samples. +This is one synthetic, two-frame waveform without a listening-quality gate. +A separate [placement profile](profile_submission.json) remains in progress +for the same target and tensor shape; the request alone does not verify NPU +node placement or latency. The earlier [25-frame X Elite NPU attempt](../qnn_npu/inference_report.json) returned a waveform but its placement profile timed out during graph preparation; this -shorter artifact tests a separate memory/graph-preparation boundary. +shorter artifact tests a separate memory/graph-preparation boundary. Neither +artifact establishes complete TTS support. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/audit_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/audit_report.json new file mode 100644 index 000000000..54f456fe4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/audit_report.json @@ -0,0 +1,77 @@ +{ + "scope": "one 2-frame Qwen3-TTS vocoder component on hosted Snapdragon X Elite CRD; no complete stream", + "status": "component_inference_numeric_measured", + "device": { + "name": "Snapdragon X Elite CRD", + "os": "11", + "attributes": [ + "os:windows", + "format:compute", + "framework:onnx", + "vendor:qualcomm", + "abi:aarch64-windows", + "chipset:qualcomm-snapdragon-x-elite", + "chipset:sc8380xp", + "hexagon:v73", + "soc-model:60", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "source_model_id": "mng2vv4em", + "target_model_id": "mqeyv2w7m", + "input_dataset_id": "d7ovqp0w2", + "jobs": { + "compile": "j5m0m22qg", + "inference": "jgdd3lxeg" + }, + "route": { + "compile_options": "--target_runtime qnn_dlc --qnn_options default_graph_htp_precision=FLOAT16", + "run_options": "--compute_unit npu" + }, + "files": { + "fixture": { + "bytes": 129614, + "sha256": "77aea3554c51b9daf808748257ebfc5e0496172c4d34c8267288be984d8a0f55" + }, + "ort_cpu": { + "bytes": 14813, + "sha256": "989307db317d77be054f684211ae0c6a2fd24d93bcd74307c597fed430ba2a37" + }, + "eager_cpu": { + "bytes": 14818, + "sha256": "542113d24feeb4ff58b895ce7d96fc7aa5240b046a3a0d1d3922c7ab23ea0a7c" + }, + "device_output": { + "bytes": 3639, + "sha256": "2f9c5f18535f85ecd016de8d5635bf9deb6c3ff1282de0ebc72af8ad9d7bfe8c" + } + }, + "ort_cpu_vs_device": { + "relative_l2": 0.009296003183799334, + "snr_db": 40.63407472423357, + "max_abs": 0.002414429560303688, + "reference_rms": 0.04131374650145444, + "output_rms": 0.04128884867187232, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "eager_cpu_vs_device": { + "relative_l2": 0.009295756129736288, + "snr_db": 40.63430556675796, + "max_abs": 0.0024141762405633926, + "reference_rms": 0.04131376905845152, + "output_rms": 0.04128884867187232, + "output_saturated_fraction_abs_ge_0_999": 0.0 + }, + "gross_numeric_failure_screen": { + "failed": false, + "criteria": "relative L2 >= 1.0 or fraction |sample| >= 0.999 at least 0.1; this is not a speech-quality acceptance threshold" + }, + "limits": [ + "One fixed-window waveform has no listening-quality tolerance.", + "The 72-frame input history, talker, predictor and stage handoff did not run on the device.", + "No persistent state, admission, cancellation or complete TTS stream was tested.", + "Requested accelerator execution is not verified node placement without a profile." + ] +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/device_output.npz b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/device_output.npz new file mode 100644 index 0000000000000000000000000000000000000000..3d3edfbea6586635ed78b691e7d9182e142458c2 GIT binary patch literal 3639 zcmZ9Pc{~%2|Hny@J5f1?kR%@}q8yo{C>_cXkt1g%7IJQLO}RosCC8F-&6&hDW-D@} zjlwXtVU8S|8DqBb>+}8o{`vi0@5lT7d_3Nd_v8Kl^X65dy}AMd0{j2AngA?};07X1`9Pz~Kw3pXuy^zN-f&vEw63qTy{!N+Wf4Nd1+921Z&>bi+>wrC)^uFuF zg6uIs(*EV;@YK|!^0>=+)W%~8Z!fAP9JC(FxhiFR@j%Wu<{oP?8K)#rApDz}&Dr!y z>d$w~qfCoqug(awmgtrx?gr>4?(IrDtKp8=$nuV|jvdS{k>5JgEks}dFB9vC-}5Dv zjkb@J^`Vsf=T`Cl!I__?G;A^z3~A#!HqRAJuC*}?X~eP=X56~7wT;xwW|cBYu^1Ie zA3)WHmff1@h(!fN@fk_OE4!&y!&`Dn^;Xl+%J9J+b8M>W#y< zqn?iVf2lifSn?w-FB1}*ZY>A&XSpx|@_0D1m3@=N$1Q6+69I?dyZLYOPL|xFgw6UE znd#j&LSv?jMbhE!sn_I>BoD`pGFoHPJ?ta=zCzO0w3fk`dC1*Y*{o@rTM>lNh2$(w zbFGKL-8*Nv$Tz0e<^`=L;_VfkNYhJyergtiByWX2M`%#ct&R8=@(K8RNY88Oj}0F8 z<7h0Me_Et}wzrHLxHx%A&Z&$Ksg-OcPHO>l~`xzqK#=%P?6$codd%>&)6x;!SNKMl%vw`dacKsc6uuX}f{ z^_Vbn*ZyO5^}$KgoQFKHxztPuRglA8}PO%K-V5tj2eMtcbyh zK<7pIDV?6Or%ka<_Dk0UvWKxRJMr7^MUHVpr4`3a^M$c`X;3hZ zNwtpKMWWp@ezZ;X{1gz!@x4#F9%w@!c;tuwk(lYp+fjHUG6w@DRba(VE1O}9Y!)#4 zO{Ik%l!)SuhMQ6cx4k`l zva^JLV;7URBb%#8Kd=E*SPOOuE2M*cGFK$7m~`sJn8;g}*&C27*27!-P3e;d6^XT? z1-_9&Jg(-Bo{0T4H=rSZUYV+}D(BjZHl!X}%|ul6>7xb>%S>Skw*F6+MxNJAer0JZ zOkz@-vkW4ZT0eyFPgjBYFHvVi`)QjWuQUrkD$fdtGd2-cgVh*j&o9M99qdRcEz@AB z2nXTx95=HpF~`?_T)!jEz6^;`q|8ml1Lqia2nYkmyWS7#rLuwx(emrV zjV&yEAGNBzGxWLTX#}Nz`&EJn_Cn`M*7Fj@;z7P@Bm0}dr&r4&!{g1eIQHj|l}@rA zRl}<=W+lg1tqh#u;mm+0Dasa&8jXS*yH%YR$o<|x=CDc+FVHFTzS6IBM~vM9``GdY zfdIANznqNu$74Z0_#3=Gsmt~j#%saR=bkZwEG}7H0NGVeAXIzAc4R^i5kOi_H|nHp zAk7ttG2VJ_Bvph?!H5YNSxQM}n%T=7ODU(lGdfgCXTgPyw=%whVb_;iTnb$~KCC|! z!kSuMzb@W7Z3c-i+87E@hRYJKbo!$aTu~pBtY|W!WO){O=ObM{zw^p$bGWO`THf%{ zs)}-0eJ+X(3!9`oT{&~bIYW2wcUnx-AXAESx9OnQpmAdRN6(A=`-F1mwkrRrmiFpl-2#hj_7h%~}Hm8rD`QG&1vIqKX0xH_;s9wP{>M1VHSz0AWYI==% z`M{9)=O5_xJ`)lp*4;A;TaqSZ@h1`%-PYcMT+V_nJ=9^UC@4CLNR`V5$s}VpCR>*Kkqp;WqlR#OHc0W`u`r+

9kFUC!la= z)#ZYl$T(&5N4Rd(R?{09a~9gWa8w~P=MI4vmByj`t|od|OJsL@qTgjrx#1L4z`nr_ zfP!B+Krwd$N?+Jhc`jRG8Y2+T2;{-GgPZNE`5ky?fYx^TYOuW(v->2(q#&m3ML}8E zPl3bS*@YS)pVr`5u?ttqC&B|^qu;`|U6J&SYklD`ige7}LxL>pTTaj&QQIo$ zAwbp7d)Kc!ON!~q@^oWg7-qb=M{>_99^MjERjgpSkD3wkjs1$Vepa0f(PobY%7MbtWpqh&!Lx6IsMOeHBT3Rf|k~vYp9Y~Y`+Cn=#ZuDhXm(R zZYu(=Jm1ct7^JcMrlG=w#~3OQmsSOC+>nVBJ~-bv+kfhHpkcSw?Zi6ByoG8^WB?Y+D;^%C{mbXr{?6RiO>br=4?pxG&eT`qd$QBwDM-^0OpArmjAOe(z z8mAJ_*gX+?kN39l03JhcEA4wVwAR2!8Sw}<0d@4e{V}Z_cMJ+Gi94PZ#TlR z=RE@!iKngrqWz3oi=tPsn?^P0sgi2g$q5kp{-DOZtjNwls7X%B$M- zfzyI#OgDURUTl3oXk82Pw3+~{6lwsXu>TWW`Lu0G?bBv_-dwmxj= z25UlY%)Jr$s_`KBaonOx9AS3zkxgq)S>2_dJqFT%6-fcuaFet2ewD8v?yZr5baKl; ze&E?`GrJrx+q)rkv_G&-a7Yag$5k}ze*!A$Bunzz)6D2SJ;rvO1evxS#aKne==SSI z7ux6RSzxbwz6A)n;JQ0nJoLPTY6&jo!2(}m2#Z(AFI;Pb>ggjCyxu)i@rBaLSz=2c zpRHgXXD%45+wO+V)eCN}K}yF}?~pc_wKmB9!209OQF1#Y+QiJsYRb4l8l$+J7Q#?J zy7m}ANiAzqY?Eg11?y}t*_}S6&FQ?VZ)Dl67;$?uOJeP{t1Hy;3LaPsyE`lm)D)@vKA*wd+*hLX!9O#@t>w>0%oW{r z&FoVbMR;m>2D`Zq6?Ob4h=F(ySNhgSO63Gwc+7QlnQyA!Q2mhK@9J2h%qu=w4~QP~ z1XX*+DYFBnNNzTZ0}OZ$)M3OFP@2=?<~u!cIu&$*r`h6|E95x`(8kAWPp@Fbcfv5p z=k*#t$k9FW+^sKC*dOL*{vMZ>>jIV&vpQrtCd=v9uq~vV;_uukNH?ba5dR#kX~4^o zQ#q_|q@4QWtj}TtnMv~o;eJ5kUyP0fnmG?=jwrxMQ{P;lwD>^9|NeZDq6nD!EaH)R zr1=zHV)_x4f9Trn`3S~Umy#xjb8E^Wc4}o%7(|oHMCx#JXtdm4sK)(;%f4cs>vfm= z3{a^EVc-XJ)_?eN z3J1i?9c~UTs#qJ*_)b1LkQWu$ASFvNMLTpX{PbjnH4`S>9gfJpR)ECkG@3U)w5)Mc z150ofuTTEQKKz^d;V&Ng#O?+KVvy7NeIotbrC$G-g~hxvRu^@eSG zZ@3Zj>?(;-z>&UrRdA24(Eqi(fA#HOm6QIj#ry%z=X^J>?i2oZE%>)C{3Y!_ G-uFKS=6Z|( literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/inference_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/inference_report.json new file mode 100644 index 000000000..3c2213064 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/inference_report.json @@ -0,0 +1,32 @@ +{ + "timestamp_utc": "2026-09-24T06:30:20.902478+00:00", + "qai_hub_version": "0.55.0", + "facility": "Qualcomm AI Hub Workbench", + "job_id": "jgdd3lxeg", + "url": "https://workbench.aihub.qualcomm.com/jobs/jgdd3lxeg/", + "status": "SUCCESS", + "status_message": "", + "options": "--compute_unit npu", + "hub_version": "aihub-2026.09.11.0", + "device": { + "name": "Snapdragon X Elite CRD", + "os": "11", + "attributes": [ + "os:windows", + "format:compute", + "framework:onnx", + "vendor:qualcomm", + "abi:aarch64-windows", + "chipset:qualcomm-snapdragon-x-elite", + "chipset:sc8380xp", + "hexagon:v73", + "soc-model:60", + "htp-supports-fp16:true", + "htp-supports-weight-sharing:true", + "framework:qnn" + ] + }, + "model_id": "mqeyv2w7m", + "input_dataset_id": "d7ovqp0w2", + "outputs": "device_output.npz" +} diff --git a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md index 5d84edf75..316c5d298 100644 --- a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md +++ b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md @@ -49,8 +49,8 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | scoped E2E: Omni Radeon+CPU image+audio → text+speech (native-storage 20-run profile) | synthetic policy pass: Omni CPU+Radeon Cosmos (WSL/native Windows) | | PC HX370 + AMD NPU / Windows worker | NOT E2E (output-head component passed) | NOT E2E | NOT E2E | NOT E2E | NOT E2E | | PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E | -| PC Snapdragon X Elite CRD / AI Hub | NOT E2E (one Spark attention layer on NPU) | NOT E2E (CPU talker/vocoder steps; QNN vocoder numeric) | NOT E2E | NOT E2E (NPU speech-head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | -| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch; CPU talker + vocoder profiled; 25-frame and two-frame QNN vocoder memory failures; 25-frame TFLite CPU/GPU vocoder component RTF 0.420; short chunk RTF 3.49) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | +| PC Snapdragon X Elite CRD / AI Hub | NOT E2E (one Spark attention layer on NPU) | NOT E2E (CPU talker/vocoder steps; two-frame QNN vocoder waveform measured, placement pending) | NOT E2E | NOT E2E (NPU speech-head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | +| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch; CPU talker + vocoder profiled; 25-frame and two-frame QNN vocoder memory failures; historical 25-frame TFLite mixed vocoder component RTF 0.420; pinned 25-frame GPU waveform measured, placement pending; short chunk RTF 3.49) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker mismatch; short CPU vocoder RTF 21.46; mixed CPU/GPU waveform saturated) | NOT E2E | NOT E2E (NPU speech head step profiled) | NOT E2E (Cosmos encoder numeric and NPU profiled) | | Embedded SA8775P ADP / AI Hub | NOT E2E (one Spark attention layer on NPU) | NOT E2E (CPU talker/vocoder steps; NPU vocoder failed) | NOT E2E | NOT E2E (NPU speech-head step profiled) | NOT E2E (Cosmos NPU encoder profiled) | | Embedded RB3 Gen 2 / QCS6490 / AI Hub | NOT E2E (Spark CPU layer passed; W8A8 NPU quality open) | NOT E2E (CPU talker + vocoder profiled; INT8 NPU vocoder fails numeric gate) | NOT E2E | NOT E2E (CPU speech-head step profiled) | NOT E2E (Cosmos CPU numeric and profiled) | @@ -95,17 +95,17 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | MiniCPM-o 4.5 | NOT_E2E_PROFILEABLE | No qualifying same-model multi-accelerator deployment/artifact plan or overlap/recovery evidence. Individual routes are not a joint pipeline. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | InternVLA-A1 | NOT_E2E_PROFILEABLE | No qualifying same-model multi-accelerator deployment/artifact plan or overlap/recovery evidence. Individual routes are not a joint pipeline. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC Snapdragon X Elite CRD / AI Hub | Spark-X2.5 | COMPONENT_NPU_INFERENCE_PROFILED; NOT_E2E_PROFILEABLE | A real Spark-X2.5-1.7B one-layer W8A16 QDQ attention artifact, compiled as QNN DLC, ran on the exact hosted Snapdragon X Elite CRD (Windows 11 ARM64). Inference returned finite hidden/new-K/new-V tensors bitwise identical to the prior S24/S25 NPU outputs on the same fixture; the profile attributed all 73 execution-detail rows to NPU. Across 100 component samples, nearest-rank p50/p95 was 1.433/1.606 ms; the 1.346 ms estimated-time field is the minimum. Hidden/K/V relative L2 versus original FP32 ONNX CPU was 1.351%/0.377%/0.650%, without a next-token quality tolerance. There is no complete 28-layer prefill/decode/KV-ring/sampling loop, resident Omni controller or complete-request timing. | Qualify a complete X Elite resident artifact/controller with state, token quality, memory admission/cancel and sustained power; [X Elite NPU raw evidence](../../../e2e_expansion_20260923/evidence/spark_xelite_full_attention/README.md). | -| PC Snapdragon X Elite CRD / AI Hub | Qwen3-TTS 0.6B CustomVoice | COMPONENT_ONNX_CPU_VOCODER_PARITY_PROFILED; DIRECTML_RUNTIME_FAILED; TALKER_FP16_NUMERIC_FAIL; QNN_NPU_VOCODER_NUMERIC_MEASURED_PROFILE_TIMEOUT; TALKER_ONNX_CPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The fresh ONNX vocoder inference on the exact Windows 11 ARM64 X Elite CRD requested CPU and returned an unsaturated waveform on the pinned fixture, matching local ONNX Runtime CPU with 8.09e-7 relative L2 and 121.84 dB SNR. Its 94-sample component profile had nearest-rank p50/p95 6.384/6.644 s and all 634 execution-detail rows on CPU; 5.917 s estimated time is the sample minimum. This is one component, without a listening-quality gate. Corrected DirectML inference and profile both failed at provider initialization with Windows error 80070057. A separate FP16 QNN DLC vocoder inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR versus local ONNX CPU on the same fixture; the NPU node-placement profile timed out during graph preparation with no timing or per-node samples, and no listening-quality tolerance is set. The 28-layer FP16 QNN talker step executed, yet changed CPU top-1 token 80 to 1720 with 8.57% logits relative L2 on a synthetic cache fixture; a separate ONNX CPU-requested talker step preserved CPU token 80 with logits relative L2 2.07e-5 and maximum K/V relative L2 2.18e-5. Its 100-sample component profile had p50/p95 191.414/309.428 ms and all 1,744 execution-detail rows on CPU. The older TFLite vocoder target was rejected on Windows ARM; no complete stream exists. | Reduce or partition the QNN vocoder profile graph and audit CPU talker placement; investigate DirectML failure, then qualify complete local streaming, memory and sustained behavior; [vocoder](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and [talker](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) evidence. | +| PC Snapdragon X Elite CRD / AI Hub | Qwen3-TTS 0.6B CustomVoice | COMPONENT_ONNX_CPU_VOCODER_PARITY_PROFILED; DIRECTML_RUNTIME_FAILED; TALKER_FP16_NUMERIC_FAIL; QNN_NPU_VOCODER_NUMERIC_MEASURED_PROFILE_TIMEOUT; SHORT_QNN_VOCODER_NUMERIC_MEASURED_PLACEMENT_PENDING; TALKER_ONNX_CPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The fresh ONNX vocoder inference on the exact Windows 11 ARM64 X Elite CRD requested CPU and returned an unsaturated waveform on the pinned fixture, matching local ONNX Runtime CPU with 8.09e-7 relative L2 and 121.84 dB SNR. Its 94-sample component profile had nearest-rank p50/p95 6.384/6.644 s and all 634 execution-detail rows on CPU; 5.917 s estimated time is the sample minimum. This is one component, without a listening-quality gate. Corrected DirectML inference and profile both failed at provider initialization with Windows error 80070057. A separate FP16 QNN DLC vocoder inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR versus local ONNX CPU on the same fixture; the NPU node-placement profile timed out during graph preparation with no timing or per-node samples, and no listening-quality tolerance is set. A new [two-frame QNN vocoder candidate](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md) compiled for X Elite and returned an unsaturated waveform at 0.930% relative L2 / 40.63 dB SNR versus pinned local ONNX CPU on one synthetic fixture. Its NPU-requested placement profile remains in progress; inference request alone does not verify NPU nodes or latency. The 28-layer FP16 QNN talker step executed, yet changed CPU top-1 token 80 to 1720 with 8.57% logits relative L2 on a synthetic cache fixture; a separate ONNX CPU-requested talker step preserved CPU token 80 with logits relative L2 2.07e-5 and maximum K/V relative L2 2.18e-5. Its 100-sample component profile had p50/p95 191.414/309.428 ms and all 1,744 execution-detail rows on CPU. The older TFLite vocoder target was rejected on Windows ARM; no complete stream exists. | Complete the short QNN vocoder placement profile and audit CPU talker placement; investigate DirectML failure, then qualify complete local streaming, memory and sustained behavior; [vocoder](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and [talker](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) evidence. | | PC Snapdragon X Elite CRD / AI Hub | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No complete qualified target artifact and device-local stateful Omni backend. Hub jobs provide component execution, not an on-device generation/streaming controller; ADB has no attached device. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | PC Snapdragon X Elite CRD / AI Hub | MiniCPM-o 4.5 | COMPONENT_SPEECH_HEAD_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real 20-layer MiniCPM-o speech-head FP16 QNN DLC ran on the exact X Elite CRD. Same-fixture inference returned 41 finite tensors, preserved ONNX CPU top-1 speech token 1867, and had 0.3170% logits relative L2 and 1.221% maximum K/V relative L2. Its 100-sample component profile had nearest-rank p50/p95 9.905/11.037 ms, with all 944 execution-detail rows on NPU. Reported inference peak memory was 79,208,448 bytes and first-load peak 1,081,573,376 bytes. Thinker/encoders/vocoder and a device-local stateful Omni backend remain unqualified. | Validate the complete multimodal pipeline, state, quality, co-resident memory and sustained behavior; [X Elite raw evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). | | PC Snapdragon X Elite CRD / AI Hub | InternVLA-A1 | COMPONENT_COSMOS_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos FP16 QNN image encoder returned a finite FP32 latent for the six-frame synthetic pattern on exact X Elite CRD. Against the pinned source, relative L2 was 0.0608%, SNR 64.32 dB and cosine 0.999999815. The 100-sample six-frame encoder profile had p50/p95 82.939/83.837 ms, with all 121 execution-detail rows on NPU. Reported component inference peak memory was 24,059,904 bytes and first-load peak 692,891,648 bytes. No real-observation action tolerance, complete policy or local stateful Omni backend exists. | Validate real observations, action units/timing, state, admission, cancellation and sustained behavior; [X Elite Cosmos raw evidence](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md). | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Spark-X2.5 | COMPONENT_NPU_INFERENCE_PROFILED; NOT_E2E_PROFILEABLE | The real 1.7B checkpoint one-layer W8A16 full-attention decoder artifact executed for a fixed 1,024-token cache bucket. Same-fixture outputs matched S24; the hosted S25 profile had 100 component samples at nearest-rank p50/p95 0.957/1.028 ms with all 73 execution-detail rows on NPU. FP32-source hidden-state relative L2 was 1.351% without a downstream token-quality gate. No full 28-layer prefill/decode, KV/ring, sampling or resident controller ran on S25. | Implement and validate local 128-token generation, 512/1024 transitions, cancellation, resident memory and sustained power; [S25/S24 component evidence](../../../e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md). | -| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; QNN_VOCODER_MEMORY_FAIL; FULL_TFLITE_MIXED_COMPONENT_PROFILED; SHORT_TFLITE_MIXED_COMPONENT_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 predictor inference passed; its one output exactly matches the same compiled artifact/dataset reference. The same historical S25 TFLite vocoder target requested on CPU returned a finite unsaturated waveform at 4.04e-6 relative L2 / 107.86 dB SNR versus original ONNX CPU on the retained fixture. Its 100-sample component profile measured nearest-rank p50/p95 4.418/4.641 s, with all 738 execution-detail rows on CPU and reported inference peak memory 867,893,248 bytes. A separate 28-layer TFLite CPU-requested talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 30.161/31.301 ms, with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,929,318,400 bytes. The FP16 QNN talker step executed on the synthetic cache fixture but changed CPU top-1 speech token 80 to 412 with 8.99% logits relative L2 and maximum new-K/V relative L2 11.71%. A separately compiled FP16 QNN DLC talker also changed top-1 to 1720 with 8.77% logits relative L2 and 11.27% maximum new-cache relative L2. Both tested NPU talker artifacts are numerically unqualified. A fresh 25-frame FP16 QNN DLC vocoder compiled for S25, but its NPU-requested inference failed when Workbench reported device memory limits; it returned no waveform or profile samples. A [two-frame short-window export](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md) matched local ONNX CPU at 2.96e-6 relative L2, then its separately compiled S25 FP16 QNN DLC also failed NPU-requested inference with the same reported device-memory limit. Its local HX370 WSL CPU component p50/p95 was 1.365/1.453 s to produce 0.16 s audio, not an S25 estimate. A separate [two-frame TFLite GPU-requested inference](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md) returned finite unsaturated audio at 2.325% relative L2 / 32.67 dB SNR versus local ONNX CPU on one fixture; its 100-sample placement profile measured p50/p95 0.559/1.052 s for 0.16 s audio, with 403 CPU and 335 GPU execution-detail rows and 379,121,664 bytes reported peak. The mixed CPU/GPU short component median RTF is 3.49. A separate [25-frame TFLite GPU-requested profile](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_tflite_gpu_profile/README.md) of the historical target measured 100 component samples at p50/p95 0.839/1.157 s for 2 s audio, with 403 CPU and 335 GPU rows, reported 374,591,488-byte peak and median component RTF 0.420. Its retained GPU waveform differed from ONNX CPU by 4.24% relative L2 on one fixture. A pinned CustomVoice eager 25-frame decoder matched the historical ONNX CPU waveform at 1.89e-6 relative L2 on that fixture, but the historical export revision and listening quality remain unverified. A fresh [revision-pinned 25-frame TFLite export](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md) matched local eager CPU at 1.99e-6 relative L2 and compiled for S25; its GPU inference and placement profile are pending. No complete co-resident NPU/GPU stream exists. | Improve and revalidate the [talker artifact](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then qualify the [device-local predictor/vocoder pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md), output quality, recovery and 30-minute thermal behavior. | +| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; QNN_VOCODER_MEMORY_FAIL; FULL_TFLITE_MIXED_COMPONENT_PROFILED; PINNED_FULL_TFLITE_GPU_NUMERIC_MEASURED_PLACEMENT_PENDING; SHORT_TFLITE_MIXED_COMPONENT_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 predictor inference passed; its one output exactly matches the same compiled artifact/dataset reference. The same historical S25 TFLite vocoder target requested on CPU returned a finite unsaturated waveform at 4.04e-6 relative L2 / 107.86 dB SNR versus original ONNX CPU on the retained fixture. Its 100-sample component profile measured nearest-rank p50/p95 4.418/4.641 s, with all 738 execution-detail rows on CPU and reported inference peak memory 867,893,248 bytes. A separate 28-layer TFLite CPU-requested talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 30.161/31.301 ms, with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,929,318,400 bytes. The FP16 QNN talker step executed on the synthetic cache fixture but changed CPU top-1 speech token 80 to 412 with 8.99% logits relative L2 and maximum new-K/V relative L2 11.71%. A separately compiled FP16 QNN DLC talker also changed top-1 to 1720 with 8.77% logits relative L2 and 11.27% maximum new-cache relative L2. Both tested NPU talker artifacts are numerically unqualified. A fresh 25-frame FP16 QNN DLC vocoder compiled for S25, but its NPU-requested inference failed when Workbench reported device memory limits; it returned no waveform or profile samples. A [two-frame short-window export](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/qnn_short_chunk/README.md) matched local ONNX CPU at 2.96e-6 relative L2, then its separately compiled S25 FP16 QNN DLC also failed NPU-requested inference with the same reported device-memory limit. Its local HX370 WSL CPU component p50/p95 was 1.365/1.453 s to produce 0.16 s audio, not an S25 estimate. A separate [two-frame TFLite GPU-requested inference](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/tflite_short_chunk/README.md) returned finite unsaturated audio at 2.325% relative L2 / 32.67 dB SNR versus local ONNX CPU on one fixture; its 100-sample placement profile measured p50/p95 0.559/1.052 s for 0.16 s audio, with 403 CPU and 335 GPU execution-detail rows and 379,121,664 bytes reported peak. The mixed CPU/GPU short component median RTF is 3.49. A separate [25-frame TFLite GPU-requested profile](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_tflite_gpu_profile/README.md) of the historical target measured 100 component samples at p50/p95 0.839/1.157 s for 2 s audio, with 403 CPU and 335 GPU rows, reported 374,591,488-byte peak and median component RTF 0.420. Its retained GPU waveform differed from ONNX CPU by 4.24% relative L2 on one fixture. A pinned CustomVoice eager 25-frame decoder matched the historical ONNX CPU waveform at 1.89e-6 relative L2 on that fixture, but the historical export revision and listening quality remain unverified. A fresh [revision-pinned 25-frame TFLite export](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md) matched local eager CPU at 1.99e-6 relative L2 and compiled for S25. Its GPU-requested inference returned an unsaturated waveform at 4.239% relative L2 / 27.46 dB SNR versus pinned local ONNX CPU, bitwise identical to the historical GPU output on this one fixture. Its own placement profile remains pending; the historical target's timing does not transfer automatically. No complete co-resident NPU/GPU stream exists. | Improve and revalidate the [talker artifact](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then qualify the [device-local predictor/vocoder pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md), output quality, recovery and 30-minute thermal behavior. | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No complete qualified target artifact and device-local stateful Omni backend. Hub jobs provide component execution, not an on-device generation/streaming controller; ADB has no attached device. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | MiniCPM-o 4.5 | COMPONENT_FP16_SPEECH_HEAD_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | Fresh FP16 speech-head inference passed; all 41 outputs exactly matched the same artifact/dataset reference. Against the recovered original ONNX CPU source on the same fixture, logits relative L2 was 0.3605%, maximum new-K/V relative L2 1.311%, and top-1 speech token 1867 matched. Historical FP16 parity passed; tested W8A16 top-1 parity failed. The 100-sample component profile had p50/p95 7.197/7.615 ms, with all 1,029 execution-detail rows on NPU and reported inference peak memory 185,991,168 bytes. Generated-audio quality and qualified thinker/encoders/vocoder remain unverified. | Qualify a complete mobile checkpoint/export and the full multimodal/stateful pipeline; [speech-head evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). | | Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | InternVLA-A1 | COMPONENT_COSMOS_NPU_NUMERIC_PROFILED; SYNTHETIC_ACTION_SENSITIVITY_MEASURED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos image encoder FP32 ONNX export matched its source on two six-frame fixtures. Galaxy S25 FP16 QNN DLC inference returned a finite latent within 0.0524% relative L2 / 65.61 dB SNR of the pinned pattern source. Injecting this device latent into the same real policy on local CPU changed synthetic `[1,50,32]` actions by 0.742% relative L2; the CPU source repeated bitwise identically. The 100-sample six-frame encoder profile had nearest-rank p50/p95 49.665/51.382 ms, all 121 execution-detail rows on NPU, and a reported inference peak of 158,232,576 bytes. No real-observation task tolerance exists, and the action policy was not resident on S25. ADB has no attached device. | Extend the [S25 encoder component](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md), then validate real action quality, device-local state, admission, cancellation and sustained behavior. | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | Spark-X2.5 | COMPONENT_NPU_INFERENCE_PROFILED; NOT_E2E_PROFILEABLE | The real 1.7B checkpoint's fixed-shape full-attention decoder **one-layer** W8A16 QDQ artifact compiled as QNN DLC and ran on an exact hosted Galaxy S24 (Android 14). A same-dataset inference returned finite hidden/new-K/new-V outputs identical to the prior S25 NPU outputs; the profile attributed all 73 execution-detail rows to NPU. Across 100 component samples, nearest-rank p50/p95 was 1.109/1.205 ms; the 1.098 ms `estimated_inference_time` field is the minimum, not a median. Relative L2 versus original FP32 ONNX CPU was 1.351%/0.377%/0.650% for hidden/K/V; no token-quality tolerance is known. This is one cache bucket, not 28-layer prefill/decode, KV-ring, sampling, a resident local controller or complete-request timing. ADB has no attached device. | Qualify a complete device-resident artifact/controller with state and token-quality gates, 128-token generation across 512/1024 context transitions, admission/cancel and sustained memory/power; [S24 NPU raw evidence](../../../e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md). | -| Mobile Galaxy S24 / Snapdragon 8 Gen 3 | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; SHORT_GPU_VOCODER_NUMERIC_FAIL_PROFILED; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | A TFLite vocoder target compiled for exact S24 returned a finite, unsaturated CPU-requested waveform matching original ONNX CPU within 4.04e-6 relative L2 / 107.86 dB SNR on the retained fixture. Its 100-sample component profile measured p50/p95 4.826/4.958 s, all 738 execution-detail rows on CPU, and reported inference peak memory 851,140,608 bytes. A separate TFLite CPU-requested 28-layer talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 36.976/43.264 ms with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,922,400,256 bytes. The FP16 QNN talker step executed on the same synthetic cache fixture, but changed CPU top-1 speech token 80 to 1720 with 9.33% logits relative L2 and maximum new-K/V relative L2 11.23%. This differs from an earlier FP16 decoder parity test (39.13 dB SNR) on a different component/fixture; the tested INT8 decoder parity failed with negative SNR. A [pinned two-frame S24 TFLite attempt](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s24/tflite_short_chunk/README.md) preserved the waveform on a CPU-requested route at 5.75e-6 relative L2, but its GPU-requested output was fully saturated at 24.218 relative L2 / −27.68 dB SNR versus local ONNX CPU. The short CPU route measured 100 component samples at p50/p95 3.433/3.873 s for 0.16 s audio, with all 738 node rows on CPU and median component RTF 21.46. The GPU-requested route measured 100 samples at 0.601/0.895 s with 403 CPU and 335 GPU rows, but its waveform failed the gross numerical gate and the timing is not usable TTS performance. A FP32-preserving GPU control () returned a waveform bitwise identical to the fully saturated default GPU output, so that option did not repair this artifact. No full local TTS stream exists. | Investigate the [FP16 NPU talker numerical difference](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then validate the [complete local pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and a quality-passing artifact set. | +| Mobile Galaxy S24 / Snapdragon 8 Gen 3 | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; SHORT_GPU_VOCODER_NUMERIC_FAIL_PROFILED; CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | A TFLite vocoder target compiled for exact S24 returned a finite, unsaturated CPU-requested waveform matching original ONNX CPU within 4.04e-6 relative L2 / 107.86 dB SNR on the retained fixture. Its 100-sample component profile measured p50/p95 4.826/4.958 s, all 738 execution-detail rows on CPU, and reported inference peak memory 851,140,608 bytes. A separate TFLite CPU-requested 28-layer talker step returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 3.33e-5 and maximum new-cache relative L2 3.41e-5. Its 100-sample component profile measured p50/p95 36.976/43.264 ms with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,922,400,256 bytes. The FP16 QNN talker step executed on the same synthetic cache fixture, but changed CPU top-1 speech token 80 to 1720 with 9.33% logits relative L2 and maximum new-K/V relative L2 11.23%. This differs from an earlier FP16 decoder parity test (39.13 dB SNR) on a different component/fixture; the tested INT8 decoder parity failed with negative SNR. A [pinned two-frame S24 TFLite attempt](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s24/tflite_short_chunk/README.md) preserved the waveform on a CPU-requested route at 5.75e-6 relative L2, but its GPU-requested output was fully saturated at 24.218 relative L2 / −27.68 dB SNR versus local ONNX CPU. The short CPU route measured 100 component samples at p50/p95 3.433/3.873 s for 0.16 s audio, with all 738 node rows on CPU and median component RTF 21.46. The GPU-requested route measured 100 samples at 0.601/0.895 s with 403 CPU and 335 GPU rows, but its waveform failed the gross numerical gate and the timing is not usable TTS performance. A [FP32-preserving GPU control](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s24/tflite_short_chunk_gpu_fp32/audit_report.json) returned a waveform bitwise identical to the fully saturated default GPU output, so that option did not repair this artifact. No full local TTS stream exists. | Investigate the [FP16 NPU talker numerical difference](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then validate the [complete local pipeline](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and a quality-passing artifact set. | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No complete qualified target artifact and device-local stateful Omni backend. Hub jobs provide component execution, not an on-device generation/streaming controller; ADB has no attached device. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | MiniCPM-o 4.5 | COMPONENT_FP16_SPEECH_HEAD_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The retained FP16 speech-head job used a dataset with identical tensors to the recovered S25 fixture. Against original ONNX CPU, logits relative L2 was 0.3459%, maximum new-K/V relative L2 1.235%, and top-1 speech token 1867 matched. Earlier parity reported 49.22 dB SNR/top-1 match; tested W8A16 top-1 failed. The 100-sample component profile had p50/p95 8.537/9.006 ms, with all 1,029 execution-detail rows on NPU and reported inference peak memory 165,433,344 bytes. Generated-audio quality and the rest of the model remain unqualified. | Qualify thinker/encoders/vocoder and stateful local integration; [speech-head evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). | | Mobile Galaxy S24 / Snapdragon 8 Gen 3 | InternVLA-A1 | COMPONENT_COSMOS_NPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos FP16 QNN image encoder returned a finite six-frame synthetic-pattern latent on exact hosted S24 at 0.0613% relative L2 / 64.25 dB SNR versus pinned FP32 source. Its 100-sample six-frame component profile had nearest-rank p50/p95 64.314/67.472 ms, all 121 execution-detail rows on NPU, reported inference peak memory 309,661,696 bytes and first-load peak 712,884,224 bytes. Injecting its latent into the real policy on local CPU changed synthetic actions by 0.631% relative L2, without a task tolerance. No real-observation action tolerance, complete local policy or stateful controller exists. ADB has no attached device. | Validate real observations, action units/timing, state, admission and cancellation on-device; [S24 Cosmos raw evidence](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md). | diff --git a/docs/design/omni_edge_e2e_roadmap.md b/docs/design/omni_edge_e2e_roadmap.md index 56ddc1dca..3a5d8e8b2 100644 --- a/docs/design/omni_edge_e2e_roadmap.md +++ b/docs/design/omni_edge_e2e_roadmap.md @@ -45,9 +45,11 @@ waveform at 1.89e-6 relative L2 on the same fixture, narrowing the model continuity question without proving the historical export revision. A [fresh revision-pinned 25-frame export](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s25/full_pinned_tflite/README.md) now matches local eager CPU at 1.99e-6 relative L2 and has compiled for S25 -TFLite. Its GPU-requested numerical inference and node-placement profile are -pending. This avoids promoting the historical artifact's timing to a -revision-qualified deployment claim. +TFLite. Its GPU-requested inference returned an unsaturated waveform at +4.239% relative L2 versus pinned local ONNX CPU, bitwise identical to the +historical target's output on the same fixture. The new target's own +node-placement profile is pending, so the historical timing does not yet +qualify this revision-pinned artifact. On [Galaxy S24](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/s24/tflite_short_chunk/README.md), the same pinned two-frame TFLite source passed CPU-requested waveform parity at 5.75e-6 relative L2, but the GPU-requested waveform saturated completely @@ -56,7 +58,9 @@ at 24.218 relative L2. The 100-sample short CPU component p50/p95 was measured 0.601/0.895 s but failed the waveform gate. A FP32-preserving GPU option returned the same saturated waveform bitwise, so it did not repair the tested delegate artifact. A [Snapdragon X Elite short QNN graph](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/xelite/qnn_short_chunk/README.md) -compiled, with NPU-requested inference pending. Neither changes M2 support +compiled and returned an unsaturated NPU-requested waveform at 0.930% +relative L2 versus local ONNX CPU on one synthetic fixture. Its node-placement +profile is pending. Neither changes M2 support depth before full stream and quality gates. The [Spark hosted Qualcomm component expansion](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/spark_s24_full_attention/README.md) advances M1 only to one real fixed-shape decoder attention layer. The same W8A16 QNN DLC ran on S24, Snapdragon X Elite CRD and SA8775P ADP NPUs with identical outputs on one pinned fixture; S25 had prior separate component evidence. On [RB3 Gen 2](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/spark_rb3_full_attention/README.md), the tested W8A16 graph failed QNN loading even after an exact-device compile. FP32 ONNX ran on CPU with near-source parity, while calibrated W8A8 ran on NPU but had 20.9% hidden-state relative L2 and remains numerically unqualified. These are component C results, not full M1: device-local 28-layer prefill/continuous decode, KV/ring, sampling, token quality, admission/cancellation, complete-request timing and sustained power/thermal gates remain open. AI Hub is the test facility, not a deployment dependency.