sanmonga22 commited on
Commit
3a4008e
Β·
verified Β·
1 Parent(s): fbda706

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +12 -27
README.md CHANGED
@@ -1,31 +1,16 @@
1
- ---
2
- license: cc-by-4.0
3
- base_model: nvidia/canary-1b-flash
4
- tags: [asr, hexagon, qualcomm, npu, qhexrt, fastconformer, aed]
5
- ---
6
 
7
- # Canary-1b-flash β†’ Qualcomm Hexagon NPU (v81)
8
 
9
- NVIDIA **canary-1b-flash** (FastConformer AED ASR) ported to the Qualcomm Hexagon NPU (SM8750 / **v81** /
10
- `soc_model 87`) and **device-validated on a Samsung S25**.
 
 
 
11
 
12
- ## Device validation (S25, v81)
13
- - **Encoder** graph (`v81/canary_conformer.bin`, 32-layer FastConformer): fed real inputs β†’ device memory
14
- **cosine 0.999029** vs the offline reference.
15
- - **Decoder** graph (`v81/canary_decoder.bin`, 4-layer transformer AED): teacher-forced device argmax ==
16
- gold tokens.
17
- - **Full autoregressive decode on-device** (encoder memory β†’ decoder loop): β†’
18
- `[2014,2045,1387,1174,2042,1170,2048]` = **" Hey Jarvis." β€” exact gold match.**
19
 
20
- ## How it was built
21
- The HF `parakeet` port is subtly numerically wrong for Canary's conformer (gates only ~0.86). This bundle
22
- uses a **bit-exact self-replication of the NeMo model** (`recipe/conformer.py` β€” full 32L encoder cos 1.000003
23
- vs NeMo; `recipe/decoder.py` β€” 4L AED reproduces the gold token chain). Both are exported to 2D-I/O ONNX and
24
- compiled to v81 context binaries. See `recipe/oracle.py` for the end-to-end oracle + the 23-iteration debug log.
25
-
26
- ## Pipeline
27
- mel(128) β†’ FastConformer encoder (graph) β†’ memory; canary2 prompt seed
28
- `[7,4,16,62,62,5,9,11,13]` β†’ host embed (tok_emb + FixedPosEnc + LN) β†’ 4L AED decoder (graph, self+cross-attn) β†’
29
- argmax loop β†’ detok. Encoder/decoder run on the NPU; mel/subsample/embed/detok are host-side.
30
-
31
- Arch-pinned to v81 (`dsp_arch` + `soc_model 87` baked in). Part of the RunAnywhere Hexagon model set.
 
1
+ # canary-1b-flash β†’ Hexagon NPU (v81) β€” encoder + AED decoder + recipe
 
 
 
 
2
 
3
+ NeMo Canary-1B-flash AED ASR ([nvidia/canary-1b-flash](https://huggingface.co/nvidia/canary-1b-flash)) on the Qualcomm Hexagon NPU (**v81 / SM8850 / soc_model 87**).
4
 
5
+ ## Device validation (Samsung S25, Hexagon v81)
6
+ Both networks self-replicated from the NeMo weights + validated exact offline, compiled to v81 bins:
7
+ - **`v81/canary_conformer.bin`** (32-layer FastConformer encoder, fp32, 1.65 GB) β€” on-device raw-I/O parity **cos 0.999029** vs offline.
8
+ - **`v81/canary_decoder.bin`** (4-layer MBart-like AED transformer decoder, 146 MB) β€” teacher-forced argmax == gold.
9
+ - **Full autoregressive device decode** (encoder mem β†’ decoder loop, `canary2` EN-ASR prompt seed) β†’ **" Hey Jarvis." β€” exact gold match.**
10
 
11
+ ## What's in this bundle
12
+ - `v81/canary_conformer.bin`, `v81/canary_decoder.bin` β€” the two QNN context binaries.
13
+ - `recipe/` β€” `conformer.py` (encoder), `decoder.py` (AED decoder), `oracle.py` (full pipeline + canary2 multitask prompt + greedy decode).
 
 
 
 
14
 
15
+ ## Pipeline (NPU vs host)
16
+ host log-mel(128) β†’ **conformer.bin [NPU]** β†’ host `canary2` prompt seed β†’ **canary_decoder.bin [NPU]** autoregressive AED loop (self+cross-attn KV cache) β†’ detok. A one-command `qhx_asr` AED host-op (adapting `src/hostop/asr_whisper.cpp` to this KV convention) is the productization follow-up; `oracle.py` is the reference decode. Arch-pinned v81. License: nvidia-open-model-license.