Update edge E2E matrix with S24 placement and Windows sustained repeat

This commit is contained in:
tzhouam committed 2026-09-24 10:03:30 +08:00
1 parent 05210fb2db
commit 10df2a03d0
19 files changed
+4809 -25

No files matched your search

@@ -1,6 +1,6 @@
# 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 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. 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; 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.
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.
@@ -8,8 +8,8 @@ The [talker decode-step attempt](evidence/qwen_tts_talker_qualcomm/README.md) pi
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.
The [native Windows Qwen3-TTS sustained analysis](evidence/qwen_tts_sustained_drift/README.md) finds a sharp playback throughput collapse around minute 26–27 in the historical 30-minute RTX 5090 Laptop stream. The last 17 serial requests all had simulated underruns with median RTF 1.331; the separate WSL run did not show that behavior. A revised local profiler now records timestamped device-wide NVML clocks, power, temperature, throttling and utilization to investigate the cause in a repeat run. The historical evidence cannot identify the cause or qualify native Windows sustained playback.
The [native Windows Qwen3-TTS sustained analysis](evidence/qwen_tts_sustained_drift/README.md) finds a sharp playback throughput collapse around minute 26–27 in the historical 30-minute RTX 5090 Laptop stream. The last 17 serial requests all had simulated underruns with median RTF 1.331; the separate WSL run did not show that behavior. The revised local profiler recorded a completed current-source 30-minute repeat with device-wide NVML telemetry. The final 119 requests had median RTF 0.185 and three brief simulated underruns, so the prior collapse did not recur. The historical evidence and uncontrolled repeat conditions cannot identify its cause; underrun-free native Windows playback remains unqualified.
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. Placement profiles remain 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. RB3 placement remains pending. Neither result runs the action policy locally or establishes a real-observation task tolerance.
@@ -8,7 +8,7 @@ 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)). Their [S24 NPU](s24/profile_submission.json) and [RB3 CPU](rb3_cpu/profile_submission.json) placement profiles are 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**; 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 [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.
@@ -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": "Samsung Galaxy S24",
"os": "14",
@@ -49,7 +49,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": "jpe7z6475",
"sample_count": 100,
"sample_min_us": 58910,
"nearest_rank_p50_us": 64314,
"nearest_rank_p95_us": 67472,
"reported_estimated_inference_time_us": 58910,
"reported_peak_memory_bytes": 309661696,
"reported_first_load_time_us": 40894728,
"reported_warm_load_time_us": 235717,
"reported_first_load_peak_memory_bytes": 712884224,
"reported_warm_load_peak_memory_bytes": 383348736,
"compute_unit_row_counts": {
"NPU": 121
}
}
}
@@ -15,6 +15,14 @@ The reproducible [analysis script](../../../../experiments/analyze_tts_sustained
The Windows stream changed regime around minute 26–27. In its last window, all 17 requests had RTF above real time at the median and an underrun at first-audio playback. A small jitter buffer cannot cure this late sustained throughput deficit. The recorded profile sampled memory but not a timestamped GPU clock, temperature, power or throttling timeline, so its cause is unknown. The updated [local TTS profiler](../../../../profile_local_tts.py) can sample NVML and host telemetry with `--gpu-telemetry-interval-s 1`; repeat the Windows run with that option and correlate the device-wide samples with request timestamps. GPU telemetry is whole-device and cannot attribute power or utilization to the model alone.
The first instrumented retry [failed before model startup](windows_startup_failures/unc_cwd_report.json). A second retry from a native Windows working directory still imported an older editable Omni checkout; its [runtime log](windows_startup_failures/stale_checkout.log.gz) shows the stage worker trying the POSIX-only `os.fchmod` path on Windows, and its [report](windows_startup_failures/stale_checkout_report.json) has zero requests. The current fork source already has a Windows path for that lock. With the current fork first on `PYTHONPATH` and native `C:\Users\zhout\w2` as working directory, a [new smoke report](windows_current_source_smoke/report.json) completed startup in 69.38 s, one warmup, a slow-consumer request, cancellation acknowledgement and an after-cancel request. Its [request events](windows_current_source_smoke/requests.jsonl) and 71 [device-wide telemetry samples](windows_current_source_smoke/gpu_telemetry.jsonl) are retained. This smoke validates the measurement path, not 30-minute playback. A matching sustained repeat is running separately and will supersede this startup-only evidence when terminal.
The first instrumented retry [failed before model startup](windows_startup_failures/unc_cwd_report.json). A second retry from a native Windows working directory still imported an older editable Omni checkout; its [runtime log](windows_startup_failures/stale_checkout.log.gz) shows the stage worker trying the POSIX-only `os.fchmod` path on Windows, and its [report](windows_startup_failures/stale_checkout_report.json) has zero requests. The current fork source already has a Windows path for that lock. With the current fork first on `PYTHONPATH` and native `C:\Users\zhout\w2` as working directory, a [new smoke report](windows_current_source_smoke/report.json) completed startup in 69.38 s, one warmup, a slow-consumer request, cancellation acknowledgement and an after-cancel request. Its [request events](windows_current_source_smoke/requests.jsonl) and 71 [device-wide telemetry samples](windows_current_source_smoke/gpu_telemetry.jsonl) are retained. This smoke validates the measurement path, not 30-minute playback. A matching [30-minute sustained repeat](windows_current_source_sustained/report.json) completed from the current fork source, with [1,236 raw request events](windows_current_source_sustained/requests.jsonl) and [device-wide one-second GPU/host telemetry](windows_current_source_sustained/gpu_telemetry.jsonl). The [timestamp-aligned window analysis](windows_current_source_telemetry_analysis.json) used the same serial medium prompt and simulated playback method. It measured:
This evidence does not qualify uninterrupted native Windows playback, speech quality, restart after cancellation, or mobile/embedded TTS. It does not establish thermal throttling or an Omni software regression as the cause.
| Native Windows repeat minutes | Requests | RTF p50 / p95 | Complete wall p50 / p95 (s) | Requests with underrun | Required prebuffer p95 / max (ms) | GPU temperature p50 / p95 (C) | SM clock p50 / p95 (MHz) |
|---|---:|---:|---:|---:|---:|---:|---:|
| 0–25 | 1,032 | 0.182 / 0.199 | 1.458 / 1.644 | 66 | 14.2 / 93.4 | 67 / 71 | 1,665 / 1,860 |
| 25–27 | 81 | 0.185 / 0.205 | 1.489 / 1.637 | 0 | 0 / 0 | 68 / 72 | 1,642 / 1,860 |
| 27–30 | 119 | 0.185 / 0.203 | 1.493 / 1.708 | 3 | 0 / 26.6 | 68 / 71 | 1,672 / 1,875 |
The original late throughput collapse did not recur. The repeat still had 69 simulated underrun requests across 1,232 sustained requests within the 30-minute windows, mostly early and limited to brief gaps. The remaining four completed requests submitted after the 30-minute cutoff are retained in raw events and excluded from these windows. Device-wide NVML throttle bitmask was 4 (software power cap) on nearly all 1,723 samples; it did not change around minute 27. GPU telemetry is whole-device, so these observations neither identify the original cause nor prove model-specific thermal behavior. The two runs used different source/import conditions and uncontrolled ambient load; this is evidence of non-reproduction, not a fix for a diagnosed bug.
This evidence does not qualify underrun-free native Windows playback, speech quality, restart after cancellation, or mobile/embedded TTS. It does not establish thermal throttling or an Omni software regression as the cause.
@@ -0,0 +1,303 @@
{
"status": "completed",
"argv": [
"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\profile_local_tts.py",
"--model",
"C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
"--out",
"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\analysis\\experiments\\tts_windows_repo_sustained_20260924",
"--repeats",
"1",
"--length-band",
"medium",
"--concurrency",
"1",
"--sustained-seconds",
"1800",
"--gpu-telemetry-interval-s",
"1"
],
"python": "C:\\Users\\zhout\\w2\\omni029venv\\Scripts\\python.exe",
"cwd": "C:\\Users\\zhout\\w2",
"loaded_omni_path": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\vllm_omni\\__init__.py",
"host_environment": {
"VLLM_CUDART_SO_PATH": "C:\\Users\\zhout\\w2\\omni029venv\\Lib\\site-packages\\torch\\lib\\cudart64_13.dll",
"VLLM_CACHE_ROOT": "C:\\Users\\zhout\\c29",
"PYTHONUTF8": "1"
},
"platform": "Windows-11-10.0.26200-SP0",
"runtime": {
"python": "3.12.10",
"platform": "Windows-11-10.0.26200-SP0",
"torch": "2.13.0+cu130",
"vllm": "0.29.0",
"vllm_omni": "0.29.0rc2.dev71+g00510ce38.d20260922",
"vllm_omni_file": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\vllm_omni\\__init__.py",
"vllm_file": "C:\\Users\\zhout\\w2\\omni029venv\\Lib\\site-packages\\vllm\\__init__.py",
"checkouts": {}
},
"settings": {
"model": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
"out": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\analysis\\experiments\\tts_windows_repo_sustained_20260924",
"repeats": 1,
"sustained_seconds": 1800.0,
"gpu_telemetry_interval_s": 1.0,
"length_band": "medium",
"concurrency": 1
},
"start_unix": 1790213343.684534,
"requests": 1236,
"cache_condition": "existing disk/JIT caches; not cold disk",
"quality_gate": "finite PCM checks only; ASR/speaker/listening reference gates pending",
"playback_scope": "arrival-based simulated playback; no sound-device measurement",
"terminal_audio": "DELTA output required; terminal audio is included once in complete playback metrics and archived separately",
"prompts": {
"short": {
"prompt_token_ids": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"additional_information": {
"task_type": [
"CustomVoice"
],
"text": [
"Hello, this is a speech test."
],
"language": [
"English"
],
"speaker": [
"Vivian"
],
"global_request_id": [
"after_cancel-short-1-1236-b7af49a1"
]
}
},
"medium": {
"prompt_token_ids": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"additional_information": {
"task_type": [
"CustomVoice"
],
"text": [
"The garden has trees, flowers, and a small pond. We walk along the path and listen to the birds."
],
"language": [
"English"
],
"speaker": [
"Vivian"
],
"global_request_id": [
"slow_consumer-medium-1-1235-899e5e56"
]
}
},
"long": {
"prompt_token_ids": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"additional_information": {
"task_type": [
"CustomVoice"
],
"text": [
"Today we are testing a local speech system. It should speak clearly and keep the audio flowing smoothly. Today we are testing a local speech system. It should speak clearly and keep the audio flowing smoothly. Today we are testing a local speech system. It should speak clearly and keep the audio flowing smoothly. Today we are testing a local speech system. It should speak clearly and keep the audio flowing smoothly. "
],
"language": [
"English"
],
"speaker": [
"Vivian"
],
"global_request_id": [
"cancel-probe-878be5d6"
]
}
}
},
"startup_s": 72.31052920001093,
"sampling_params": [
"SamplingParams(n=1, presence_penalty=0.0, frequency_penalty=0.0, repetition_penalty=1.05, temperature=0.9, top_p=1.0, top_k=50, min_p=0.0, seed=None, stop=[], stop_token_ids=[2150], bad_words=[], thinking_token_budget=None, include_stop_str_in_output=False, ignore_eos=False, max_tokens=4096, min_tokens=2, logprobs=None, prompt_logprobs=None, skip_special_tokens=True, spaces_between_special_tokens=True, structured_outputs=None, extra_args=None)",
"SamplingParams(n=1, presence_penalty=0.0, frequency_penalty=0.0, repetition_penalty=1.0, temperature=0.0, top_p=1.0, top_k=0, min_p=0.0, seed=None, stop=[], stop_token_ids=[], bad_words=[], thinking_token_budget=None, include_stop_str_in_output=False, ignore_eos=False, max_tokens=65536, min_tokens=0, logprobs=None, prompt_logprobs=None, skip_special_tokens=True, spaces_between_special_tokens=True, structured_outputs=None, extra_args=None)"
],
"memory_after_load": {
"samples": 200,
"interval_s": 0.25,
"note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.",
"nvml_device_used_peak": 14216892416,
"nvml_device_used_min": 3640455168,
"tree_rss_peak": 6338183168,
"tree_pss_peak": 0,
"host_available_min": 24876290048
},
"sustained_wall_s": 1800.1864576999797,
"sustained_start_unix": 1790213419.896933,
"cancel": {
"abort_ack_s": 0.0036760999355465174,
"scope": "abort acknowledgement and subsequent request; late-event gate not verified"
},
"memory": {
"samples": 4766,
"interval_s": 0.25,
"note": "peaks are lower bounds: anything shorter than interval_s is missed. nvml_device_used is the whole card including other processes; tree_pss includes a share of file-backed pages. These three counters are different accountings and must not be summed.",
"nvml_device_used_peak": 14933811200,
"nvml_device_used_min": 3640455168,
"tree_rss_peak": 6506102784,
"tree_pss_peak": 0,
"host_available_min": 23721652224
},
"gpu_telemetry": {
"path": "gpu_telemetry.jsonl",
"samples": 1799,
"interval_s": 1.0,
"error": null,
"scope": "whole GPU/host; not attributable to this process; sampled values may miss peaks"
},
"end_unix": 1790215223.0067275
}
@@ -0,0 +1,244 @@
{
"scope": "complete-model Qwen3-TTS stream; simulated playback; telemetry covers whole GPU/host, not just this process",
"report": "/home/zhout/project/edge_infer/analysis/experiments/tts_windows_repo_sustained_20260924/report.json",
"requests": "/home/zhout/project/edge_infer/analysis/experiments/tts_windows_repo_sustained_20260924/requests.jsonl",
"telemetry": "/home/zhout/project/edge_infer/analysis/experiments/tts_windows_repo_sustained_20260924/gpu_telemetry.jsonl",
"loaded_omni_path": "\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\vllm_omni\\__init__.py",
"cwd": "C:\\Users\\zhout\\w2",
"start_unix": 1790213419.896933,
"sustained_wall_s": 1800.1864576999797,
"windows": [
{
"minutes": [
0,
25
],
"requests": 1032,
"rtf_p50": 0.18155780047751388,
"rtf_p95": 0.19911686828490147,
"wall_s_p50": 1.457860799971968,
"wall_s_p95": 1.643669999903068,
"requests_with_underrun_at_ttfa": 66,
"required_prebuffer_ms_p50": 0.0,
"required_prebuffer_ms_p95": 14.208799959160388,
"required_prebuffer_ms_max": 93.37910000234842,
"device_telemetry_samples": 1437,
"device_telemetry": {
"gpu_temperature_c": {
"p50": 67,
"p95": 71,
"min": 59,
"max": 73,
"available_samples": 1437
},
"gpu_power_mw": {
"p50": 84372,
"p95": 100110,
"min": 27384,
"max": 124739,
"available_samples": 1437
},
"gpu_clock_sm_mhz": {
"p50": 1665,
"p95": 1860,
"min": 667,
"max": 2130,
"available_samples": 1437
},
"gpu_clock_memory_mhz": {
"p50": 14001,
"p95": 14001,
"min": 10820,
"max": 14001,
"available_samples": 1437
},
"gpu_utilization_pct": {
"p50": 89,
"p95": 93,
"min": 1,
"max": 95,
"available_samples": 1437
},
"gpu_memory_used_bytes": {
"p50": 14324690944,
"p95": 14429990912,
"min": 14113402880,
"max": 14576979968,
"available_samples": 1437
},
"host_available_bytes": {
"p50": 24801640448,
"p95": 25358438400,
"min": 23825104896,
"max": 25746923520,
"available_samples": 1437
},
"host_cpu_utilization_pct": {
"p50": 36.5,
"p95": 48.3,
"min": 18.2,
"max": 67.0,
"available_samples": 1437
}
},
"gpu_throttle_reason_counts": {
"0": 1,
"4": 1436
}
},
{
"minutes": [
25,
27
],
"requests": 81,
"rtf_p50": 0.18515146990399375,
"rtf_p95": 0.20509856943843058,
"wall_s_p50": 1.489010600023903,
"wall_s_p95": 1.6373769999481738,
"requests_with_underrun_at_ttfa": 0,
"required_prebuffer_ms_p50": 0.0,
"required_prebuffer_ms_p95": 0.0,
"required_prebuffer_ms_max": 0.0,
"device_telemetry_samples": 113,
"device_telemetry": {
"gpu_temperature_c": {
"p50": 68,
"p95": 72,
"min": 65,
"max": 72,
"available_samples": 113
},
"gpu_power_mw": {
"p50": 83948,
"p95": 99676,
"min": 55896,
"max": 119301,
"available_samples": 113
},
"gpu_clock_sm_mhz": {
"p50": 1642,
"p95": 1860,
"min": 952,
"max": 1942,
"available_samples": 113
},
"gpu_clock_memory_mhz": {
"p50": 14001,
"p95": 14001,
"min": 14001,
"max": 14001,
"available_samples": 113
},
"gpu_utilization_pct": {
"p50": 90,
"p95": 93,
"min": 24,
"max": 94,
"available_samples": 113
},
"gpu_memory_used_bytes": {
"p50": 14409412608,
"p95": 14422978560,
"min": 14403514368,
"max": 14463062016,
"available_samples": 113
},
"host_available_bytes": {
"p50": 24687771648,
"p95": 26786988032,
"min": 24623411200,
"max": 26793086976,
"available_samples": 113
},
"host_cpu_utilization_pct": {
"p50": 37.0,
"p95": 50.8,
"min": 21.6,
"max": 57.2,
"available_samples": 113
}
},
"gpu_throttle_reason_counts": {
"4": 113
}
},
{
"minutes": [
27,
30
],
"requests": 119,
"rtf_p50": 0.18458476890770703,
"rtf_p95": 0.20267389945334086,
"wall_s_p50": 1.4926720999646932,
"wall_s_p95": 1.7075016999151558,
"requests_with_underrun_at_ttfa": 3,
"required_prebuffer_ms_p50": 0.0,
"required_prebuffer_ms_p95": 0.0,
"required_prebuffer_ms_max": 26.64199998602271,
"device_telemetry_samples": 173,
"device_telemetry": {
"gpu_temperature_c": {
"p50": 68,
"p95": 71,
"min": 64,
"max": 72,
"available_samples": 173
},
"gpu_power_mw": {
"p50": 85861,
"p95": 99280,
"min": 32552,
"max": 111241,
"available_samples": 173
},
"gpu_clock_sm_mhz": {
"p50": 1672,
"p95": 1875,
"min": 1087,
"max": 1950,
"available_samples": 173
},
"gpu_clock_memory_mhz": {
"p50": 14001,
"p95": 14001,
"min": 10820,
"max": 14001,
"available_samples": 173
},
"gpu_utilization_pct": {
"p50": 89,
"p95": 92,
"min": 3,
"max": 94,
"available_samples": 173
},
"gpu_memory_used_bytes": {
"p50": 14448406528,
"p95": 14740873216,
"min": 14384820224,
"max": 14933811200,
"available_samples": 173
},
"host_available_bytes": {
"p50": 26491813888,
"p95": 26803175424,
"min": 25937293312,
"max": 26815836160,
"available_samples": 173
},
"host_cpu_utilization_pct": {
"p50": 38.1,
"p95": 51.7,
"min": 23.3,
"max": 63.2,
"available_samples": 173
}
},
"gpu_throttle_reason_counts": {
"4": 173
}
}
]
}
@@ -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_submission.json) has been submitted from the same ONNX talker step. Its outcome is 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_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.
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,31 @@
{
"timestamp_utc": "2026-09-24T01:56:38.335366+00:00",
"qai_hub_version": "0.55.0",
"facility": "Qualcomm AI Hub Workbench",
"job_id": "j5687o2yg",
"url": "https://workbench.aihub.qualcomm.com/jobs/j5687o2yg/",
"status": "SUCCESS",
"status_message": "",
"options": "--target_runtime tflite",
"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"
]
},
"source_model_id": "mq3xre4rq",
"target_model_id": "mnz07g9xm"
}
@@ -0,0 +1,14 @@
{
"timestamp_utc": "2026-09-24T01:56:51.201102+00:00",
"facility": "Qualcomm AI Hub Workbench",
"qai_hub_version": "0.55.0",
"source_compile_job_id": "j5687o2yg",
"target_model_id": "mnz07g9xm",
"input_dataset_id": "d7dw6pgy2",
"device": "Dragonwing RB3 Gen 2 Vision Kit",
"options": "--compute_unit cpu",
"kind": "inference",
"status": "SUBMITTED",
"job_id": "jgjr73yxp",
"url": "https://workbench.aihub.qualcomm.com/jobs/jgjr73yxp/"
}
@@ -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_submission.json) has been submitted using the same TFLite artifact and pinned waveform fixture as the GPU-requested run. Its numerical result is pending; 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 [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.
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,45 @@
{
"scope": "one RB3 Qwen3-TTS vocoder fixed waveform CPU-requested inference; no complete TTS stream",
"status": "component_cpu_numeric_measured",
"source_sha256": "7c07666229c6d404894132e22f784525e3212a49efad55ddd532eda5286c2b2b",
"fixture_sha256": "dfca9e8d2a724a568a31b6cd18ff6a52fdc205fd34e13cbf1cd75f0f7937e82d",
"cpu_reference_sha256": "8de78b94b59f01e49852f7706adbd2508a9976b8e2705cfd3b94d07bb3606cb1",
"compile_job_id": "j5mmy28w5",
"inference_job_id": "jglyxw4m5",
"target_model_id": "mn0wyzd3q",
"input_dataset_id": "d7m80jl32",
"requested_compute_unit": "--compute_unit cpu",
"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"
]
},
"output_sha256": "853feface7a93f7a22a0ffba8d1e297fe5a8780bd64f0444a6ce07b277246d3e",
"source_onnx_cpu_vs_rb3_cpu": {
"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
},
"limits": [
"One fixed waveform cannot establish listening quality.",
"Requested CPU placement requires a device profile.",
"No talker/predictor handoff or complete TTS stream ran on RB3."
]
}
@@ -0,0 +1,32 @@
{
"timestamp_utc": "2026-09-24T01:52:18.994884+00:00",
"qai_hub_version": "0.55.0",
"facility": "Qualcomm AI Hub Workbench",
"job_id": "jglyxw4m5",
"url": "https://workbench.aihub.qualcomm.com/jobs/jglyxw4m5/",
"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": "mn0wyzd3q",
"input_dataset_id": "d7m80jl32",
"outputs": "device_output.npz"
}
@@ -0,0 +1,13 @@
{
"timestamp_utc": "2026-09-24T01:55:06.446668+00:00",
"facility": "Qualcomm AI Hub Workbench",
"qai_hub_version": "0.55.0",
"source_compile_job_id": "j5mmy28w5",
"target_model_id": "mn0wyzd3q",
"device": "Dragonwing RB3 Gen 2 Vision Kit",
"options": "--compute_unit cpu",
"kind": "profile",
"status": "SUBMITTED",
"job_id": "jg9zmozvp",
"url": "https://workbench.aihub.qualcomm.com/jobs/jg9zmozvp/"
}
@@ -12,9 +12,9 @@ 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 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. 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; 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.
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. Together with the exact SA CPU-requested parity result, this narrows the SA saturation to the GPU-requested route; the RB3 embedded CPU route and specific faulty delegate operation remain unverified.
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.
@@ -22,9 +22,9 @@ A [Galaxy S25 InternVLA Cosmos attempt](../../../e2e_expansion_20260924/evidence
A [MiniCPM-o speech-head study](../../../e2e_expansion_20260924/evidence/minicpmo_tts_qualcomm/README.md) recovered the historical 20-layer source and matching S24/S25 fixtures. Both FP16 context-binary outputs preserved the ONNX CPU top-1 speech token on this one decode step with logits relative L2 of 0.346%/0.360%. S24/S25 100-sample component profiles attributed all 1,029 execution-detail rows to NPU, with p50/p95 8.537/9.006 ms and 7.197/7.615 ms. New FP16 QNN DLC compiles passed for SA8775P, X Elite and RB3. SA8775P same-fixture inference preserved CPU top-1 token 1867 with 0.3568% logits 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; its explicit TFLite CPU fallback returned 41 finite outputs, preserved CPU top-1 token 1867 and had logits relative L2 1.26e-6 versus ONNX CPU, with 100 CPU-requested component samples at p50/p95 59.518/71.347 ms and all 1,008 execution-detail rows on CPU. These are speech-head component results, not multimodal MiniCPM-o requests.
A [raw sustained-window audit](../../../e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md) found that native Windows RTX Qwen3-TTS playback slows sharply after about 26 minutes: all 17 serial medium requests in minutes 27–30 underrun in the simulated first-audio playout, with median RTF 1.331. The separate WSL run stayed below real time without underruns. The cause is not established; a timestamped GPU telemetry repeat is underway.
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-requested and RB3 CPU-requested routes, respectively. Actual placement profiles and 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 placement and both complete action policies remain pending.
## Configuration × model
@@ -41,15 +41,15 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| PC HX370: CPU / WSL | scoped E2E: Omni GGUF Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF combined image+audio → text+speech | synthetic policy pass: Omni CPU |
| PC HX370: CPU / native Windows | scoped E2E: Omni Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: Omni GGUF image+audio → text+speech (native-storage 20-run profile) | synthetic policy pass: Omni CPU |
| PC HX370 + RTX 5090 Laptop / WSL | profile completed | profile completed | scoped E2E: text + image | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA |
| PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA |
| PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed; 30-min repeat no collapse, brief playback jitter | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass: admitted Omni CUDA |
| 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) | 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; placement pending) |
| 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 (mixed vocoder numeric unqualified) | 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 (vocoder CPU numeric pass; placement pending) | NOT E2E | NOT E2E (CPU speech-head step profiled) | NOT E2E (Cosmos CPU numeric; placement pending) |
## Per-cell reasons and next steps
@@ -71,7 +71,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
| PC HX370 + RTX 5090 Laptop / WSL | MiniCPM-o 4.5 | SCOPED_E2E | The verified checkpoint completed three-stage text, one synthetic image and one synthetic audio input to text+speech under separate constrained plans with 5 GiB host offload. The image response correctly described a 448×448 red square on white and produced a nonzero 5.2 s WAV in 17.49 s; a 2 s/440 Hz tone was described as “A loud whistling sound” with a nonzero 2.16 s WAV in 7.78 s. The original 0.58 thinker GPU budget failed image/KV admission; 0.61 admitted the same context and image. Image shutdown force-killed stage 0, and both multimodal runs reported shared-memory cleanup warnings. General image/audio quality and speech meaning remain unverified. | Validate real image/audio suites, video input, speech intelligibility, interruption, repeated latency, clean shutdown and sustained power; [text evidence](../../../e2e_recovery_20260923/README.md), [image/audio evidence](../../../e2e_expansion_20260923/README.md). |
| PC HX370 + RTX 5090 Laptop / WSL | InternVLA-A1 | SYNTHETIC_POLICY_PASS_OMNI_CUDA; NOT_TASK_E2E | The real Place_Markpen checkpoint ran through an admitted Omni whole-policy graph stage with BF16 policy and Cosmos encoder on the RTX 5090 Laptop GPU. One warmup plus 20/20 serial patterned synthetic observation/state/noise requests returned identical finite float32 [1,50,32] actions with terminal events; nearest-rank complete-request wall p50/p95 was 0.382/0.399 s, excluding 43.82 s startup. The 16 GiB host-RAM and 16 GiB CUDA demands were within explicit 28/21 GiB ceilings checked against available memory. Actual CUDA placement was verified, PyTorch peak reserved VRAM reached 7.86 GB, and an 8 GiB VRAM plan was refused before worker launch. An in-flight abort and shutdown released both ledgers with no stale output; a separate public AsyncOmni.generate action request passed. Relative to a separate patterned WSL CPU output, action relative L2 difference was 2.006% with no task tolerance. The earlier one-forward zero-input direct CUDA run was a different experiment. This is synthetic action-policy integration, not robot-task E2E; units/order/step time remain unverified and control_ready=false. | Validate real observations/reference actions and physical action semantics, post-cancel restart, concurrent admission, loading peak, deadlines and sustained latency/power/thermal behavior; [Omni CUDA evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_cuda/README.md), [earlier direct result](../../../e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.json). |
| PC HX370 + RTX 5090 Laptop / Windows | Spark-X2.5 | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Broaden only with a named workload/device/precision qualification. |
| PC HX370 + RTX 5090 Laptop / Windows | Qwen3-TTS 0.6B CustomVoice | PROFILE_COMPLETED; SUSTAINED_PLAYBACK_FAIL | The complete-model CUDA stream passed short measured requests, but the 30-minute serial medium-prompt run slowed sharply around minute 26–27. In the final 27–30 minute window, all 17 requests had simulated playback underruns; nearest-rank p50 RTF was 1.331 and complete wall 10.379 s, versus 0.185 / 1.478 s in minutes 0–25. Avoiding all recorded late underruns required up to 4.650 s additional prebuffer. A separate WSL run on the same laptop had no sustained underruns, but power/start conditions were not controlled. The historical run lacks clock/temperature/power timeline, so the cause is unknown. | Repeat with timestamped GPU telemetry, identify and fix the late slowdown, then run speech-quality, interruption/recovery and sustained thermal gates; [raw-window analysis](../../../e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md). |
| PC HX370 + RTX 5090 Laptop / Windows | Qwen3-TTS 0.6B CustomVoice | PROFILE_COMPLETED; SUSTAINED_REPEAT_NO_COLLAPSE; PLAYBACK_JITTER_REMAINS | The historical complete-model CUDA stream slowed sharply around minute 26–27: all 17 requests in minutes 27–30 had simulated playback underruns and median RTF 1.331. A current-source, instrumented 30-minute repeat completed 1,232 serial medium requests within the analysis windows. Its final 119 requests had nearest-rank p50/p95 RTF 0.185/0.203, complete wall 1.493/1.708 s, and three brief simulated underruns needing at most 26.6 ms extra prebuffer. The late collapse did not recur; device-wide temperature p50/p95 was 68/71 C and SM clock 1,672/1,875 MHz in the final window, without an identifiable thermal transition. The repeat had 69 simulated underrun requests in the 30-minute windows, so underrun-free playback is not qualified. Run conditions were not controlled across repeats and the original cause is unknown. | Isolate playback jitter and original late-collapse conditions; validate speech quality, interruption/recovery and sustained thermal behavior; [both raw runs and telemetry analysis](../../../e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md). |
| PC HX370 + RTX 5090 Laptop / Windows | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The Omni pipeline binding now exists and passed scoped text/image cases in WSL, but no native Windows Omni run has verified the NVFP4 checkpoint, memory admission or modality behavior. | Run the same checkpoint and explicit context on native Windows, then broaden quality and profiling; [WSL-only evidence](../../../e2e_recovery_20260923/README.md). |
| PC HX370 + RTX 5090 Laptop / Windows | MiniCPM-o 4.5 | SCOPED_E2E | The verified checkpoint completed native Windows three-stage BF16 text, one synthetic image, and one synthetic audio input to text+speech in separate constrained plans with 5 GiB thinker host offload and explicit 2,048/512-token limits. Text and all 32 thinker token IDs matched WSL CUDA; a 5.2 s WAV was nonzero. The red-square image produced the same description and 27 thinker token IDs as WSL plus a nonzero 5.2 s WAV in 17.15 s. The 2 s/440 Hz tone produced the same whistling description and nine IDs as WSL plus a nonzero 2.16 s WAV in 8.26 s. The initial text run needed 900/600 s startup limits after a 300 s timeout; a separate 1-warmup/20-measured serial text run had request wall p50 18.38 s/p95 18.73 s, with sampled host available RAM as low as 0.78 GB and pagefile use up to 11.17 GB. These synthetic inputs do not establish general image/audio or speech quality. | Check real image/audio suites, video input, speech intelligibility/alignment, concurrency, interruption, loading-peak admission and sustained thermal/power behavior before broader qualification; [native evidence](../../../e2e_expansion_20260923/README.md). |
| PC HX370 + RTX 5090 Laptop / Windows | InternVLA-A1 | SYNTHETIC_POLICY_PASS_OMNI_CUDA; NOT_TASK_E2E | The real Place_Markpen checkpoint ran through an admitted native Windows Omni whole-policy graph stage with BF16 policy and Cosmos encoder on the RTX 5090 Laptop GPU. After one warmup, 20/20 serial patterned synthetic requests returned identical finite float32 [1,50,32] actions with terminal events; nearest-rank complete-request wall p50/p95 was 0.746/0.806 s, excluding 147.77 s startup. The 16 GiB host-RAM and 16 GiB CUDA demands were within explicit 18/21 GiB ceilings checked against available memory. Actual CUDA placement was verified, PyTorch peak reserved VRAM reached 7.86 GB, and an 8 GiB VRAM plan was refused before worker launch. In-flight cancellation and shutdown released both ledgers with no stale output; a separate public AsyncOmni.generate request returned the same action hash. Relative to the separate native CPU patterned output, action relative L2 difference was 2.340% with no task tolerance; native-vs-WSL CUDA relative L2 was 1.555%. The earlier one-forward zero-input direct CUDA run was a different experiment. This is synthetic action-policy integration, not robot-task E2E; units/order/step time remain unverified and control_ready=false. | Validate real observations/reference actions and physical action semantics, post-cancel restart, concurrent admission, loading peak, deadlines and sustained latency/power/thermal behavior; [Omni Windows CUDA evidence](../../../e2e_expansion_20260923/evidence/internvla_omni_windows_cuda/README.md), [earlier direct result](../../../e2e_expansion_20260923/README.md). |
@@ -104,14 +104,14 @@ 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_NUMERIC_MEASURED; PLACEMENT_PENDING; 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. NPU-requested inference alone does not establish actual node placement; its profile is pending. No real-observation action tolerance, complete local policy or stateful controller exists. ADB has no attached device. | Audit the [S24 Cosmos placement profile](../../../e2e_expansion_20260924/evidence/internvla_cosmos_qualcomm/README.md), then validate real observations, action units/timing, state, admission and cancellation on-device. |
| 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). |
| 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_MIXED_VOCODER_PROFILED_NUMERIC_UNQUALIFIED; NOT_E2E_PROFILEABLE | Fresh same-fixture TFLite GPU-requested vocoder inference returned a finite unsaturated waveform, but relative L2 versus original ONNX CPU was 15.73% (16.06 dB SNR), without a listening-quality tolerance; it is not a qualified audio path. The fresh 100-sample component profile had nearest-rank p50/p95 3.099/3.133 s and 403 CPU plus 335 GPU execution-detail rows. Its 3.070 s estimated-time field is the sample minimum, not median. The historical NPU talker build was rejected for floating-point inputs; no full model pipeline exists. | Establish waveform quality and a compatible integer talker artifact, then validate complete local execution, memory and sustained behavior; [vocoder evidence](../../../e2e_expansion_20260924/evidence/qwen_tts_vocoder_qualcomm/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.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. |
+3 -3
View File
@@ -15,15 +15,15 @@ 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. 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; 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 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 CPU-requested parity narrows the failure to the GPU-requested route. The FP32-preserving GPU option did not fix it, so per-node placement and delegate-operation isolation remain open.
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.
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.
The [native Windows Qwen3-TTS sustained audit](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md) identifies an additional M2 desktop blocker. The historical RTX 5090 Laptop complete-model stream changed regime around minute 26–27; all 17 requests in minutes 27–30 had simulated playback underruns and median RTF 1.331. The separate WSL run had no sustained underruns. Existing logs do not identify the cause; timestamped GPU clocks, power, temperature and throttling are now available in the local profiler for a controlled repeat. Native Windows sustained playback remains unqualified.
The [native Windows Qwen3-TTS sustained audit](../../benchmarks/edge_harness/results/e2e_expansion_20260924/evidence/qwen_tts_sustained_drift/README.md) identifies an additional M2 desktop blocker. The historical RTX 5090 Laptop complete-model stream changed regime around minute 26–27; all 17 requests in minutes 27–30 had simulated playback underruns and median RTF 1.331. The separate WSL run had no sustained underruns. A completed current-source 30-minute repeat with timestamped device-wide GPU telemetry did not reproduce the collapse: 119 requests in minutes 27–30 had median RTF 0.185 and three brief simulated underruns. The run had 69 simulated underrun requests within the full 30-minute windows. Different source/import conditions and uncontrolled ambient load prevent a causal explanation; underrun-free native Windows playback remains unqualified.
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.