Skip to content

Phase 0G QAIRT 2.41 attempt — three named SDK-side version blockers (D-024/025/026)#3

Merged
Zer0pa-Architect-Prime merged 1 commit into
mainfrom
linux/phase0g-qairt-v2.41
May 1, 2026
Merged

Phase 0G QAIRT 2.41 attempt — three named SDK-side version blockers (D-024/025/026)#3
Zer0pa-Architect-Prime merged 1 commit into
mainfrom
linux/phase0g-qairt-v2.41

Conversation

@Zer0pa-Architect-Prime
Copy link
Copy Markdown
Contributor

Verdict

QAIRT 2.41.0.251128 SDK installs cleanly on the Linux x86_64 pod (Python 3.10 venv, libc++, libLLVM-14, all Python deps), libQnnSystem.so loads, qairt-converter --help works. But the AOT pipeline blocks on three named version drifts. Decisions D-024 / D-025 / D-026 capture each.

What works on this QAIRT

  • qnn-net-run aarch64-android binary (the on-phone runtime) — usable as soon as we have a compiled binary
  • libQnnTFLiteDelegate.so aarch64-android — usable for on-phone TFLite-via-QNN inference
  • libQnnHtpV81Skel.so (Hexagon v81 = Snapdragon 8 Elite Gen 4) — present
  • The host-side AOT compile starts (libQnnSystem loads) but...

Three named blockers (in encounter order)

# Symptom Root cause Fix
D-024 Qnn System library version 1.6.0 is mismatched. The minimum supported version is 1.8.0 QAIRT 2.41 ships QnnSystem v1.6.0; ai-edge-litert==2.1.4 requires v1.8.0+ Newer QAIRT (post-Dec 2025), OR downgrade ai-edge-litert
D-025 qti.tvm.error.OpNotImplemented: 'EMBEDDING_LOOKUP' QAIRT TFLite frontend (Apache TVM) doesn't lower the embedding op Re-export per-scope models with embeddings EXCLUDED (PRD-aligned anyway)
D-026 AttributeError: 'NoneType' object has no attribute 'AttributeProto' QAIRT 2.41's qti.aisw.converters.onnx.util was built against an earlier onnx where AttributeProto was top-level; onnx==1.21.0 (Dec 2025) restructured the namespace Pin onnx<1.20, OR newer QAIRT

What did NOT change

  • polymath_ai/scheduler/registry.py:litert_qnn_sm8750.confirmed_for_socs stays (). Phase 1A QNN routing remains gated.
  • tests/test_scheduler.py::test_qnn_backend_is_locked_until_proof unchanged.
  • 126/126 tests pass on linux/phase0g-qairt-v2.41.

Two next-step options

  1. Wait for newer QAIRT — QAIRT 2.42+ likely ships QnnSystem >= 1.8.0 and onnx >= 1.21 compat. Operator manual download.
  2. Pivot to Gate B — Vulkan compute kernels on the Adreno 830 GPU. No Qualcomm SDK needed. Loses NPU INT4/INT8 speedup; PRD throughput projections need downward revision. Operator has already authorised this as fallback.

Next-step command for the Intel Mac after merge

git pull
python -m pytest tests/test_scheduler.py tests/test_falsifiers.py -q

Hand-back: do not merge yourself. PR opened in agent-driven mode by the Linux x86_64 agent.

…amed

Operator uploaded QAIRT 2.41.0.251128 (Dec 2025 build). Linux x86_64
agent on Runpod set up the SDK env from scratch:

- Installed unzip, python3.10, libc++, libLLVM-14, full QAIRT python
  deps in a separate .venv-qairt
- libQnnSystem.so loads cleanly, qairt-converter --help works

But the AOT pipeline blocks on three named SDK-side version drifts:

D-024 — QnnSystem version mismatch
  QAIRT 2.41 ships QnnSystem v1.6.0; ai-edge-litert==2.1.4 wants v1.8.0+.
  ERROR: Qnn System library version 1.6.0 is mismatched. The minimum
    supported version is 1.8.0.
  Means: the ai-edge-litert wrapper path (Silicon's path) is
  incompatible with QAIRT 2.41. Need newer QAIRT or downgraded
  ai-edge-litert.

D-025 — QAIRT TFLite frontend rejects EMBEDDING_LOOKUP
  Bypassing ai-edge-litert via qairt-converter directly: TFLite
  frontend (Apache TVM under the hood) doesn't lower EMBEDDING_LOOKUP.
  qti.tvm.error.OpNotImplemented: The following operators are not
    supported in frontend TFLite: 'EMBEDDING_LOOKUP'.
  Means: per-scope models must be re-exported with embeddings
  EXCLUDED. Architecturally aligned with PRD §Heterogeneous Compute
  (embeddings on Oryon CPU / Adreno; transformer body on Hexagon NPU).

D-026 — QAIRT ONNX frontend onnx 1.21 incompat
  PyTorch -> ONNX (via onnxscript 0.7.0) succeeded; qairt-converter
  --input_network *.onnx fails at module init:
  AttributeError: 'NoneType' object has no attribute 'AttributeProto'.
  QAIRT 2.41 was built against an earlier onnx where AttributeProto
  was a top-level attribute; onnx 1.21 restructured the namespace.
  Means: pin onnx<1.20 OR get newer QAIRT.

The on-phone half of QAIRT 2.41 (qnn-net-run, libQnnTFLiteDelegate.so
on Android aarch64) IS valid and reusable - the moment we have a
compiled binary, the phone runtime is unblocked.

Decision: stop deep-diving environmental friction. Phase 0G via QAIRT
2.41 + open-source 2025-end toolchain is impractical without either
(a) operator newer-QAIRT manual download, OR (b) pivot to Gate B
(Vulkan compute on Adreno 830 directly). Operator has authorised Gate
B as fallback.

Scheduler litert_qnn_sm8750.confirmed_for_socs stays () - registry
remains locked. Phase 1A QNN routing remains gated. 126/126 tests pass.

NOT merging to main; opening PR for review.

Co-Authored-By: Claude Opus 4.7 (1M context, Linux x86_64 agent on Runpod) <noreply@anthropic.com>
@Zer0pa-Architect-Prime
Copy link
Copy Markdown
Contributor Author

Merged. Phase 0G QAIRT 2.41 attempt fully captured. Pod can be released.

@Zer0pa-Architect-Prime Zer0pa-Architect-Prime merged commit 9292929 into main May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant