z33b0t commited on
Commit
e20feb8
Β·
verified Β·
1 Parent(s): 327e775

Add model card

Browse files
Files changed (1) hide show
  1. README.md +131 -0
README.md ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-4.0
3
+ language:
4
+ - en
5
+ - es
6
+ - fr
7
+ - de
8
+ - bg
9
+ - hr
10
+ - cs
11
+ - da
12
+ - nl
13
+ - et
14
+ - fi
15
+ - el
16
+ - hu
17
+ - it
18
+ - lv
19
+ - lt
20
+ - mt
21
+ - pl
22
+ - pt
23
+ - ro
24
+ - sk
25
+ - sl
26
+ - sv
27
+ - ru
28
+ - uk
29
+ pipeline_tag: automatic-speech-recognition
30
+ library_name: nemo
31
+ base_model: nvidia/parakeet-tdt-0.6b-v3
32
+ tags:
33
+ - automatic-speech-recognition
34
+ - speech
35
+ - audio
36
+ - Transducer
37
+ - TDT
38
+ - FastConformer
39
+ - Conformer
40
+ - pytorch
41
+ - NeMo
42
+ - bf16
43
+ - fp16
44
+ ---
45
+
46
+ # parakeet-tdt-0.6b-v3 β€” half-precision checkpoints
47
+
48
+ Half-precision casts of NVIDIA's [`nvidia/parakeet-tdt-0.6b-v3`](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3),
49
+ packaged as single `.nemo` archives for direct GPU loading. Two files, same
50
+ weights, different 16-bit format:
51
+
52
+ | File | Format | For |
53
+ |---|---|---|
54
+ | `parakeet-tdt-0.6b-v3-bf16.nemo` | bfloat16 | Ampere and newer (compute capability 8.0+) |
55
+ | `parakeet-tdt-0.6b-v3-fp16.nemo` | float16 | anything with CUDA, including pre-Ampere (sm_75: GTX 16-series, RTX 20-series, Tesla T4) |
56
+
57
+ Both are 1.25 GB and identical to the upstream model apart from the fp32 β†’ 16-bit
58
+ conversion. Restoring from either loads straight onto a CUDA GPU without ever
59
+ materialising an fp32 copy, which is faster to start (~13 s vs ~22 s) and roughly
60
+ halves peak load-time VRAM (~1.3 GB of weights).
61
+
62
+ **Which one?** If your GPU does bf16, either works β€” they are statistically
63
+ indistinguishable in accuracy (see below), and fp16 is marginally closer to fp32
64
+ numerically. If your GPU predates Ampere, bf16 is not merely slower but
65
+ unsupported, so use fp16.
66
+
67
+ This repository redistributes the model under its original **CC BY 4.0** license.
68
+ See the [upstream model card](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3)
69
+ for architecture, training data, supported languages, evaluation, and intended use.
70
+
71
+ ## Usage (NeMo)
72
+
73
+ ```python
74
+ import nemo.collections.asr as nemo_asr
75
+ from huggingface_hub import hf_hub_download
76
+
77
+ ckpt = hf_hub_download("lightware-dev/parakeet-tdt-0.6b-v3",
78
+ "parakeet-tdt-0.6b-v3-bf16.nemo") # or -fp16.nemo
79
+ model = nemo_asr.models.ASRModel.restore_from(ckpt, map_location="cuda")
80
+ model.eval()
81
+ print(model.transcribe(["audio.wav"]))
82
+ ```
83
+
84
+ ## fp16 vs bf16 vs fp32
85
+
86
+ Measured over 208 clips (25.8 minutes): LibriSpeech `test-clean` samples, the same
87
+ clips degraded with white noise at 10 dB and 5 dB SNR, babble at 5 dB, and a
88
+ near-clipping loud variant, plus synthetic speech. Greedy TDT decoding, WER after
89
+ text normalisation. The reference is the upstream fp32 checkpoint under an
90
+ otherwise identical pipeline.
91
+
92
+ | | fp32 | bf16 | fp16 |
93
+ |---|---|---|---|
94
+ | WER, all clips | 2.96 % | 2.99 % | 2.96 % |
95
+ | WER, clean real speech | 2.40 % | 2.40 % | 2.40 % |
96
+ | Encoder output vs fp32, mean relative L2 | β€” | 0.0436 | 0.0052 |
97
+ | Encoder output vs fp32, worst cosine similarity | β€” | 0.8351 | 0.9948 |
98
+ | Weights on disk / in VRAM | 2.5 GB | 1.31 GB | 1.31 GB |
99
+
100
+ fp16 and bf16 produced **identical transcripts on 207 of 208 clips**. The WER
101
+ difference between them is +0.026 pp (95 % bootstrap CI [0.000, +0.077],
102
+ p = 0.74) β€” statistically indistinguishable, and exactly zero on real speech.
103
+
104
+ fp16 tracks fp32 roughly 8Γ— more closely than bf16 does at the activation level,
105
+ which is what you would expect from its 10 mantissa bits against bf16's 7. No
106
+ overflow was observed: zero non-finite activations anywhere, including on the
107
+ deliberately near-clipping loud slice. The narrower fp16 exponent range is not a
108
+ practical problem for this model at inference.
109
+
110
+ Throughput was measured on an RTX 5090 (where all three are supported) β€” median
111
+ real-time factor 0.0114 fp32, 0.0133 bf16, 0.0118 fp16. Expect very different
112
+ absolute numbers on a pre-Ampere card; the point of that row is only that fp16 is
113
+ not slower than bf16.
114
+
115
+ **Caveats.** The evaluation corpus is English-only, so these figures say nothing
116
+ about the other 24 languages the base model supports beyond the general
117
+ expectation that a pure weight cast behaves the same way across them. Both
118
+ checkpoints were cast from the upstream fp32 weights β€” the fp16 one is not a
119
+ bf16 β†’ fp16 round trip, which would inherit bf16's coarser mantissa for no benefit.
120
+
121
+ ## Provenance
122
+
123
+ - **Base model:** `nvidia/parakeet-tdt-0.6b-v3`
124
+ - **Change:** fp32 weights cast to bf16 / fp16, re-saved as `.nemo`
125
+ (701 float tensors, 627,090,582 parameters, unchanged key set)
126
+ - **License:** CC BY 4.0 (inherited from the base model)
127
+ - **Built and evaluated with:** [`lightware-dev/blurt`](https://github.com/lightware-dev/blurt) β€”
128
+ `scripts/build_bf16_ckpt.py` and `scripts/compare_precision.py`
129
+
130
+ Previously published as `lightware-dev/parakeet-tdt-0.6b-v3-bf16` and
131
+ `lightware-dev/parakeet-tdt-0.6b-v3-fp16`; both are now consolidated here.