Phase 0G QAIRT 2.41 attempt — three named SDK-side version blockers (D-024/025/026)#3
Merged
Merged
Conversation
…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>
Contributor
Author
|
Merged. Phase 0G QAIRT 2.41 attempt fully captured. Pod can be released. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.soloads,qairt-converter --helpworks. 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-runaarch64-android binary (the on-phone runtime) — usable as soon as we have a compiled binarylibQnnTFLiteDelegate.soaarch64-android — usable for on-phone TFLite-via-QNN inferencelibQnnHtpV81Skel.so(Hexagon v81 = Snapdragon 8 Elite Gen 4) — presentThree named blockers (in encounter order)
Qnn System library version 1.6.0 is mismatched. The minimum supported version is 1.8.0ai-edge-litert==2.1.4requires v1.8.0+qti.tvm.error.OpNotImplemented: 'EMBEDDING_LOOKUP'AttributeError: 'NoneType' object has no attribute 'AttributeProto'qti.aisw.converters.onnx.utilwas built against an earlieronnxwhereAttributeProtowas top-level;onnx==1.21.0(Dec 2025) restructured the namespaceonnx<1.20, OR newer QAIRTWhat did NOT change
polymath_ai/scheduler/registry.py:litert_qnn_sm8750.confirmed_for_socsstays(). Phase 1A QNN routing remains gated.tests/test_scheduler.py::test_qnn_backend_is_locked_until_proofunchanged.linux/phase0g-qairt-v2.41.Two next-step options
Next-step command for the Intel Mac after merge
Hand-back: do not merge yourself. PR opened in agent-driven mode by the Linux x86_64 agent.