Upload README.md with huggingface_hub
Browse files
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 |
-
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
-
##
|
| 13 |
-
-
|
| 14 |
-
|
| 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 |
-
##
|
| 21 |
-
|
| 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|