Record RB3 TTS CPU component profiles and Cosmos placement

This commit is contained in:
tzhouam committed 2026-09-24 10:25:06 +08:00
1 parent 10df2a03d0
commit 36dce4e4f7
18 files changed
+23562 -22

No files matched your search

@@ -38,6 +38,9 @@ def main() -> None:
import numpy as np
import torch
import transformers
import vllm
import vllm_omni
from vllm_omni.diffusion.data import OmniDiffusionConfig
from vllm_omni.diffusion.registry import initialize_model
@@ -142,6 +145,9 @@ def main() -> None:
"hosted_output_sha256": sha256(args.device_output),
"hosted_inference_job_id": audit["inference_job_id"],
"policy_torch": torch.__version__,
"policy_vllm": vllm.__version__,
"policy_transformers": transformers.__version__,
"loaded_omni_path": str(Path(vllm_omni.__file__).resolve()),
"policy_load_seconds_not_request_timing": load_seconds,
"encoder_calls": {"source": source_encoder.calls, "hosted": hosted_encoder.calls},
"action_shape": list(source_actions.shape),
@@ -1,10 +1,10 @@
# 2026-09-24 Qualcomm component expansion
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; CPU placement profiling is pending. 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. No complete on-device TTS stream or model-quality qualification is claimed.
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. 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. No complete on-device TTS stream or model-quality qualification is claimed.
A local HX370 x86-64 LiteRT CPU control of the identical SA/RB3 TFLite binary matched the original ONNX CPU waveform within 3.45e-6 relative L2. The SA saturation is therefore not universal to the converted artifact; the exact SA CPU control passed numerical and placement checks, while the faulty GPU delegate operation remains unidentified.
The [talker decode-step attempt](evidence/qwen_tts_talker_qualcomm/README.md) pins a separate 28-layer source and synthetic cache fixture. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU top-1 speech token with 8.57–9.43% logits relative L2. These artifacts are numerically unqualified on the fixture. RB3 rejected the floating-point-input artifact. Explicit X Elite ONNX CPU and SA8775P TFLite CPU fallback compiles passed. X Elite CPU-requested inference preserved CPU top-1 token 80 with logits relative L2 2.07e-5; its 100-sample decode-step profile measured p50/p95 191.414/309.428 ms, all 1,744 execution-detail rows on CPU. SA8775P TFLite CPU-requested talker inference also preserved token 80 with logits relative L2 3.33e-5; its 100-sample decode-step profile measured p50/p95 52.635/76.925 ms, all 1,800 execution-detail rows on CPU. No complete talker loop or TTS stream passed.
The [talker decode-step attempt](evidence/qwen_tts_talker_qualcomm/README.md) pins a separate 28-layer source and synthetic cache fixture. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU top-1 speech token with 8.57–9.43% logits relative L2. These artifacts are numerically unqualified on the fixture. RB3 rejected the floating-point-input artifact. Explicit X Elite ONNX CPU and SA8775P TFLite CPU fallback compiles passed. X Elite CPU-requested inference preserved CPU top-1 token 80 with logits relative L2 2.07e-5; its 100-sample decode-step profile measured p50/p95 191.414/309.428 ms, all 1,744 execution-detail rows on CPU. SA8775P TFLite CPU-requested talker inference also preserved token 80 with logits relative L2 3.33e-5; its 100-sample decode-step profile measured p50/p95 52.635/76.925 ms, all 1,800 execution-detail rows on CPU. A new RB3 TFLite CPU-requested step preserved token 80 with logits relative L2 2.29e-5 and maximum new-cache relative L2 3.04e-5; its 100-sample profile measured p50/p95 138.022/139.642 ms with all 1,800 execution-detail rows on CPU. No complete talker loop or TTS stream passed.
The [MiniCPM-o speech-head study](evidence/minicpmo_tts_qualcomm/README.md) recovered the real 20-layer ONNX source and a matching retained fixture. S24 and S25 FP16 context-binary outputs preserved the ONNX CPU top-1 speech token with 0.346%/0.360% logits relative L2 on one step. Their 100-sample component profiles had p50/p95 8.537/9.006 ms and 7.197/7.615 ms, with all 1,029 execution-detail rows on NPU for each. FP16 QNN DLC compiles passed for SA8775P, X Elite and RB3. SA8775P NPU-requested inference preserved CPU top-1 token 1867 with 0.3568% logits relative L2; its 100-sample profile measured p50/p95 11.901/13.038 ms, all 944 execution-detail rows on NPU. X Elite same-fixture inference also preserved token 1867 with 0.3170% logits relative L2; its 100-sample profile measured p50/p95 9.905/11.037 ms, all 944 execution-detail rows on NPU. RB3 FP16 QNN inference failed at graph load despite compile success; an explicit TFLite CPU fallback same-fixture inference preserved top-1 token 1867 with logits relative L2 1.26e-6 versus ONNX CPU; its 100-sample CPU-requested profile measured p50/p95 59.518/71.347 ms with all 1,008 execution-detail rows on CPU. The complete multimodal model remains unqualified on those devices.
@@ -12,4 +12,4 @@ The [native Windows Qwen3-TTS sustained analysis](evidence/qwen_tts_sustained_dr
The [InternVLA Cosmos S25 attempt](evidence/internvla_cosmos_qualcomm/README.md) repackages the real policy's image encoder from its parity-tested ONNX export. FLOAT16 QNN DLC inference returned a latent within 0.0524% relative L2 of the source on one pattern. Injecting it into the real policy on local CPU changed synthetic actions by 0.742% relative L2, without a task tolerance. S25 six-frame component placement profile returned 100 samples at p50/p95 49.665/51.382 ms, with all 121 execution-detail rows on NPU. The same encoder compiled to FP16 QNN DLC for X Elite CRD; same-fixture NPU-requested inference returned a finite latent at 0.0608% relative L2 / 64.32 dB SNR versus the source, with its 100-sample six-frame profile at p50/p95 82.939/83.837 ms and all 121 execution-detail rows on NPU. An SA8775P FP16 QNN DLC inference returned a finite same-fixture latent at 0.0613% relative L2 / 64.25 dB SNR versus source; its 100-sample six-frame profile measured p50/p95 116.021/116.327 ms with all 121 execution-detail rows on NPU. Device-local action-policy support remains unqualified. The checkpoint-named Place_Markpen dataset returned HTTP 404, and the official vLLM-Omni example archive in InternData-A1 returned HTTP 403 gated-access denial under the current authenticated account; [real-observation access evidence](evidence/internvla_real_observation_access/README.md) records the blocker without treating synthetic actions as task validation.
New exact-device [Galaxy S24 QNN](evidence/internvla_cosmos_qualcomm/s24/audit_report.json) and [RB3 ONNX CPU](evidence/internvla_cosmos_qualcomm/rb3_cpu/audit_report.json) Cosmos encoder inferences returned finite same-fixture latents at 0.0613% and 2.20e-6 relative L2, respectively. The S24 profile measured 100 six-frame samples at p50/p95 64.314/67.472 ms with all 121 execution-detail rows on NPU. RB3 placement remains pending. Neither result runs the action policy locally or establishes a real-observation task tolerance.
New exact-device [Galaxy S24 QNN](evidence/internvla_cosmos_qualcomm/s24/audit_report.json) and [RB3 ONNX CPU](evidence/internvla_cosmos_qualcomm/rb3_cpu/audit_report.json) Cosmos encoder inferences returned finite same-fixture latents at 0.0613% and 2.20e-6 relative L2, respectively. The S24 profile measured 100 six-frame samples at p50/p95 64.314/67.472 ms with all 121 execution-detail rows on NPU. The RB3 profile measured 46 six-frame samples at p50/p95 13.018/13.053 s with all 590 execution-detail rows on CPU. Injecting the two hosted latents into the real policy on local CPU changed fixed synthetic actions by 0.631% and 0.594% relative L2, respectively. Neither result runs the action policy on its device or establishes a real-observation task tolerance.
@@ -8,8 +8,8 @@ The same source model also [compiled to FP16 QNN DLC on Snapdragon X Elite CRD](
The same source also [compiled to FP16 QNN DLC on SA8775P ADP](sa8775p/compile_report.json), producing target mn750wz8m for Android. [Same-fixture NPU-requested inference](sa8775p/inference_report.json) using dataset d26qo8p57 returned a finite FP32 [6,16,32,32] latent. Its [audit](sa8775p/audit_report.json) measured **0.0613% relative L2 / 64.25 dB SNR** versus the pinned source pattern, with cosine 0.999999812. The [placement profile](sa8775p/profile_report.json) returned 100 six-frame component samples at nearest-rank p50/p95 **116.021/116.327 ms**, with all **121 execution-detail rows on NPU**. The 114.779 ms estimated-time field is the sample minimum. Reported inference peak memory was 116,924,416 bytes and first-load peak 659,845,120 bytes. No complete local policy follows.
The same source has exact-device [Galaxy S24 FP16 QNN DLC](s24/compile_report.json) and [RB3 Gen 2 ONNX CPU](rb3_cpu/compile_report.json) compiles. Same-fixture [S24 NPU-requested inference](s24/inference_report.json) returned a finite latent at **0.0613% relative L2 / 64.25 dB SNR** versus the pinned source pattern ([audit](s24/audit_report.json)). [RB3 CPU-requested inference](rb3_cpu/inference_report.json) returned a finite latent at **2.20e-6 relative L2 / 113.17 dB SNR** versus source ([audit](rb3_cpu/audit_report.json)). The [S24 placement profile](s24/profile_report.json) returned 100 six-frame component samples at nearest-rank p50/p95 **64.314/67.472 ms**, with all **121 execution-detail rows on NPU**; its [full audit](s24/audit_report.json) ties the measured placement to the numerical output and exact device. Reported inference peak memory was 309,661,696 bytes and first-load peak 712,884,224 bytes. The [RB3 CPU placement profile](rb3_cpu/profile_submission.json) is pending. These are encoder component checks; no complete policy was resident on either device.
The same source has exact-device [Galaxy S24 FP16 QNN DLC](s24/compile_report.json) and [RB3 Gen 2 ONNX CPU](rb3_cpu/compile_report.json) compiles. Same-fixture [S24 NPU-requested inference](s24/inference_report.json) returned a finite latent at **0.0613% relative L2 / 64.25 dB SNR** versus the pinned source pattern ([audit](s24/audit_report.json)). [RB3 CPU-requested inference](rb3_cpu/inference_report.json) returned a finite latent at **2.20e-6 relative L2 / 113.17 dB SNR** versus source ([audit](rb3_cpu/audit_report.json)). The [S24 placement profile](s24/profile_report.json) returned 100 six-frame component samples at nearest-rank p50/p95 **64.314/67.472 ms**, with all **121 execution-detail rows on NPU**. Reported inference peak memory was 309,661,696 bytes and first-load peak 712,884,224 bytes. The [RB3 placement profile](rb3_cpu/profile_report.json) returned **46** six-frame component samples at nearest-rank p50/p95 **13.018/13.053 s**, with all **590 execution-detail rows on CPU**; reported inference peak memory was 220,680,192 bytes. The [S24](s24/audit_report.json) and [RB3](rb3_cpu/audit_report.json) full audits bind numerical output, placement and exact target. These are encoder component checks; no complete policy was resident on either device.
The [generic collector](../../../../experiments/collect_aihub_component.py) preserves terminal jobs, and the [Cosmos auditor](../../../../experiments/audit_internvla_cosmos_qualcomm.py) checks source/fixture hashes, target/device/dataset identity, latent shape and finite numerical difference against the pinned source reference. A separate [synthetic action sensitivity check](s25/action_sensitivity.json) injected either the pinned source or S25 latent into the same real Place_Markpen policy on **local CPU**, with zero state/noise. The [reproducer](../../../../experiments/probe_internvla_hosted_latent_actions.py) returned finite `[1,50,32]` actions; hosted-vs-source action relative L2 was **0.742%**, maximum absolute difference **0.0115**, cosine **0.999973**. Repeating the source policy gave bitwise identical actions. This is a cross-device numerical handoff experiment, not a device-local policy or robot-task pass; no real-observation action tolerance is known.
The [generic collector](../../../../experiments/collect_aihub_component.py) preserves terminal jobs, and the [Cosmos auditor](../../../../experiments/audit_internvla_cosmos_qualcomm.py) checks source/fixture hashes, target/device/dataset identity, latent shape and finite numerical difference against the pinned source reference. Separate synthetic action-sensitivity checks injected the pinned source or hosted [S25](s25/action_sensitivity.json), [S24](s24/action_sensitivity.json), and [RB3](rb3_cpu/action_sensitivity.json) latents into the same real Place_Markpen policy on **local CPU**, with zero state/noise. The [reproducer](../../../../experiments/probe_internvla_hosted_latent_actions.py) returned finite action tensors of shape [1,50,32]; hosted-vs-source action relative L2 was **0.742% / 0.631% / 0.594%**, respectively. Repeating the source policy gave bitwise identical actions in each run. The S24/RB3 reports pin the imported current fork source, PyTorch 2.13.0+cpu, vLLM 0.28.0 and Transformers 5.14.1. The RB3 latent's near-exact encoder match did not imply action identity after the policy's bfloat16 path. These are numerical handoff experiments, not device-local policy or robot-task passes; no real-observation action tolerance is known.
Next: test representative real observations and action tolerances, then build and validate a device-local stateful policy. Full multimodal observation processing, admission, cancellation and sustained profiling remain open.
@@ -0,0 +1,35 @@
{
"scope": "Dragonwing RB3 Gen 2 Vision Kit hosted Cosmos latent injected into local CPU InternVLA policy with synthetic state/noise; no device-local policy or robot-task result",
"status": "synthetic_action_sensitivity_measured",
"hosted_device_name": "Dragonwing RB3 Gen 2 Vision Kit",
"policy_checkpoint_sha256": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313",
"fixture_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"hosted_output_sha256": "a316ab251ff5257f9af60e80e44ea81ff6da07b83d84b618ae8837a160c83cdc",
"hosted_inference_job_id": "jpyoxo0l5",
"policy_torch": "2.13.0+cpu",
"policy_vllm": "0.28.0",
"policy_transformers": "5.14.1",
"loaded_omni_path": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py",
"policy_load_seconds_not_request_timing": 30.431364054966252,
"encoder_calls": {
"source": 2,
"hosted": 1
},
"action_shape": [
1,
50,
32
],
"source_repeat_bitwise_equal": true,
"action_relative_l2": 0.005941975079977283,
"action_max_abs": 0.007475033402442932,
"action_cosine": 0.9999823489916904,
"source_actions_sha256": "d20b4804ce549c25e46590f4057d5d9eceb9e331c7015e3fc90cf79a234bf018",
"hosted_actions_sha256": "66234e929748b1b3207ba7f56884d02f7a4fba37cd4d07ca50a428fd2fd25e5c",
"limits": [
"The policy ran on local CPU; the device only executed the isolated encoder fixture.",
"The encoder input was a synthetic pattern and policy state/noise were synthetic zeros.",
"No real-observation reference actions, physical units/time, or robot-task tolerance exist.",
"No latency, memory admission, cancellation or sustained device power gate was tested."
]
}
@@ -1,6 +1,6 @@
{
"scope": "one six-frame Cosmos image encoder on synthetic pattern; no complete InternVLA policy",
"status": "component_inference_numeric_measured",
"status": "component_inference_numeric_and_placement_measured",
"device": {
"name": "Dragonwing RB3 Gen 2 Vision Kit",
"os": "1.6",
@@ -48,7 +48,22 @@
},
"limits": [
"The fixture is synthetic; no real-observation or action-quality tolerance is established.",
"The action policy, state lifecycle, admission and complete request were not run on this device.",
"Requested NPU is not actual per-node placement without a device profile."
]
"The action policy, state lifecycle, admission and complete request were not run on this device."
],
"profile": {
"job_id": "jpvld2475",
"sample_count": 46,
"sample_min_us": 12982566,
"nearest_rank_p50_us": 13017507,
"nearest_rank_p95_us": 13053146,
"reported_estimated_inference_time_us": 12982566,
"reported_peak_memory_bytes": 220680192,
"reported_first_load_time_us": 130552,
"reported_warm_load_time_us": 131945,
"reported_first_load_peak_memory_bytes": 14336000,
"reported_warm_load_peak_memory_bytes": 16273408,
"compute_unit_row_counts": {
"CPU": 590
}
}
}
@@ -0,0 +1,35 @@
{
"scope": "Samsung Galaxy S24 hosted Cosmos latent injected into local CPU InternVLA policy with synthetic state/noise; no device-local policy or robot-task result",
"status": "synthetic_action_sensitivity_measured",
"hosted_device_name": "Samsung Galaxy S24",
"policy_checkpoint_sha256": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313",
"fixture_sha256": "dcbaf1391ca914d4bbccc1cb384daf05666e771d9cdae90c4f069ec8fcf05368",
"hosted_output_sha256": "f15119b8dbeed9a5fbccd2d918dc52277606ee8bbdbf81cfdd16c77c1d24060a",
"hosted_inference_job_id": "jp2rwrnqg",
"policy_torch": "2.13.0+cpu",
"policy_vllm": "0.28.0",
"policy_transformers": "5.14.1",
"loaded_omni_path": "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/__init__.py",
"policy_load_seconds_not_request_timing": 29.63034911704017,
"encoder_calls": {
"source": 2,
"hosted": 1
},
"action_shape": [
1,
50,
32
],
"source_repeat_bitwise_equal": true,
"action_relative_l2": 0.006314604351455459,
"action_max_abs": 0.011432945728302002,
"action_cosine": 0.9999801003401785,
"source_actions_sha256": "d20b4804ce549c25e46590f4057d5d9eceb9e331c7015e3fc90cf79a234bf018",
"hosted_actions_sha256": "93cc8b5b7f5984ee94388320e996b252ded572f4765e1d77b72192d9b6bce407",
"limits": [
"The policy ran on local CPU; the device only executed the isolated encoder fixture.",
"The encoder input was a synthetic pattern and policy state/noise were synthetic zeros.",
"No real-observation reference actions, physical units/time, or robot-task tolerance exist.",
"No latency, memory admission, cancellation or sustained device power gate was tested."
]
}
@@ -8,7 +8,7 @@ Historical FP16 QNN context-binary [S24](s24/compile_report.json), [S25](s25/com
Explicit [X Elite ONNX CPU](xelite/cpu_fallback/compile_report.json) and [SA8775P TFLite CPU](sa8775p/cpu_fallback/compile_report.json) fallback compiles succeeded from the same source. The same-fixture [X Elite CPU-requested inference](xelite/cpu_fallback/inference_report.json) succeeded. Its [audit](xelite/cpu_fallback/audit_report.json) found logits relative L2 2.07e-5, maximum new-K/V relative L2 2.18e-5, and preserved ONNX CPU top-1 speech token 80. The [CPU-requested placement profile](xelite/cpu_fallback/profile_report.json) returned 100 decode-step component samples at nearest-rank p50/p95 **191.414/309.428 ms**, with all **1,744 execution-detail rows on CPU**. The 142.921 ms estimated-time field is the sample minimum; reported inference peak memory was 1,928,019,968 bytes. The [SA8775P TFLite CPU-requested inference](sa8775p/cpu_fallback/inference_report.json) also succeeded. Its [audit](sa8775p/cpu_fallback/audit_report.json) found logits relative L2 3.33e-5, maximum new-K/V relative L2 3.41e-5, and preserved CPU top-1 speech token 80. The [CPU-requested placement profile](sa8775p/cpu_fallback/profile_report.json) returned 100 decode-step component samples at nearest-rank p50/p95 **52.635/76.925 ms**, with all **1,800 execution-detail rows on CPU**. The 45.688 ms estimated-time field is the sample minimum; reported inference peak memory was 1,913,794,560 bytes. Both explicit CPU routes are numerically close on one decode step, not complete talker loops or TTS deployments.
An exact RB3 Gen 2 [TFLite CPU fallback compile](rb3/cpu_fallback/compile_report.json) succeeded from the same ONNX talker step, producing target mnz07g9xm. [Same-fixture CPU-requested inference](rb3/cpu_fallback/inference_submission.json) has been submitted; numerical output and actual CPU placement are pending. The earlier RB3 FP16 QNN rejection remains the result for that specific NPU artifact.
An exact RB3 Gen 2 [TFLite CPU fallback compile](rb3/cpu_fallback/compile_report.json) succeeded from the same ONNX talker step, producing target mnz07g9xm. [Same-fixture CPU-requested inference](rb3/cpu_fallback/inference_report.json) returned 57 finite output tensors. Its [full audit](rb3/cpu_fallback/audit_report.json) preserved ONNX CPU top-1 speech token 80, with logits relative L2 **2.29e-5** and maximum new-cache relative L2 **3.04e-5**. The [placement profile](rb3/cpu_fallback/profile_report.json) returned **100** decode-step samples at nearest-rank p50/p95 **138.022/139.642 ms**, with all **1,800 execution-detail rows on CPU**. Reported inference peak memory was **1,849,708,544 bytes**; the 137.543 ms estimated-time field is the sample minimum. The earlier RB3 FP16 QNN rejection remains the result for that specific NPU artifact. No predictor, vocoder handoff, stateful loop or complete TTS stream was tested.
The [collector](../../../../experiments/collect_aihub_component.py) retrieves terminal inference outputs without resubmission. The [tensor auditor](../../../../experiments/audit_qwen_tts_talker_qualcomm.py) enforces the source, fixture, compile target, exact device, output shape and finiteness contracts, and reports logits top-1 plus relative error for all 56 new K/V tensors. It does not convert those metrics to a quality pass without an explicit token/audio tolerance. Its 57-output contract was exercised against the pinned CPU reference as a local self-check; that self-check is not device evidence. Requested NPU placement still needs a profile.
@@ -0,0 +1,413 @@
{
"scope": "one synthetic fixed-cache 28-layer Qwen3-TTS talker decode step; no complete TTS stream",
"status": "component_inference_numeric_and_placement_measured",
"device": {
"name": "Dragonwing RB3 Gen 2 Vision Kit",
"os": "1.6",
"attributes": [
"os:qc_linux",
"framework:tflite",
"framework:onnx",
"vendor:qualcomm",
"abi:aarch64-oe-linux-gcc11",
"format:iot",
"chipset:qualcomm-qcs6490",
"chipset:qcs6490",
"chipset:qualcomm-dragonwing-qcs6490",
"hexagon:v68",
"soc-model:93",
"framework:qnn"
]
},
"compile_job_id": "j5687o2yg",
"inference_job_id": "jgjr73yxp",
"source_model_id": "mq3xre4rq",
"target_model_id": "mnz07g9xm",
"input_dataset_id": "d7dw6pgy2",
"requested_run_options": "--compute_unit cpu",
"files": {
"source_onnx": {
"bytes": 1776377476,
"sha256": "41feb08517678e94d9301e992d0df610fc60e7c9faba5600703298c86554fd22"
},
"fixture": {
"bytes": 54591500,
"sha256": "0bf538e1b64dfc9737dc4f925d61c6e4ffa5075a5dcd7afb1e85ac3bd2d9afea"
},
"cpu_reference": {
"bytes": 237615,
"sha256": "ee0ead70e33c02c7d3d6bcb757c5cf0fcbb9eb6fc75c34abfbe8a4479657d5be"
},
"device_output": {
"bytes": 238131,
"sha256": "4c752aeda335c11c76eebb4c3098c2c9fe2100e498353c5ccd71bfb55cb3a4e0"
}
},
"tensor_comparison": {
"logits": {
"relative_l2": 2.2916687817841374e-05,
"max_abs_error": 0.0004127025604248047,
"reference_rms": 3.7322664515389006,
"output_rms": 3.732259371636463,
"cpu_top1": 80,
"device_top1": 80,
"top1_matches": true
},
"k_new_0": {
"relative_l2": 5.152029077211028e-07,
"max_abs_error": 4.291534423828125e-06,
"reference_rms": 1.1349352034374294,
"output_rms": 1.1349351623666866
},
"v_new_0": {
"relative_l2": 4.966858999192233e-07,
"max_abs_error": 4.470348358154297e-07,
"reference_rms": 0.1383137764927112,
"output_rms": 0.1383137788545643
},
"k_new_1": {
"relative_l2": 5.796461586990352e-07,
"max_abs_error": 4.291534423828125e-06,
"reference_rms": 1.4773734279001252,
"output_rms": 1.4773734283828996
},
"v_new_1": {
"relative_l2": 5.889987974555027e-07,
"max_abs_error": 4.470348358154297e-07,
"reference_rms": 0.162893856079411,
"output_rms": 0.16289385170633208
},
"k_new_2": {
"relative_l2": 9.69083016420898e-07,
"max_abs_error": 5.185604095458984e-06,
"reference_rms": 1.4749251890370425,
"output_rms": 1.474925192302431
},
"v_new_2": {
"relative_l2": 1.049902250173746e-06,
"max_abs_error": 1.0728836059570312e-06,
"reference_rms": 0.2996575863196337,
"output_rms": 0.299657576278014
},
"k_new_3": {
"relative_l2": 1.3624245396822108e-06,
"max_abs_error": 6.973743438720703e-06,
"reference_rms": 1.4529848472712377,
"output_rms": 1.4529848672170596
},
"v_new_3": {
"relative_l2": 1.364679367827457e-06,
"max_abs_error": 1.3262033462524414e-06,
"reference_rms": 0.2917197159228712,
"output_rms": 0.2917197195303453
},
"k_new_4": {
"relative_l2": 1.6201946278299968e-06,
"max_abs_error": 1.1444091796875e-05,
"reference_rms": 1.5413980317857385,
"output_rms": 1.541397969997227
},
"v_new_4": {
"relative_l2": 1.7383641867081315e-06,
"max_abs_error": 2.9802322387695312e-06,
"reference_rms": 0.41222657123793377,
"output_rms": 0.4122265255011459
},
"k_new_5": {
"relative_l2": 1.6948481510409724e-06,
"max_abs_error": 1.6689300537109375e-05,
"reference_rms": 1.6285454176549035,
"output_rms": 1.6285453238759755
},
"v_new_5": {
"relative_l2": 2.247934974206322e-06,
"max_abs_error": 2.5033950805664062e-06,
"reference_rms": 0.32638470026742417,
"output_rms": 0.32638467133113985
},
"k_new_6": {
"relative_l2": 2.234929366233828e-06,
"max_abs_error": 1.9550323486328125e-05,
"reference_rms": 1.8000231156167423,
"output_rms": 1.8000231859672284
},
"v_new_6": {
"relative_l2": 2.5916566044459965e-06,
"max_abs_error": 2.4139881134033203e-06,
"reference_rms": 0.2629708328253682,
"output_rms": 0.2629708174841384
},
"k_new_7": {
"relative_l2": 2.45852991704136e-06,
"max_abs_error": 2.3365020751953125e-05,
"reference_rms": 1.6255722851184644,
"output_rms": 1.625572320964117
},
"v_new_7": {
"relative_l2": 2.4782806925428836e-06,
"max_abs_error": 3.6954879760742188e-06,
"reference_rms": 0.348368074126628,
"output_rms": 0.348368057489859
},
"k_new_8": {
"relative_l2": 2.695526207016672e-06,
"max_abs_error": 1.8268823623657227e-05,
"reference_rms": 1.516512353065435,
"output_rms": 1.516512370899923
},
"v_new_8": {
"relative_l2": 3.0528961625200938e-06,
"max_abs_error": 3.039836883544922e-06,
"reference_rms": 0.28027916002007797,
"output_rms": 0.2802790958003498
},
"k_new_9": {
"relative_l2": 3.3089615688173833e-06,
"max_abs_error": 2.6941299438476562e-05,
"reference_rms": 1.5960043895576705,
"output_rms": 1.5960044604469381
},
"v_new_9": {
"relative_l2": 4.318579356428222e-06,
"max_abs_error": 5.27501106262207e-06,
"reference_rms": 0.37541008682864946,
"output_rms": 0.3754100532948503
},
"k_new_10": {
"relative_l2": 4.139694428637568e-06,
"max_abs_error": 2.9921531677246094e-05,
"reference_rms": 1.6561161468173449,
"output_rms": 1.6561160047725072
},
"v_new_10": {
"relative_l2": 5.407146004464394e-06,
"max_abs_error": 5.826354026794434e-06,
"reference_rms": 0.26429778504066537,
"output_rms": 0.26429765100277836
},
"k_new_11": {
"relative_l2": 4.431148018138867e-06,
"max_abs_error": 3.045797348022461e-05,
"reference_rms": 1.5170462775366995,
"output_rms": 1.5170461924841092
},
"v_new_11": {
"relative_l2": 6.085272202651434e-06,
"max_abs_error": 4.76837158203125e-06,
"reference_rms": 0.22548908846990579,
"output_rms": 0.2254890334352194
},
"k_new_12": {
"relative_l2": 4.526640192570614e-06,
"max_abs_error": 3.63960862159729e-05,
"reference_rms": 1.5731131793440647,
"output_rms": 1.573113219005372
},
"v_new_12": {
"relative_l2": 6.2445101157449905e-06,
"max_abs_error": 4.276633262634277e-06,
"reference_rms": 0.20839677682266325,
"output_rms": 0.20839680391582188
},
"k_new_13": {
"relative_l2": 5.212479594651589e-06,
"max_abs_error": 2.8908252716064453e-05,
"reference_rms": 1.4939452330557514,
"output_rms": 1.4939451807388429
},
"v_new_13": {
"relative_l2": 6.83625353086478e-06,
"max_abs_error": 6.988644599914551e-06,
"reference_rms": 0.24929462665621008,
"output_rms": 0.249294614666621
},
"k_new_14": {
"relative_l2": 5.542312823011223e-06,
"max_abs_error": 3.802776336669922e-05,
"reference_rms": 1.4942429579997731,
"output_rms": 1.4942428197943551
},
"v_new_14": {
"relative_l2": 7.5743655151443575e-06,
"max_abs_error": 8.32974910736084e-06,
"reference_rms": 0.32824019866053383,
"output_rms": 0.32824054815322135
},
"k_new_15": {
"relative_l2": 6.427310726438685e-06,
"max_abs_error": 4.9591064453125e-05,
"reference_rms": 1.6561072116211841,
"output_rms": 1.6561075815658715
},
"v_new_15": {
"relative_l2": 8.444949381452084e-06,
"max_abs_error": 7.152557373046875e-06,
"reference_rms": 0.24976283574047556,
"output_rms": 0.24976265387295
},
"k_new_16": {
"relative_l2": 7.363364112637408e-06,
"max_abs_error": 4.369020462036133e-05,
"reference_rms": 1.617983543941328,
"output_rms": 1.617983592059921
},
"v_new_16": {
"relative_l2": 1.001121128323394e-05,
"max_abs_error": 1.1898577213287354e-05,
"reference_rms": 0.3826095020438836,
"output_rms": 0.3826091061956822
},
"k_new_17": {
"relative_l2": 1.0778302115861344e-05,
"max_abs_error": 9.34600830078125e-05,
"reference_rms": 1.6828817809060599,
"output_rms": 1.6828820647004166
},
"v_new_17": {
"relative_l2": 1.2209016645487722e-05,
"max_abs_error": 2.25752592086792e-05,
"reference_rms": 0.4656876133547257,
"output_rms": 0.4656871672406077
},
"k_new_18": {
"relative_l2": 1.1687163644254878e-05,
"max_abs_error": 8.392333984375e-05,
"reference_rms": 1.5546463592216835,
"output_rms": 1.554646404238744
},
"v_new_18": {
"relative_l2": 1.4114869462985329e-05,
"max_abs_error": 2.6226043701171875e-05,
"reference_rms": 0.5200020604619255,
"output_rms": 0.5200010435615751
},
"k_new_19": {
"relative_l2": 1.293475036018382e-05,
"max_abs_error": 8.100271224975586e-05,
"reference_rms": 1.5217070844504548,
"output_rms": 1.521707111228242
},
"v_new_19": {
"relative_l2": 1.7504392181275784e-05,
"max_abs_error": 3.668665885925293e-05,
"reference_rms": 0.5402920798790236,
"output_rms": 0.5402911807900403
},
"k_new_20": {
"relative_l2": 1.5395797061483903e-05,
"max_abs_error": 0.00012564659118652344,
"reference_rms": 1.6813854859968058,
"output_rms": 1.6813852057046115
},
"v_new_20": {
"relative_l2": 1.9287008058464706e-05,
"max_abs_error": 4.482269287109375e-05,
"reference_rms": 0.6088730895277438,
"output_rms": 0.6088731369070146
},
"k_new_21": {
"relative_l2": 1.8100814223200195e-05,
"max_abs_error": 0.00011688470840454102,
"reference_rms": 1.7370493419005983,
"output_rms": 1.7370500737698291
},
"v_new_21": {
"relative_l2": 2.2304805731159413e-05,
"max_abs_error": 4.431605339050293e-05,
"reference_rms": 0.6072011016139925,
"output_rms": 0.6072005625813948
},
"k_new_22": {
"relative_l2": 2.1465548256588297e-05,
"max_abs_error": 0.00020051002502441406,
"reference_rms": 1.9661056736696203,
"output_rms": 1.9661043552928148
},
"v_new_22": {
"relative_l2": 2.4201882382170654e-05,
"max_abs_error": 6.145238876342773e-05,
"reference_rms": 0.7362191931025958,
"output_rms": 0.7362196969237054
},
"k_new_23": {
"relative_l2": 2.3362171175711752e-05,
"max_abs_error": 0.00012159347534179688,
"reference_rms": 1.6005997999291703,
"output_rms": 1.6005993560849425
},
"v_new_23": {
"relative_l2": 2.7357827003365385e-05,
"max_abs_error": 5.84721565246582e-05,
"reference_rms": 0.6675198669572269,
"output_rms": 0.6675198478050777
},
"k_new_24": {
"relative_l2": 2.459489335451307e-05,
"max_abs_error": 0.0001214742660522461,
"reference_rms": 1.6337684549178757,
"output_rms": 1.6337680376610926
},
"v_new_24": {
"relative_l2": 3.035226038497611e-05,
"max_abs_error": 6.999820470809937e-05,
"reference_rms": 0.6240472225015637,
"output_rms": 0.6240475101002065
},
"k_new_25": {
"relative_l2": 2.1449165815530768e-05,
"max_abs_error": 0.0001513957977294922,
"reference_rms": 1.527601662385539,
"output_rms": 1.5276011004801813
},
"v_new_25": {
"relative_l2": 2.803888960432842e-05,
"max_abs_error": 9.582936763763428e-05,
"reference_rms": 0.9133071626950193,
"output_rms": 0.9133103163569024
},
"k_new_26": {
"relative_l2": 2.2066572744491555e-05,
"max_abs_error": 0.0001277923583984375,
"reference_rms": 1.4905787414732559,
"output_rms": 1.4905788481955249
},
"v_new_26": {
"relative_l2": 2.9962956703013193e-05,
"max_abs_error": 7.43567943572998e-05,
"reference_rms": 0.7009595279765859,
"output_rms": 0.7009599002165507
},
"k_new_27": {
"relative_l2": 2.2728866609046758e-05,
"max_abs_error": 0.00011932849884033203,
"reference_rms": 1.5453936433107067,
"output_rms": 1.545393263774246
},
"v_new_27": {
"relative_l2": 2.752511641009187e-05,
"max_abs_error": 7.11679458618164e-05,
"reference_rms": 0.6731545154533489,
"output_rms": 0.6731529510976896
}
},
"cache_max_relative_l2": 3.035226038497611e-05,
"limits": [
"The historical source export does not attest an exact checkpoint revision.",
"The fixture is synthetic and has no token-to-audio quality tolerance.",
"No predictor, vocoder, persistent cache loop or complete TTS stream was tested."
],
"profile": {
"job_id": "jp3z97qm5",
"sample_count": 100,
"sample_min_us": 137543,
"nearest_rank_p50_us": 138022,
"nearest_rank_p95_us": 139642,
"reported_estimated_inference_time_us": 137543,
"reported_peak_memory_bytes": 1849708544,
"reported_first_load_time_us": 602619,
"reported_first_load_peak_memory_bytes": 1654730752,
"compute_unit_row_counts": {
"CPU": 1800
}
}
}
@@ -0,0 +1,32 @@
{
"timestamp_utc": "2026-09-24T02:14:27.989178+00:00",
"qai_hub_version": "0.55.0",
"facility": "Qualcomm AI Hub Workbench",
"job_id": "jgjr73yxp",
"url": "https://workbench.aihub.qualcomm.com/jobs/jgjr73yxp/",
"status": "SUCCESS",
"status_message": "",
"options": "--compute_unit cpu",
"hub_version": "aihub-2026.09.11.0",
"device": {
"name": "Dragonwing RB3 Gen 2 Vision Kit",
"os": "1.6",
"attributes": [
"os:qc_linux",
"framework:tflite",
"framework:onnx",
"vendor:qualcomm",
"abi:aarch64-oe-linux-gcc11",
"format:iot",
"chipset:qualcomm-qcs6490",
"chipset:qcs6490",
"chipset:qualcomm-dragonwing-qcs6490",
"hexagon:v68",
"soc-model:93",
"framework:qnn"
]
},
"model_id": "mnz07g9xm",
"input_dataset_id": "d7dw6pgy2",
"outputs": "device_output.npz"
}
@@ -0,0 +1,13 @@
{
"timestamp_utc": "2026-09-24T02:04:41.687473+00:00",
"facility": "Qualcomm AI Hub Workbench",
"qai_hub_version": "0.55.0",
"source_compile_job_id": "j5687o2yg",
"target_model_id": "mnz07g9xm",
"device": "Dragonwing RB3 Gen 2 Vision Kit",
"options": "--compute_unit cpu",
"kind": "profile",
"status": "SUBMITTED",
"job_id": "jp3z97qm5",
"url": "https://workbench.aihub.qualcomm.com/jobs/jp3z97qm5/"
}
@@ -1,6 +1,6 @@
# Qwen3-TTS Code2Wav component across Qualcomm devices
**The retained Qwen3-TTS Code2Wav export does not yet have a numerically qualified SA8775P or RB3 GPU path.** A fresh inference on the exact hosted SA8775P ADP returned a severely saturated waveform on the same input for which original ONNX Runtime CPU and prior S25 GPU outputs remained unsaturated. RB3 produced an unsaturated but divergent waveform. Other submitted profiles and device controls were pending at this evidence snapshot; they are not counted as passes.
**The retained Qwen3-TTS Code2Wav export does not yet have a numerically qualified SA8775P or RB3 GPU path.** A fresh inference on the exact hosted SA8775P ADP returned a severely saturated waveform on the same input for which original ONNX Runtime CPU and prior S25 GPU outputs remained unsaturated. RB3 produced an unsaturated but divergent GPU-requested waveform. Explicit CPU routes on both devices matched the original ONNX CPU waveform and passed node-placement profiling, but their measured vocoder latency remains a complete-stream concern.
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/`.
@@ -14,7 +14,7 @@ On the **exact hosted SA8775P**, a [CPU-requested inference](sa8775p/cpu_control
The re-fetched *historical* [SA8775P profile](sa8775p/historical_profile_report.json) has 100 component samples, nearest-rank p50/p95 **1.751/1.874 s**, and 403 CPU plus 335 GPU execution-detail rows. The *historical* [RB3 profile](rb3/historical_profile_report.json) has 100 samples, p50/p95 **3.143/3.189 s**, also with 403 CPU plus 335 GPU rows. Their previously quoted 1.701/3.107 s estimated-time fields are sample minima, not medians. Both profiles exclude talker/predictor, stage handoff, streaming and full-request time.
An exact RB3 Gen 2 [CPU-requested control inference](rb3/cpu_control/inference_report.json) of the same TFLite binary and pinned waveform fixture returned a finite unsaturated waveform. Its [same-fixture comparison](rb3/cpu_control/inference_comparison.json) matched original ONNX CPU within **4.13e-6 relative L2 / 107.67 dB SNR**, with no saturated samples. The [CPU placement profile](rb3/cpu_control/profile_submission.json) is pending, so requested CPU is not yet verified node placement or a measured component runtime. This repairs the tested RB3 component numerical route through an explicit CPU fallback, not a complete TTS stream; the GPU-requested waveform remains unqualified.
An exact RB3 Gen 2 [CPU-requested control inference](rb3/cpu_control/inference_report.json) of the same TFLite binary and pinned waveform fixture returned a finite unsaturated waveform. Its [same-fixture comparison](rb3/cpu_control/inference_comparison.json) matched original ONNX CPU within **4.13e-6 relative L2 / 107.67 dB SNR**, with no saturated samples. The [placement profile](rb3/cpu_control/profile_report.json) returned **47** component samples at nearest-rank p50/p95 **12.727/13.424 s**, with all **738 execution-detail rows on CPU** and reported inference peak memory **778,768,384 bytes**. The service's 11.294 s estimated-time field is the sample minimum. The [full audit](rb3/cpu_control/audit_report.json) binds numerical output and placement to the exact binary and device. This is a numerically matching component CPU route, but its 12.727 s median for one fixed vocoder step is a substantial playable-streaming latency blocker; no complete stream was measured. The GPU-requested waveform remains numerically unqualified.
The X Elite [ONNX CPU inference](xelite/cpu/inference_report.json) succeeded on the pinned fixture. Its [waveform comparison](xelite/cpu/inference_comparison.json) to the original local ONNX Runtime CPU output was **8.09e-7 relative L2 / 121.84 dB SNR**, with no saturation. The fresh [CPU profile](xelite/cpu/profile_report.json) returned **94** component samples, nearest-rank p50/p95 **6.384/6.644 s**, with all **634** execution-detail rows on CPU; the service's 5.917 s estimated-time field is the sample minimum. The [full audit](xelite/cpu/audit_report.json) pins source, fixture, target, waveform, placement and percentiles. This is near-source component parity on one fixture, without a listening-quality or complete-stream gate. The first X Elite [GPU inference](xelite/gpu/inference_report.json) and [profile](xelite/gpu/profile_report.json) jobs failed because Workbench rejects specifying both compute unit and ONNX execution provider. The corrected [DirectML inference](xelite/directml/inference_report.json) and [profile](xelite/directml/profile_report.json) both failed during DML provider initialization with Windows error `80070057` (`The parameter is incorrect`), without an output or timing samples. A separate [FP16 QNN DLC compile](xelite/qnn_npu/compile_report.json) succeeded. Its [NPU-requested same-fixture inference](xelite/qnn_npu/inference_report.json) returned a finite, unsaturated waveform at **1.138% relative L2 / 38.88 dB SNR** versus original ONNX CPU ([comparison](xelite/qnn_npu/inference_comparison.json)). This is better waveform agreement on this fixture than the historical S25 GPU output, but lacks a listening-quality tolerance and verified NPU node placement. Its [placement profile](xelite/qnn_npu/profile_report.json) failed after exceeding Workbench maximum execution time while preparing the graph; no timing or per-node placement samples were returned. The [compressed runtime log](xelite/qnn_npu/logs/jpyoxmvr5_runtime.log.gz) retains the QNN HTP preparation/serialization trace. The [X Elite ONNX CPU compile](xelite/compile_report.json) passed after the older TFLite target was rejected on Windows ARM. These failures constrain the tested DirectML route, not all GPU or NPU artifacts.
@@ -0,0 +1,85 @@
{
"scope": "one Qwen3-TTS code2wav 48,000-sample component on one retained fixture; no complete TTS stream",
"status": "component_executed_quality_unqualified",
"device": {
"name": "Dragonwing RB3 Gen 2 Vision Kit",
"os": "1.6",
"attributes": [
"os:qc_linux",
"framework:tflite",
"framework:onnx",
"vendor:qualcomm",
"abi:aarch64-oe-linux-gcc11",
"format:iot",
"chipset:qualcomm-qcs6490",
"chipset:qcs6490",
"chipset:qualcomm-dragonwing-qcs6490",
"hexagon:v68",
"soc-model:93",
"framework:qnn"
]
},
"compile_job_id": "j5mmy28w5",
"inference_job_id": "jglyxw4m5",
"profile_job_id": "jg9zmozvp",
"target_model_id": "mn0wyzd3q",
"input_dataset_id": "d7m80jl32",
"s25_prior_inference_job_id": "jpx428ojg",
"requested_run_options": "--compute_unit cpu",
"files": {
"source_onnx": {
"bytes": 423655047,
"sha256": "7c07666229c6d404894132e22f784525e3212a49efad55ddd532eda5286c2b2b"
},
"fixture": {
"bytes": 129721,
"sha256": "dfca9e8d2a724a568a31b6cd18ff6a52fdc205fd34e13cbf1cd75f0f7937e82d"
},
"cpu_output": {
"bytes": 179942,
"sha256": "8de78b94b59f01e49852f7706adbd2508a9976b8e2705cfd3b94d07bb3606cb1"
},
"s25_output": {
"bytes": 115235,
"sha256": "4a26486d5e84a6e22d16f9b26f995b8fe645c29bbd70b103615ec35a0fcb10a0"
},
"device_output": {
"bytes": 179497,
"sha256": "853feface7a93f7a22a0ffba8d1e297fe5a8780bd64f0444a6ce07b277246d3e"
}
},
"cpu_source_vs_device": {
"relative_l2": 4.1337705035866275e-06,
"snr_db": 107.67307275926692,
"max_abs": 6.854534149169922e-06,
"cosine": 0.9999999999914584,
"reference_rms": 0.08373439205485074,
"output_rms": 0.08373439765610562,
"output_saturated_fraction_abs_ge_0_999": 0.0
},
"s25_gpu_vs_device": {
"relative_l2": 0.04236848942339238,
"snr_db": 27.459140395118254,
"max_abs": 0.10591908544301987,
"cosine": 0.9991021766159882,
"reference_rms": 0.08376787228276501,
"output_rms": 0.08373439765610562,
"output_saturated_fraction_abs_ge_0_999": 0.0
},
"profile": {
"sample_count": 47,
"sample_min_us": 11294208,
"nearest_rank_p50_us": 12727273,
"nearest_rank_p95_us": 13423960,
"reported_estimated_inference_time_us": 11294208,
"reported_peak_memory_bytes": 778768384,
"compute_unit_row_counts": {
"CPU": 738
}
},
"limits": [
"Historical source export does not attest its exact checkpoint revision.",
"This fixed component waveform has no listening or task-quality tolerance.",
"Hosted component profiling excludes talker, predictor, stage handoff, streaming, admission and sustained power/thermal behavior."
]
}
@@ -12,11 +12,11 @@ On a hosted [Galaxy S24 Spark attention-layer experiment](../../../e2e_expansion
The same W8A16 layer also ran on hosted [Snapdragon X Elite CRD](../../../e2e_expansion_20260923/evidence/spark_xelite_full_attention/README.md) and [SA8775P ADP](../../../e2e_expansion_20260923/evidence/spark_sa8775_full_attention/README.md) NPUs, with pinned-fixture outputs identical to S24/S25; the 100-sample component p50/p95 was 1.433/1.606 ms and 1.837/2.079 ms, respectively. On [RB3 Gen 2 / QCS6490](../../../e2e_expansion_20260923/evidence/spark_rb3_full_attention/README.md), that W8A16 graph failed QNN DLC loading even after target-specific recompilation. An FP32 ONNX CPU layer then passed with source-relative L2 below 9e-7, while a calibrated W8A8 NPU layer executed but had 20.9% hidden-state relative L2 and remains numerically unqualified. These hosted component outcomes do not establish full generation or comparable device speed.
A [Qwen3-TTS Code2Wav follow-up](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) recovered source and target artifacts, a retained fixture, and raw historical profiles. On SA8775P, fresh GPU-requested inference saturated 96.63% of waveform samples and differed from original ONNX CPU by 11.832 relative L2; the same binary's CPU-requested output on the exact SA device matched ONNX CPU within 4.13e-6 relative L2. The CPU-requested route also has 100 component samples at p50/p95 5.384/5.534 s, with all 738 execution-detail rows on CPU; the GPU-requested path remains numerically failed. A separate SA FP16 QNN NPU vocoder artifact compiled but failed at inference without waveform output. Fresh RB3 GPU-requested inference was unsaturated but differed from CPU by 15.73% relative L2 (16.06 dB SNR), without a listening-quality gate; its 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s. The same binary requested on exact-RB3 CPU matched original ONNX CPU within 4.13e-6 relative L2 on the fixture; actual CPU placement profiling is pending. X Elite ONNX CPU vocoder inference passed on the same fixture with 8.09e-7 relative L2 versus local ONNX CPU; its 94-sample component p50/p95 was 6.384/6.644 s with all execution-detail rows on CPU. DirectML inference and profile both failed during provider initialization (Windows error 80070057); a separate FP16 QNN NPU vocoder inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR versus local ONNX CPU, but its NPU placement profile exceeded the service execution-time limit during graph preparation and returned no samples. None is a complete TTS stream.
A [Qwen3-TTS Code2Wav follow-up](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) recovered source and target artifacts, a retained fixture, and raw historical profiles. On SA8775P, fresh GPU-requested inference saturated 96.63% of waveform samples and differed from original ONNX CPU by 11.832 relative L2; the same binary's CPU-requested output on the exact SA device matched ONNX CPU within 4.13e-6 relative L2. The CPU-requested route also has 100 component samples at p50/p95 5.384/5.534 s, with all 738 execution-detail rows on CPU; the GPU-requested path remains numerically failed. A separate SA FP16 QNN NPU vocoder artifact compiled but failed at inference without waveform output. Fresh RB3 GPU-requested inference was unsaturated but differed from CPU by 15.73% relative L2 (16.06 dB SNR), without a listening-quality gate; its 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s. The same binary requested on exact-RB3 CPU matched original ONNX CPU within 4.13e-6 relative L2 on the fixture; its 47-sample CPU component profile measured p50/p95 12.727/13.424 s with all 738 execution-detail rows on CPU. X Elite ONNX CPU vocoder inference passed on the same fixture with 8.09e-7 relative L2 versus local ONNX CPU; its 94-sample component p50/p95 was 6.384/6.644 s with all execution-detail rows on CPU. DirectML inference and profile both failed during provider initialization (Windows error 80070057); a separate FP16 QNN NPU vocoder inference returned an unsaturated waveform at 1.138% relative L2 / 38.88 dB SNR versus local ONNX CPU, but its NPU placement profile exceeded the service execution-time limit during graph preparation and returned no samples. None is a complete TTS stream.
The identical SA/RB3 TFLite binary matched original ONNX CPU within 3.45e-6 relative L2 in a separate local HX370 x86-64 LiteRT CPU control. Exact-device SA and RB3 CPU-requested outputs also matched within 4.13e-6 relative L2. This narrows the tested GPU-route numerical failures; RB3 CPU placement and specific faulty delegate operations remain unverified.
A separate [Qwen3-TTS talker decode-step attempt](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) recovered a 28-layer ONNX export and synthetic fixed-cache fixture. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU reference top-1 speech token with 8.57–9.43% logits relative L2; they are numerically unqualified on this fixture. An RB3 compile rejected floating-point input. Separate CPU-requested talker steps on X Elite ONNX and SA8775P TFLite preserved CPU token 80 with logits relative L2 2.07e-5 and 3.33e-5; X Elite had 100 component samples at p50/p95 191.414/309.428 ms with all 1,744 execution-detail rows on CPU; SA had 100 at 52.635/76.925 ms with all 1,800 rows on CPU. No complete talker loop or TTS stream follows.
A separate [Qwen3-TTS talker decode-step attempt](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) recovered a 28-layer ONNX export and synthetic fixed-cache fixture. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU reference top-1 speech token with 8.57–9.43% logits relative L2; they are numerically unqualified on this fixture. An RB3 compile rejected floating-point input. Separate CPU-requested talker steps on X Elite ONNX, SA8775P TFLite and RB3 TFLite preserved CPU token 80 with logits relative L2 2.07e-5, 3.33e-5 and 2.29e-5; X Elite had 100 component samples at p50/p95 191.414/309.428 ms with all 1,744 execution-detail rows on CPU; SA had 100 at 52.635/76.925 ms with all 1,800 rows on CPU; RB3 had 100 at 138.022/139.642 ms with all 1,800 rows on CPU. No complete talker loop or TTS stream follows.
A [Galaxy S25 InternVLA Cosmos attempt](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md) packaged the real Place_Markpen image encoder into one ONNX file after two CPU parity fixtures. FLOAT16 QNN DLC inference returned a latent within 0.0524% relative L2 of the source on one pattern; its 100-sample six-frame component profile had p50/p95 49.665/51.382 ms and all 121 execution-detail rows on NPU. Injecting that latent into the real policy on local CPU changed synthetic actions by 0.742% relative L2, without a task tolerance. The same encoder compiled to FP16 QNN DLC for X Elite CRD and SA8775P; same-fixture NPU-requested inferences returned finite latents at 0.0608% and 0.0613% relative L2 versus source, with both X Elite and SA8775P profiled on NPU. This advances component and action-sensitivity evidence, not device-local full-policy qualification. The Place_Markpen checkpoint names dataset a2d_real/a2d_pen_holder, which returned HTTP 404 under the current authenticated Hugging Face account. The official vLLM-Omni example names a different Place_Markpen archive in InternData-A1, but access to that gated dataset returned HTTP 403; [the access record](../../../e2e_expansion_20260924/evidence/internvla_real_observation_access/README.md) leaves real-observation reference-action validation open.
@@ -24,7 +24,7 @@ A [MiniCPM-o speech-head study](../../../e2e_expansion_20260924/evidence/minicpm
A [raw sustained-window audit](../../../e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md) found that the historical native Windows RTX Qwen3-TTS run slowed sharply after about 26 minutes: all 17 serial medium requests in minutes 27–30 underrun in simulated first-audio playout, with median RTF 1.331. A current-source instrumented 30-minute repeat did not reproduce the collapse: the final 119 requests had median RTF 0.185, with three brief simulated underruns. The cause of the original collapse and an underrun-free playback qualification remain open.
Additional [Galaxy S24 and RB3 InternVLA Cosmos encoder checks](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md) returned finite same-fixture latents at 0.0613% and 2.20e-6 relative L2 versus source on S24 NPU and RB3 CPU-requested routes, respectively. The S24 placement profile measured 100 six-frame samples at p50/p95 64.314/67.472 ms with all 121 execution-detail rows on NPU; RB3 placement and both complete action policies remain pending.
Additional [Galaxy S24 and RB3 InternVLA Cosmos encoder checks](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md) returned finite same-fixture latents at 0.0613% and 2.20e-6 relative L2 versus source on S24 NPU and RB3 CPU-requested routes, respectively. The S24 placement profile measured 100 six-frame samples at p50/p95 64.314/67.472 ms with all 121 execution-detail rows on NPU. RB3 returned 46 six-frame CPU samples at p50/p95 13.018/13.053 s with all 590 execution-detail rows on CPU. Synthetic hosted-latent handoffs to the real policy on local CPU showed 0.631% and 0.594% action relative L2 for S24 and RB3; neither complete action policy ran on its device.
## Configuration × model
@@ -49,7 +49,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| Mobile Galaxy S25 / Snapdragon 8 Elite for Galaxy | NOT E2E (one Spark attention layer on NPU) | NOT E2E (FP16 talker token mismatch) | 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 token mismatch) | 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 (vocoder CPU numeric pass; placement pending) | NOT E2E | NOT E2E (CPU speech-head step profiled) | NOT E2E (Cosmos CPU numeric; placement pending) |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | NOT E2E (Spark CPU layer passed; W8A8 NPU quality open) | NOT E2E (talker + vocoder CPU numeric and profiled; vocoder slow) | NOT E2E | NOT E2E (CPU speech-head step profiled) | NOT E2E (Cosmos CPU numeric and profiled) |
## Per-cell reasons and next steps
@@ -104,17 +104,17 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| Mobile Galaxy S24 / Snapdragon 8 Gen 3 | Qwen3-TTS 0.6B CustomVoice | TALKER_FP16_NUMERIC_FAIL; NOT_E2E_PROFILEABLE | The real 28-layer FP16 QNN talker step executed on the 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. No full local TTS stream exists. | Resolve the [talker numerical difference](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md), then validate the complete local pipeline 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. 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). |
| 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). |
| Embedded SA8775P ADP / 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 SA8775P ADP (Android 14). 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.837/2.079 ms; the 1.749 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 embedded resident artifact/controller with state, token quality, memory admission/cancel and sustained power; [SA8775P NPU raw evidence](../../../e2e_expansion_20260923/evidence/spark_sa8775_full_attention/README.md). |
| Embedded SA8775P ADP / AI Hub | Qwen3-TTS 0.6B CustomVoice | COMPONENT_CPU_VOCODER_PARITY_AND_PLACEMENT_PASS; TALKER_TFLITE_CPU_NUMERIC_PROFILED; QNN_NPU_VOCODER_INFERENCE_FAILED; COMPONENT_GPU_NUMERIC_FAIL; TALKER_FP16_NUMERIC_FAIL; NOT_E2E_PROFILEABLE | On the exact SA8775P, the same TFLite binary's CPU-requested Code2Wav inference matched original ONNX CPU within 4.13e-6 relative L2 / 107.67 dB SNR, without saturation. Its 100-sample CPU-requested component profile had p50/p95 5.384/5.534 s with all 738 execution-detail rows on CPU; the service estimated-time field 5.250 s is the sample minimum. The GPU-requested output saturated 96.63% of samples with 11.832 relative L2; its fresh 100-sample mixed CPU/GPU profile p50/p95 was 1.776/1.880 s, timing failed audio. Even with FP32-preserving GPU options, 84.89% of samples saturated with 11.389 relative L2. The 28-layer FP16 QNN talker step executed but changed CPU top-1 token 80 to 1720 with 9.43% logits relative L2. A separate TFLite CPU-requested talker step preserved CPU top-1 token 80 with logits relative L2 3.33e-5 and maximum K/V relative L2 3.41e-5. Its 100-sample component profile had p50/p95 52.635/76.925 ms with all 1,800 execution-detail rows on CPU. A separate FP16 QNN DLC vocoder compile passed, but same-fixture NPU-requested inference failed after compilation without a waveform or placement samples. No complete pipeline exists. | Isolate the FP16 QNN vocoder runtime failure, GPU delegate failure and FP16 talker numerical drift, then establish listening quality, co-resident 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. |
| Embedded SA8775P ADP / 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. |
| Embedded SA8775P ADP / 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 SA8775P ADP. Same-fixture inference returned 41 finite tensors, preserved ONNX CPU top-1 token 1867, and had 0.3568% logits relative L2 and 1.225% maximum K/V relative L2. Its 100-sample component profile had nearest-rank p50/p95 11.901/13.038 ms, with all 944 execution-detail rows on NPU. Reported inference peak memory was 134,696,960 bytes and first-load peak 1,322,835,968 bytes; no complete thinker/encoders/vocoder bundle or device-local stateful controller exists. | Validate complete multimodal generation, state, speech quality, co-resident memory, cancellation and sustained power; [SA8775P raw evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). |
| Embedded SA8775P ADP / 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 SA8775P ADP. Against the pinned source, relative L2 was 0.0613%, SNR 64.25 dB and cosine 0.999999812. The 100-sample six-frame encoder profile had p50/p95 116.021/116.327 ms, with all 121 execution-detail rows on NPU. Reported component inference peak memory was 116,924,416 bytes and first-load peak 659,845,120 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; [SA8775P Cosmos raw evidence](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md). |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | Spark-X2.5 | COMPONENT_CPU_PARITY_PASS; COMPONENT_NPU_NUMERIC_UNQUALIFIED; NOT_E2E_PROFILEABLE | On the exact hosted Dragonwing RB3 Gen 2 Vision Kit (QCS6490, QC Linux 1.6), the reused S24 W8A16 QNN DLC and a separately RB3-compiled W8A16 DLC each failed inference/profile at QnnModel_composeGraphsFromDlc: MODEL_GRAPH_ERROR. An FP32 ONNX one-layer CPU route passed with all 56 profile rows on CPU, source-relative hidden/K/V L2 of 8.73e-7/2.98e-7/3.37e-7 and 100-sample component p50/p95 19.304/21.113 ms. A calibrated W8A8 QNN DLC ran with all 61 rows on NPU and p50/p95 5.610/5.761 ms, but hidden/K/V relative L2 was 20.914%/1.702%/4.413% versus FP32 CPU, without a next-token quality gate. These are different precisions, not a qualified speedup; no complete 28-layer prefill/decode/KV-ring/sampling, local Omni controller or complete-request timing exists. | Improve representative W8A8 calibration or find another compatible quality-passing artifact; validate token parity, then full device-resident generation, admission/cancel and sustained power; [RB3 raw evidence](../../../e2e_expansion_20260923/evidence/spark_rb3_full_attention/README.md). |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | Qwen3-TTS 0.6B CustomVoice | COMPONENT_CPU_VOCODER_NUMERIC_PASS_PLACEMENT_PENDING; MIXED_GPU_VOCODER_NUMERIC_UNQUALIFIED; NOT_E2E_PROFILEABLE | On exact hosted RB3, a CPU-requested inference of the same TFLite binary returned a finite unsaturated waveform matching original ONNX CPU within 4.13e-6 relative L2 / 107.67 dB SNR on the retained fixture; its actual node placement and timing profile remain pending. The GPU-requested waveform was also finite and unsaturated but differed by 15.73% relative L2 (16.06 dB SNR), without a listening-quality tolerance. Its 100-sample mixed CPU/GPU component profile had nearest-rank p50/p95 3.099/3.133 s and 403 CPU plus 335 GPU execution-detail rows. The 3.070 s estimated-time field is the sample minimum. The historical NPU talker build was rejected for floating-point inputs; a separate TFLite CPU talker build has compiled but not run. No full TTS pipeline exists. | Audit CPU vocoder placement and talker numerical output, then validate waveform quality, complete local execution, memory and sustained behavior; [vocoder evidence](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and [talker evidence](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md). |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | Qwen3-TTS 0.6B CustomVoice | COMPONENT_CPU_TALKER_AND_VOCODER_NUMERIC_PROFILED; MIXED_GPU_VOCODER_NUMERIC_UNQUALIFIED; NOT_E2E_PROFILEABLE | On exact hosted RB3, a CPU-requested inference of the same TFLite binary returned a finite unsaturated waveform matching original ONNX CPU within 4.13e-6 relative L2 / 107.67 dB SNR on the retained fixture; its 47-sample component profile measured nearest-rank p50/p95 12.727/13.424 s, all 738 execution-detail rows on CPU, and reported inference peak memory 778,768,384 bytes. The GPU-requested waveform was also finite and unsaturated but differed by 15.73% relative L2 (16.06 dB SNR), without a listening-quality tolerance. Its 100-sample mixed CPU/GPU component profile had nearest-rank p50/p95 3.099/3.133 s and 403 CPU plus 335 GPU execution-detail rows. The 3.070 s estimated-time field is the sample minimum. The historical NPU talker build was rejected for floating-point inputs; a separate TFLite CPU-requested talker inference returned 57 finite outputs, preserved ONNX CPU top-1 speech token 80, and had logits relative L2 2.29e-5 and maximum new-cache relative L2 3.04e-5. Its 100-sample component profile measured p50/p95 138.022/139.642 ms with all 1,800 execution-detail rows on CPU and reported inference peak memory 1,849,708,544 bytes. The 12.727 s vocoder median is a major playable-streaming latency blocker. No predictor, stateful loop or full TTS pipeline exists. | Find a faster quality-passing vocoder route; validate predictor, waveform quality, complete local execution, memory and sustained behavior; [vocoder evidence](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) and [talker evidence](../../../e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md). |
| Embedded RB3 Gen 2 / QCS6490 / 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. |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | MiniCPM-o 4.5 | COMPONENT_SPEECH_HEAD_FP16_QNN_LOAD_FAILED; CPU_FALLBACK_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real 20-layer MiniCPM-o speech-head FP16 QNN DLC compiled for exact RB3 Gen 2, but same-fixture NPU-requested inference failed at graph load with QnnModel_composeGraphsFromDlc: MODEL_GRAPH_ERROR. RB3 device attributes do not advertise FP16 HTP support. An explicit TFLite CPU-requested fallback returned 41 finite tensors, preserved ONNX CPU top-1 token 1867, and had logits relative L2 1.26e-6 and maximum K/V relative L2 1.58e-6. Its 100-sample component profile had p50/p95 59.518/71.347 ms with all 1,008 execution-detail rows on CPU; reported inference peak memory was 820,981,760 bytes. No complete model bundle or local stateful controller exists. | Qualify complete multimodal generation and sustained behavior; [RB3 speech-head CPU evidence](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md). |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | InternVLA-A1 | COMPONENT_COSMOS_CPU_NUMERIC_MEASURED; PLACEMENT_PENDING; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos ONNX CPU-requested image encoder returned a finite six-frame synthetic-pattern latent on exact hosted RB3 at 2.20e-6 relative L2 / 113.17 dB SNR versus pinned FP32 source. Actual CPU node placement and component timing await its profile; no complete local action policy or stateful controller exists. | Audit the [RB3 Cosmos CPU placement profile](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md), then validate real observations, action units/timing, state, admission and cancellation. |
| Embedded RB3 Gen 2 / QCS6490 / AI Hub | InternVLA-A1 | COMPONENT_COSMOS_CPU_NUMERIC_PROFILED; NOT_E2E_PROFILEABLE | The real Place_Markpen Cosmos ONNX image encoder returned a finite six-frame synthetic-pattern latent on exact hosted RB3 at 2.20e-6 relative L2 / 113.17 dB SNR versus pinned FP32 source. Its 46-sample six-frame component profile had nearest-rank p50/p95 13.018/13.053 s, all 590 execution-detail rows on CPU, and reported inference peak memory 220,680,192 bytes. Injecting this near-source latent into the real policy on local CPU changed synthetic actions by 0.594% relative L2, without a task tolerance. No complete device-local action policy or stateful controller exists. | Find a faster quality-passing encoder artifact and validate real observations, action units/timing, state, admission and cancellation on-device; [RB3 Cosmos raw evidence](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md). |
## Measured request timing
+3 -3
View File
@@ -15,11 +15,11 @@ remain open; the 2026-09-22 audit remains the historical baseline.
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.
The [Qwen3-TTS Code2Wav Qualcomm follow-up](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) adds a retained same-fixture numerical check to M2. A fresh SA8775P GPU-requested output saturated 96.63% of samples and differs from original ONNX CPU by 11.832 relative L2, so that route fails the numerical gate despite profiling. The same binary's CPU-requested output on the exact SA device matched original ONNX CPU within 4.13e-6 relative L2; its 100-sample CPU-requested component profile passed placement (738/738 execution-detail rows on CPU) at nearest-rank p50/p95 5.384/5.534 s, still without a full stream. A FP32-preserving GPU-option control still saturated 84.89% of samples, so that option did not fix the tested route. RB3 TFLite GPU-requested inference returned an unsaturated but 15.73%-relative-L2 divergent waveform; its fresh 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s. The same binary requested on exact-RB3 CPU matched original ONNX CPU within 4.13e-6 relative L2 on the retained fixture; CPU placement profiling is pending. X Elite ONNX CPU inference matched the local ONNX Runtime output with 8.09e-7 relative L2; its 94-sample component profile was p50/p95 6.384/6.644 s with all execution-detail rows on CPU. Corrected 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 versus local ONNX CPU, but its placement profile timed out during QNN graph preparation without samples. A separate SA8775P FP16 QNN DLC vocoder compile passed, but NPU-requested same-fixture inference failed after compilation without waveform or placement samples. M2 still requires a quality-passing talker/predictor/vocoder set, device-local co-residency and handoff, playable streaming and sustained memory/power validation.
The [Qwen3-TTS Code2Wav Qualcomm follow-up](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/README.md) adds a retained same-fixture numerical check to M2. A fresh SA8775P GPU-requested output saturated 96.63% of samples and differs from original ONNX CPU by 11.832 relative L2, so that route fails the numerical gate despite profiling. The same binary's CPU-requested output on the exact SA device matched original ONNX CPU within 4.13e-6 relative L2; its 100-sample CPU-requested component profile passed placement (738/738 execution-detail rows on CPU) at nearest-rank p50/p95 5.384/5.534 s, still without a full stream. A FP32-preserving GPU-option control still saturated 84.89% of samples, so that option did not fix the tested route. RB3 TFLite GPU-requested inference returned an unsaturated but 15.73%-relative-L2 divergent waveform; its fresh 100-sample mixed CPU/GPU component p50/p95 was 3.099/3.133 s. The same binary requested on exact-RB3 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. That measured component latency is a major blocker for playable streaming on this route. X Elite ONNX CPU inference matched the local ONNX Runtime output with 8.09e-7 relative L2; its 94-sample component profile was p50/p95 6.384/6.644 s with all execution-detail rows on CPU. Corrected 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 versus local ONNX CPU, but its placement profile timed out during QNN graph preparation without samples. A separate SA8775P FP16 QNN DLC vocoder compile passed, but NPU-requested same-fixture inference failed after compilation without waveform or placement samples. M2 still requires a quality-passing talker/predictor/vocoder set, device-local co-residency and handoff, playable streaming and sustained memory/power validation.
The identical SA/RB3 TFLite vocoder binary also matched original ONNX CPU within 3.45e-6 relative L2 on a separate local HX370 x86-64 LiteRT 2.2.0 CPU control. Exact-SA and RB3 CPU-requested parity narrow the failures to their GPU-requested routes on the tested fixture. The FP32-preserving GPU option did not fix it, so per-node placement and delegate-operation isolation remain open.
A separate [28-layer talker decode-step attempt](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) retains a synthetic fixed-cache fixture and CPU reference. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU top-1 speech token with 8.57–9.43% logits relative L2. RB3 rejected that floating-point-input artifact. Explicit X Elite ONNX CPU and SA8775P TFLite CPU fallback compiles passed. X Elite CPU-requested inference preserved CPU top-1 token 80 with logits relative L2 2.07e-5; its 100-sample decode-step profile measured p50/p95 191.414/309.428 ms with all 1,744 execution-detail rows on CPU. SA8775P TFLite CPU-requested talker inference also preserved token 80 with logits relative L2 3.33e-5; its 100-sample decode-step profile measured p50/p95 52.635/76.925 ms with all 1,800 execution-detail rows on CPU. None advances M2 to numerical talker or full-stream qualification yet.
A separate [28-layer talker decode-step attempt](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_talker_qualcomm/README.md) retains a synthetic fixed-cache fixture and CPU reference. Historical FP16 QNN context-binary inference executed on S24, S25, SA8775P and X Elite, but all four changed the CPU top-1 speech token with 8.57–9.43% logits relative L2. RB3 rejected that floating-point-input artifact. Explicit X Elite ONNX CPU and SA8775P TFLite CPU fallback compiles passed. X Elite CPU-requested inference preserved CPU top-1 token 80 with logits relative L2 2.07e-5; its 100-sample decode-step profile measured p50/p95 191.414/309.428 ms with all 1,744 execution-detail rows on CPU. SA8775P TFLite CPU-requested talker inference also preserved token 80 with logits relative L2 3.33e-5; its 100-sample decode-step profile measured p50/p95 52.635/76.925 ms with all 1,800 execution-detail rows on CPU. An RB3 TFLite CPU-requested step preserved token 80 with logits relative L2 2.29e-5 and maximum new-cache relative L2 3.04e-5; its 100-sample profile measured p50/p95 138.022/139.642 ms with all 1,800 execution-detail rows on CPU. These fixed-step CPU component results do not establish a stateful talker loop or full TTS stream.
For M4, a [MiniCPM-o 4.5 speech-head study](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md) recovered the historical 20-layer ONNX source and matching S24/S25 fixtures. Both FP16 context-binary outputs preserved the ONNX CPU top-1 speech token on one decode step, with logits relative L2 0.346%/0.360%. Their 100-sample component profiles had p50/p95 8.537/9.006 ms and 7.197/7.615 ms, with all 1,029 execution-detail rows on NPU for each. New FP16 QNN DLC compiles passed for SA8775P, X Elite and RB3. SA8775P same-fixture inference preserved CPU top-1 speech token 1867 with 0.3568% logits relative L2 and 1.225% maximum K/V relative L2; its 100-sample component profile measured p50/p95 11.901/13.038 ms with all 944 execution-detail rows on NPU. X Elite same-fixture inference also preserved token 1867 with 0.3170% logits relative L2; its 100-sample component profile measured p50/p95 9.905/11.037 ms with all 944 execution-detail rows on NPU. RB3 FP16 QNN inference failed at graph load despite compile success; a TFLite CPU fallback same-fixture inference preserved top-1 token 1867 with logits relative L2 1.26e-6 versus ONNX CPU; its 100-sample CPU-requested profile measured p50/p95 59.518/71.347 ms with all 1,008 execution-detail rows on CPU. This is component C numerical evidence only, not thinker/encoder/vocoder or complete multimodal support.
@@ -27,7 +27,7 @@ The [native Windows Qwen3-TTS sustained audit](../../benchmarks/edge_harness/res
For M4, a [Galaxy S25 Cosmos encoder attempt](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md) repackages the real Place_Markpen FP32 ONNX export after retaining two CPU parity fixtures. FLOAT16 QNN DLC inference returned a latent within 0.0524% relative L2 of the source on one synthetic pattern. Injecting that output into the real policy on local CPU changed synthetic actions by 0.742% relative L2, without a task tolerance. S25 six-frame component profile returned 100 samples at p50/p95 49.665/51.382 ms, with all 121 execution-detail rows on NPU; the action policy did not run on S25. The same encoder compiled to FP16 QNN DLC for X Elite CRD; same-fixture NPU-requested inference returned a finite latent at 0.0608% relative L2 versus source, with its 100-sample six-frame profile at p50/p95 82.939/83.837 ms and all 121 execution-detail rows on NPU. An SA8775P FP16 QNN DLC inference returned a finite same-fixture latent at 0.0613% relative L2 versus source; its 100-sample six-frame profile measured p50/p95 116.021/116.327 ms with all 121 execution-detail rows on NPU. This is component/action-sensitivity evidence, not device-local M4 qualification. The checkpoint train config names a2d_real/a2d_pen_holder; an [authenticated access check](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_real_observation_access/README.md) returned HTTP 404. The official vLLM-Omni example names an InternData-A1 Place_Markpen archive, but that dataset returned HTTP 403 gated-access denial under the current account, so real-observation reference-action quality is still unmeasured.
The same pinned Cosmos encoder now has [Galaxy S24 FP16 QNN](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/s24/audit_report.json) and [RB3 ONNX CPU](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/rb3_cpu/audit_report.json) same-fixture numerical results at 0.0613% and 2.20e-6 relative L2 versus source. Their placement profiles are pending. Neither is a complete local policy or a real-observation task-quality result.
The same pinned Cosmos encoder now has [Galaxy S24 FP16 QNN](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/s24/audit_report.json) and [RB3 ONNX CPU](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/rb3_cpu/audit_report.json) same-fixture numerical results at 0.0613% and 2.20e-6 relative L2 versus source. S24 measured 100 six-frame component samples at p50/p95 64.314/67.472 ms with all 121 execution-detail rows on NPU; RB3 measured 46 samples at 13.018/13.053 s with all 590 rows on CPU. Hosted-latent handoffs to the real policy on local CPU changed fixed synthetic actions by 0.631% and 0.594% relative L2, respectively. Neither is a complete device-local policy or a real-observation task-quality result.
The [WSL CPU expansion](../../benchmarks/edge_harness/results/e2e_expansion_20260923/README.md)
adds constrained three-stage MiniCPM-o text-to-speech requests and a CPU-only