claroche1 commited on
Commit
fb26c8e
·
verified ·
1 Parent(s): 18f491a

rename monarch_*->blockdiag_* (they were single block-diagonal factors), publish genuine 2-factor Monarch runs, re-quantize int8 with Einsum weight fix

Browse files
.gitattributes CHANGED
@@ -42,3 +42,7 @@ monarch_8/g_best filter=lfs diff=lfs merge=lfs -text
42
  monarch_fc/g_best filter=lfs diff=lfs merge=lfs -text
43
  monarch_full/g_best filter=lfs diff=lfs merge=lfs -text
44
  wide_monarch/g_best filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
42
  monarch_fc/g_best filter=lfs diff=lfs merge=lfs -text
43
  monarch_full/g_best filter=lfs diff=lfs merge=lfs -text
44
  wide_monarch/g_best filter=lfs diff=lfs merge=lfs -text
45
+ blockdiag_8/g_best filter=lfs diff=lfs merge=lfs -text
46
+ blockdiag_full/g_best filter=lfs diff=lfs merge=lfs -text
47
+ blockdiag_fc/g_best filter=lfs diff=lfs merge=lfs -text
48
+ wide_blockdiag/g_best filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -7,6 +7,7 @@ tags:
7
  - speech-denoising
8
  - nsnet2
9
  - butterfly
 
10
  - monarch
11
  - structured-matrices
12
  - onnx
@@ -22,96 +23,115 @@ metrics:
22
 
23
  Best-PESQ checkpoints from the
24
  [eco8-neaixt](https://github.com/LarocheC/eco8-neaixt) compression sweep:
25
- NSNet2 speech enhancement with the FC and GRU layers swappable between
26
- dense, [Butterfly](https://arxiv.org/abs/1903.05895), and
27
- [Monarch](https://arxiv.org/abs/2204.00595) factorizations.
28
 
29
  Trained on
30
- [VoiceBank-DEMAND-16k](https://huggingface.co/datasets/JacobLinCool/VoiceBank-DEMAND-16k)
31
- for 200 epochs at batch 256, n\_fft 512, on a single GTX 1080 Ti.
32
-
33
- Each variant ships in three formats:
34
- - `g_best` — PyTorch checkpoint (training-time weights)
35
- - `g_best_fp32.onnx` streaming-shape FP32 ONNX (frame-by-frame, opset 17)
36
- - `g_best.onnx` — static int8 ONNX (QDQ format, per-channel weight quant,
37
- MinMax calibration on 200 VBD-train utterances)
38
-
39
- ## Results
40
-
41
- PESQ measured on the full VBD test split (824 utterances). RTF (real-time
42
- factor) is for the int8 ONNX session under onnxruntime CPU; lower is faster.
43
-
44
- | run | params | FP32 PESQ | int8 PESQ | Δ (FP32→int8) | int8 RTF |
45
- | ------------------- | ------: | --------: | ---------: | -------------: | -------: |
46
- | `wide_monarch` | 2.36 M | **2.864** | 2.842 | +0.021 | 0.166 |
47
- | `baseline` | 2.78 M | 2.845 | 2.833 | +0.012 | 0.452 |
48
- | `monarch_8` | 0.36 M | 2.832 | 2.826 | +0.006 | **0.025** |
49
- | `monarch_full` | 0.70 M | 2.827 | **2.848** | −0.021 | 0.039 |
50
- | `monarch_fc` | 2.14 M | 2.805 | 2.789 | +0.016 | 0.448 |
51
- | `butterfly_2blocks` | 0.36 M | 2.805 | 2.202 | +0.602 | 0.441 |
52
- | `butterfly_fc` | 1.99 M | 2.799 | 2.494 | +0.306 | 0.522 |
53
- | `butterfly_ortho` | 0.19 M | 2.780 | 2.577 | +0.203 | 0.232 |
54
- | `butterfly_full` | 0.19 M | 2.772 | 2.128 | +0.644 | 0.230 |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  ## Key findings
57
 
58
- - **Monarch variants are essentially loss-free under int8** (|Δ| ≤ 0.021
59
- across the board). A single `Einsum` per FC plus per-channel weight
60
- quantization is genuinely friendly to int8 calibration.
61
- - **`wide_monarch` is the best deployment target** for quality: highest FP32
62
- PESQ (2.864) with near-zero int8 loss (2.842). For speed-constrained
63
- deployment, **`monarch_full` and `monarch_8`** trade ~0.02 PESQ for an
64
- RTF of 0.04 / 0.025 over 10× faster than the dense baseline.
65
- - **Butterfly with random init degrades catastrophically under int8**
66
- up to 0.64 PESQ on `butterfly_full`). Int8 deployment with butterfly
67
- factorizations should use `init=ortho`: `butterfly_ortho` loses 0.20
68
- PESQ to int8 versus 0.64 for `butterfly_full` (same architecture, same
69
- training data, only the init differs).
70
- - **Longer training makes randn-init butterfly *worse* on int8.** The same
71
- `butterfly_full` config saw its int8 gap grow from 0.36 PESQ at 50
72
- epochs 0.64 PESQ at 200 epochs as twiddle factors drifted further
73
- from orthogonality. Ortho-init butterfly does not show this regression.
 
74
 
75
  ## Layout
76
 
77
- Each subdirectory is one run, containing the saved generator (`g_best`),
78
- the streaming FP32 ONNX, the static int8 ONNX, and the exact `config.json`
79
- the run was trained with.
80
 
81
  ```
82
- baseline/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
83
- monarch_fc/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
84
- butterfly_fc/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
85
- monarch_full/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
86
- butterfly_full/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
87
- monarch_8/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
88
- butterfly_ortho/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
89
- butterfly_2blocks/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
90
- wide_monarch/{g_best,g_best_fp32.onnx,g_best.onnx,config.json}
91
  ```
92
 
93
  ## Loading
94
 
95
- ### PyTorch checkpoint
96
-
97
- Clone the repo first (model classes live there):
98
-
99
  ```bash
100
- git clone https://github.com/LarocheC/eco8-neaixt
101
- cd eco8-neaixt
102
- uv sync
103
  ```
104
 
105
- Then:
106
-
107
  ```python
108
  import json, torch
109
  from huggingface_hub import hf_hub_download
110
- from env import AttrDict
111
- from models.model import NSNet2
112
 
113
  REPO = "claroche1/sparse-nsnet2-checkpoints"
114
- RUN = "wide_monarch" # or any name from the table
115
 
116
  cfg = json.load(open(hf_hub_download(REPO, f"{RUN}/config.json")))
117
  ckpt = torch.load(hf_hub_download(REPO, f"{RUN}/g_best"),
@@ -121,53 +141,43 @@ model = NSNet2(AttrDict(cfg)).cuda().eval()
121
  model.load_state_dict(ckpt["generator"])
122
  ```
123
 
 
 
 
 
 
 
 
124
  ### ONNX (FP32 or int8)
125
 
126
- The ONNX models are streaming-shape: a single frame `(B, n_freq)` plus the
127
- GRU state `(num_layers, B, hidden)` per session call, threaded across
128
- frames. The end-to-end pipeline (RMS-norm → STFT → frame loop → iSTFT)
129
- is in `inference_onnx.py` in the source repo.
130
 
131
  ```python
132
  import onnxruntime as ort
133
  from huggingface_hub import hf_hub_download
134
-
135
- REPO = "claroche1/sparse-nsnet2-checkpoints"
136
- RUN = "wide_monarch"
137
-
138
- # FP32:
139
- fp32_path = hf_hub_download(REPO, f"{RUN}/g_best_fp32.onnx")
140
- fp32_sess = ort.InferenceSession(fp32_path, providers=["CPUExecutionProvider"])
141
-
142
- # int8 (deployment):
143
- int8_path = hf_hub_download(REPO, f"{RUN}/g_best.onnx")
144
- int8_sess = ort.InferenceSession(int8_path, providers=["CPUExecutionProvider"])
145
  ```
146
 
147
- End-to-end inference example with PESQ measurement is in `inference_onnx.py`
148
- in the source repo.
149
-
150
  ## Citations
151
 
152
  ```bibtex
153
  @inproceedings{braun2021nsnet2,
154
  title={Towards efficient models for real-time deep noise suppression},
155
  author={Braun, Sebastian and Tashev, Ivan},
156
- booktitle={ICASSP},
157
- year={2021}
158
  }
159
-
160
  @inproceedings{dao2019butterfly,
161
  title={Learning fast algorithms for linear transforms using butterfly factorizations},
162
  author={Dao, Tri and Gu, Albert and Eichhorn, Matthew and Rudra, Atri and R{\'e}, Christopher},
163
- booktitle={ICML},
164
- year={2019}
165
  }
166
-
167
  @inproceedings{dao2022monarch,
168
  title={Monarch: Expressive structured matrices for efficient and accurate training},
169
  author={Dao, Tri and Chen, Beidi and Sohoni, Nimit S and Desai, Arjun and Poli, Michael and Grogan, Jessica and Liu, Alexander and Rao, Aniruddh and Rudra, Atri and R{\'e}, Christopher},
170
- booktitle={ICML},
171
- year={2022}
172
  }
173
  ```
 
7
  - speech-denoising
8
  - nsnet2
9
  - butterfly
10
+ - block-diagonal
11
  - monarch
12
  - structured-matrices
13
  - onnx
 
23
 
24
  Best-PESQ checkpoints from the
25
  [eco8-neaixt](https://github.com/LarocheC/eco8-neaixt) compression sweep:
26
+ NSNet2 speech enhancement with the FC and GRU layers swappable between dense,
27
+ [Butterfly](https://arxiv.org/abs/1903.05895), **block-diagonal**, and genuine
28
+ two-factor [Monarch](https://arxiv.org/abs/2204.00595) factorizations.
29
 
30
  Trained on
31
+ [VoiceBank-DEMAND-16k](https://huggingface.co/datasets/JacobLinCool/VoiceBank-DEMAND-16k),
32
+ n\_fft 512, batch 256. PESQ on the full 824-utterance test split.
33
+
34
+ ## ⚠️ Two corrections you should read before quoting these numbers
35
+
36
+ **1. Naming: the old `monarch_*` runs were NOT Monarch.** They are a *single
37
+ block-diagonal factor* (one block-diagonal matrix per projection, **zero
38
+ cross-block mixing**). A genuine [Monarch](https://arxiv.org/abs/2204.00595) is a
39
+ **two-factor** construction (block-diagonal × permutation × block-diagonal) with
40
+ full cross-channel mixing. The old runs have therefore been **renamed to
41
+ `blockdiag_*`**, and the `monarch_*` names now hold *genuinely* Monarch models:
42
+
43
+ | old name (was mislabeled) | now | `monarch_*` today |
44
+ | ------------------------- | ------------------ | ------------------------ |
45
+ | `monarch_8` | `blockdiag_8` | genuine 2-factor Monarch |
46
+ | `monarch_full` | `blockdiag_full` | genuine 2-factor Monarch |
47
+ | `monarch_fc` | `blockdiag_fc` | genuine 2-factor Monarch |
48
+ | `wide_monarch` | `wide_blockdiag` | genuine 2-factor Monarch |
49
+
50
+ If you previously pinned `monarch_8`, you now get a **different (genuinely
51
+ Monarch) model** the block-diagonal one you had is at `blockdiag_8`.
52
+
53
+ **2. int8: the previously published int8 ONNX never quantized the structured
54
+ weights.** The structure-preserving export lowers each block-diagonal / Monarch
55
+ matmul to an `Einsum`, and onnxruntime ships no QDQ handler for `Einsum` — so
56
+ `quantize_static` skipped those nodes entirely. Only activations and the residual
57
+ dense MatMuls were int8; the **dominant weights stayed FP32**. Every int8 file
58
+ here has been **re-quantized with the structured weights genuinely int8** (fixed
59
+ in `nsnet2/qdq_einsum_quantizer.py` upstream). The "int8 is loss-free" property
60
+ does survive the fix — but it had never actually been tested before it.
61
+
62
+ ## Results (int8 = genuinely quantized weights)
63
+
64
+ ### Genuine two-factor Monarch
65
+
66
+ | run | params | FP32 PESQ | int8 PESQ | Δ (FP32→int8) |
67
+ | -------------- | -----: | --------: | --------: | ------------: |
68
+ | `wide_monarch` | 3.64 M | **2.881** | **2.884** | −0.003 |
69
+ | `monarch_8` | 0.55 M | 2.861 | 2.856 | +0.005 |
70
+ | `monarch_fc` | 2.38 M | 2.843 | 2.831 | +0.012 |
71
+ | `monarch_full` | 1.10 M | 2.838 | 2.846 | −0.009 |
72
+
73
+ ### Block-diagonal, dense, butterfly
74
+
75
+ | run | params | FP32 PESQ | int8 PESQ | Δ (FP32→int8) |
76
+ | ------------------- | -----: | --------: | --------: | ------------: |
77
+ | `wide_blockdiag` | 2.36 M | 2.864 | 2.847 | +0.016 |
78
+ | `baseline` (dense) | 2.78 M | 2.845 | 2.833 | +0.012 |
79
+ | `blockdiag_8` | 0.36 M | 2.832 | 2.825 | +0.007 |
80
+ | `blockdiag_full` | 0.70 M | 2.827 | 2.843 | −0.016 |
81
+ | `blockdiag_fc` | 2.14 M | 2.805 | 2.787 | +0.018 |
82
+ | `butterfly_2blocks` | 0.36 M | 2.805 | 2.202 | +0.602 |
83
+ | `butterfly_fc` | 1.99 M | 2.799 | 2.494 | +0.306 |
84
+ | `butterfly_ortho` | 0.19 M | 2.780 | 2.577 | +0.203 |
85
+ | `butterfly_full` | 0.19 M | 2.772 | 2.128 | +0.644 |
86
 
87
  ## Key findings
88
 
89
+ - **Quality saturates this model class is architecture-bound, not
90
+ capacity-bound.** Across three structure families and ~10× parameters, every
91
+ configuration lands in a **2.83–2.88** band, non-monotonically: the 0.55 M
92
+ `monarch_8` (2.861) beats both the 1.10 M `monarch_full` and the 2.38 M
93
+ `monarch_fc`. Going from `monarch_8` to `wide_monarch` buys +0.020 PESQ.
94
+ NSNet2 predicts a magnitude mask and reuses the noisy phase, which caps PESQ
95
+ regardless of how expressive the mask predictor is. **The dense model was
96
+ already over-parameterized** which is exactly why aggressive structuring is
97
+ nearly free. For deployment, take the smallest (`blockdiag_8` / `monarch_8`).
98
+ - **Genuine Monarch beats block-diagonal, but marginally** (+0.011…+0.038 FP32 at
99
+ matched `nblocks`) and it costs parameters its second factor makes it larger.
100
+ Consistent with the saturation above.
101
+ - **Block-diagonal and Monarch quantize loss-free** (|Δ| ≤ 0.018 and ≤ 0.012),
102
+ *with the weights genuinely quantized*.
103
+ - **Butterfly with randn init degrades catastrophically under int8** up to
104
+ 0.644). Use `init=ortho`: `butterfly_ortho` loses 0.203 to int8 vs 0.644 for
105
+ `butterfly_full` — same architecture, same data, only the init differs.
106
 
107
  ## Layout
108
 
109
+ One subdirectory per run: the generator (`g_best`), the streaming FP32 ONNX, the
110
+ static int8 ONNX, and the exact `config.json` it was trained with.
 
111
 
112
  ```
113
+ baseline/ blockdiag_8/ monarch_8/ butterfly_fc/
114
+ blockdiag_fc/ blockdiag_full/ monarch_fc/ butterfly_full/
115
+ wide_blockdiag/ monarch_full/ wide_monarch/ butterfly_ortho/
116
+ butterfly_2blocks/
117
+
118
+ each: {g_best, g_best_fp32.onnx, g_best.onnx, config.json}
 
 
 
119
  ```
120
 
121
  ## Loading
122
 
 
 
 
 
123
  ```bash
124
+ git clone https://github.com/LarocheC/eco8-neaixt && cd eco8-neaixt && uv sync
 
 
125
  ```
126
 
 
 
127
  ```python
128
  import json, torch
129
  from huggingface_hub import hf_hub_download
130
+ from common.env import AttrDict
131
+ from nsnet2.model import NSNet2
132
 
133
  REPO = "claroche1/sparse-nsnet2-checkpoints"
134
+ RUN = "monarch_8" # or any run from the tables
135
 
136
  cfg = json.load(open(hf_hub_download(REPO, f"{RUN}/config.json")))
137
  ckpt = torch.load(hf_hub_download(REPO, f"{RUN}/g_best"),
 
141
  model.load_state_dict(ckpt["generator"])
142
  ```
143
 
144
+ > **Note for the `monarch_*` runs:** their GRU was trained through gru-qat's fused
145
+ > Monarch Triton kernel (`"gru": {"kind": "triton_monarch"}`), so their
146
+ > `state_dict` uses gru-qat module names. Loading them requires
147
+ > **`gru-qat >= 0.5.0`** and **`torch-structured >= 1.3.0`** (both pulled in by
148
+ > `uv sync`). The `blockdiag_*` / `butterfly_*` / `baseline` runs use the native
149
+ > path and have no such requirement.
150
+
151
  ### ONNX (FP32 or int8)
152
 
153
+ Streaming-shape: one frame `(B, n_freq)` plus GRU state `(num_layers, B, hidden)`
154
+ per session call, threaded across frames. End-to-end pipeline in
155
+ `nsnet2/inference_onnx.py`.
 
156
 
157
  ```python
158
  import onnxruntime as ort
159
  from huggingface_hub import hf_hub_download
160
+ REPO, RUN = "claroche1/sparse-nsnet2-checkpoints", "monarch_8"
161
+ sess = ort.InferenceSession(hf_hub_download(REPO, f"{RUN}/g_best.onnx"),
162
+ providers=["CPUExecutionProvider"]) # int8
 
 
 
 
 
 
 
 
163
  ```
164
 
 
 
 
165
  ## Citations
166
 
167
  ```bibtex
168
  @inproceedings{braun2021nsnet2,
169
  title={Towards efficient models for real-time deep noise suppression},
170
  author={Braun, Sebastian and Tashev, Ivan},
171
+ booktitle={ICASSP}, year={2021}
 
172
  }
 
173
  @inproceedings{dao2019butterfly,
174
  title={Learning fast algorithms for linear transforms using butterfly factorizations},
175
  author={Dao, Tri and Gu, Albert and Eichhorn, Matthew and Rudra, Atri and R{\'e}, Christopher},
176
+ booktitle={ICML}, year={2019}
 
177
  }
 
178
  @inproceedings{dao2022monarch,
179
  title={Monarch: Expressive structured matrices for efficient and accurate training},
180
  author={Dao, Tri and Chen, Beidi and Sohoni, Nimit S and Desai, Arjun and Poli, Michael and Grogan, Jessica and Liu, Alexander and Rao, Aniruddh and Rudra, Atri and R{\'e}, Christopher},
181
+ booktitle={ICML}, year={2022}
 
182
  }
183
  ```
blockdiag_8/config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_gpus": 0,
3
+ "batch_size": 256,
4
+ "learning_rate": 0.003,
5
+ "adam_b1": 0.8,
6
+ "adam_b2": 0.99,
7
+ "lr_decay": 0.99,
8
+ "seed": 1234,
9
+ "hidden_dim": 400,
10
+ "fc_hidden_dim": 600,
11
+ "num_gru_layers": 2,
12
+ "compress_factor": 0.3,
13
+ "linear": {
14
+ "kind": "blockdiag",
15
+ "nblocks": 8
16
+ },
17
+ "gru": {
18
+ "kind": "blockdiag",
19
+ "nblocks": 8
20
+ },
21
+ "sampling_rate": 16000,
22
+ "segment_size": 32000,
23
+ "n_fft": 512,
24
+ "hop_size": 256,
25
+ "win_size": 512,
26
+ "num_workers": 8,
27
+ "quant": {
28
+ "enabled": false,
29
+ "n_calib_utts": 200
30
+ },
31
+ "dist_config": {
32
+ "dist_backend": "nccl",
33
+ "dist_url": "tcp://localhost:54321",
34
+ "world_size": 1
35
+ }
36
+ }
blockdiag_8/g_best ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7416829373b77c1a0fd9ef7a33681131abe33cda0bdf95e8ddc585610a7995b
3
+ size 1423570
blockdiag_8/g_best.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b179824dcf6eb6e04bb1d685b58ada46be7af398cc8a31cc16edadbd83ce1e86
3
+ size 432971
blockdiag_8/g_best_fp32.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ceaa0e96895fcfab277c8b0409fe0d9299a6f60f52bbd8fa6cc5e454b6e1ce73
3
+ size 1442161
blockdiag_fc/config.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_gpus": 0,
3
+ "batch_size": 256,
4
+ "learning_rate": 0.003,
5
+ "adam_b1": 0.8,
6
+ "adam_b2": 0.99,
7
+ "lr_decay": 0.99,
8
+ "seed": 1234,
9
+ "hidden_dim": 400,
10
+ "fc_hidden_dim": 600,
11
+ "num_gru_layers": 2,
12
+ "compress_factor": 0.3,
13
+ "linear": {
14
+ "kind": "blockdiag",
15
+ "nblocks": 4
16
+ },
17
+ "gru": {
18
+ "kind": "gru"
19
+ },
20
+ "sampling_rate": 16000,
21
+ "segment_size": 32000,
22
+ "n_fft": 512,
23
+ "hop_size": 256,
24
+ "win_size": 512,
25
+ "num_workers": 8,
26
+ "quant": {
27
+ "enabled": false,
28
+ "n_calib_utts": 200
29
+ },
30
+ "dist_config": {
31
+ "dist_backend": "nccl",
32
+ "dist_url": "tcp://localhost:54321",
33
+ "world_size": 1
34
+ }
35
+ }
blockdiag_fc/g_best ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cde0e25bebea3d5d713afaaf10f5e52eabaeb5ef552de45abc1cb216957e1848
3
+ size 8570351
blockdiag_fc/g_best.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:264bb5059e5359cd15b6f22fd1990fbfc537df6040be62ba9d8829ef5540b4b2
3
+ size 2252655
blockdiag_fc/g_best_fp32.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f105f2a4d8d2974d9c7da1264c58404e311ed5538fd7ea14c688cdb9610eb5f6
3
+ size 8578184
blockdiag_full/config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_gpus": 0,
3
+ "batch_size": 256,
4
+ "learning_rate": 0.003,
5
+ "adam_b1": 0.8,
6
+ "adam_b2": 0.99,
7
+ "lr_decay": 0.99,
8
+ "seed": 1234,
9
+ "hidden_dim": 400,
10
+ "fc_hidden_dim": 600,
11
+ "num_gru_layers": 2,
12
+ "compress_factor": 0.3,
13
+ "linear": {
14
+ "kind": "blockdiag",
15
+ "nblocks": 4
16
+ },
17
+ "gru": {
18
+ "kind": "blockdiag",
19
+ "nblocks": 4
20
+ },
21
+ "sampling_rate": 16000,
22
+ "segment_size": 32000,
23
+ "n_fft": 512,
24
+ "hop_size": 256,
25
+ "win_size": 512,
26
+ "num_workers": 8,
27
+ "quant": {
28
+ "enabled": false,
29
+ "n_calib_utts": 200
30
+ },
31
+ "dist_config": {
32
+ "dist_backend": "nccl",
33
+ "dist_url": "tcp://localhost:54321",
34
+ "world_size": 1
35
+ }
36
+ }
blockdiag_full/g_best ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c9a34fe8ba46ad1c41ac474010eca2a8bbaadf30d334901af81146b93cc95ba7
3
+ size 2811538
blockdiag_full/g_best.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a666da906fccb95d99b452cc996a4ea446712aa4ccf73eda94408488832e866e
3
+ size 784123
blockdiag_full/g_best_fp32.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c49a7c8648612dc6db1acadbd2077db15f6f7197bea47d4c175d0b3cfc2b6894
3
+ size 2830166
monarch_8/config.json CHANGED
@@ -15,8 +15,9 @@
15
  "nblocks": 8
16
  },
17
  "gru": {
18
- "kind": "monarch",
19
- "nblocks": 8
 
20
  },
21
  "sampling_rate": 16000,
22
  "segment_size": 32000,
@@ -33,4 +34,4 @@
33
  "dist_url": "tcp://localhost:54321",
34
  "world_size": 1
35
  }
36
- }
 
15
  "nblocks": 8
16
  },
17
  "gru": {
18
+ "kind": "triton_monarch",
19
+ "nblocks": 8,
20
+ "struct_input": true
21
  },
22
  "sampling_rate": 16000,
23
  "segment_size": 32000,
 
34
  "dist_url": "tcp://localhost:54321",
35
  "world_size": 1
36
  }
37
+ }
monarch_8/g_best CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c7416829373b77c1a0fd9ef7a33681131abe33cda0bdf95e8ddc585610a7995b
3
- size 1423570
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb927b19edc8fc94da1b4cedc52dc1a75b56ab13272b9cd3d0101b5f1ab28353
3
+ size 2273489
monarch_8/g_best.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:368f9a6af401f42000294c45d5b827dd275d9fb2c486f2e687943d3f23451251
3
- size 1465674
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:37174cc619ecbb73e2526b4ec853d8fc97c6dea0969bf0c1d1358ac5d5409b61
3
+ size 677653
monarch_8/g_best_fp32.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0776227333ef5075c967846daae9e3ecbdc8f924dc0905002a6b5f00703eec49
3
- size 1442161
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:94d37f1c9ba921dde8b06ef8f4a20cbcce37ac5ab71f9a94c68f058563e51b3f
3
+ size 2245092
monarch_fc/config.json CHANGED
@@ -15,7 +15,7 @@
15
  "nblocks": 4
16
  },
17
  "gru": {
18
- "kind": "gru"
19
  },
20
  "sampling_rate": 16000,
21
  "segment_size": 32000,
@@ -32,4 +32,4 @@
32
  "dist_url": "tcp://localhost:54321",
33
  "world_size": 1
34
  }
35
- }
 
15
  "nblocks": 4
16
  },
17
  "gru": {
18
+ "kind": "triton"
19
  },
20
  "sampling_rate": 16000,
21
  "segment_size": 32000,
 
32
  "dist_url": "tcp://localhost:54321",
33
  "world_size": 1
34
  }
35
+ }
monarch_fc/g_best CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:cde0e25bebea3d5d713afaaf10f5e52eabaeb5ef552de45abc1cb216957e1848
3
- size 8570351
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3be49fc25099bd925764cf2d7449417f96ca885ae0e2f90d92c3c2eb6eb7627e
3
+ size 9555373
monarch_fc/g_best.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:febb340361f7f9c015f45ebdb031dee822a6e652eed48f18382c140cac878122
3
- size 2891983
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f03d3c0cb744e0d4b2f2ce55f813e21ca6b0be59446d21a548e472433b58ef2
3
+ size 2510827
monarch_fc/g_best_fp32.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:1bda161d596109d21b794656776329f4986cdd78be7362edafbb2b57534cae16
3
- size 8578184
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:82d9cac18e0cdffa56caa906b62d0daa7e4fe852b589b5af89712849a6fd81e8
3
+ size 9537912
monarch_full/config.json CHANGED
@@ -15,8 +15,9 @@
15
  "nblocks": 4
16
  },
17
  "gru": {
18
- "kind": "monarch",
19
- "nblocks": 4
 
20
  },
21
  "sampling_rate": 16000,
22
  "segment_size": 32000,
@@ -33,4 +34,4 @@
33
  "dist_url": "tcp://localhost:54321",
34
  "world_size": 1
35
  }
36
- }
 
15
  "nblocks": 4
16
  },
17
  "gru": {
18
+ "kind": "triton_monarch",
19
+ "nblocks": 4,
20
+ "struct_input": true
21
  },
22
  "sampling_rate": 16000,
23
  "segment_size": 32000,
 
34
  "dist_url": "tcp://localhost:54321",
35
  "world_size": 1
36
  }
37
+ }
monarch_full/g_best CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c9a34fe8ba46ad1c41ac474010eca2a8bbaadf30d334901af81146b93cc95ba7
3
- size 2811538
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d595a5f69cf0c40f92cae8e23a545fcc70c0c0cad1305a4dbff02cbe2e09a1f1
3
+ size 4454353
monarch_full/g_best.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:640d277c5843df8c4e1b0518e20c29a7f377847a436b62f02ae0ff43e4b6cd04
3
- size 2853656
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f06d4607c1ffa9bd9d056cfef88c06afba7e09bdb06c95beb3ea165bb402d0e2
3
+ size 1229091
monarch_full/g_best_fp32.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:accb5c6dfc79dde3f7772ed90b67ce9b9dc3fcb06b26de9784d4f0d100099b64
3
- size 2830166
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7df98544d085c0c99157bcf707704fc8542b07f737dcd6c6a333cf76e51bbd8e
3
+ size 4425852
wide_blockdiag/config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "num_gpus": 0,
3
+ "batch_size": 256,
4
+ "learning_rate": 0.003,
5
+ "adam_b1": 0.8,
6
+ "adam_b2": 0.99,
7
+ "lr_decay": 0.99,
8
+ "seed": 1234,
9
+ "hidden_dim": 768,
10
+ "fc_hidden_dim": 1024,
11
+ "num_gru_layers": 2,
12
+ "compress_factor": 0.3,
13
+ "linear": {
14
+ "kind": "blockdiag",
15
+ "nblocks": 4
16
+ },
17
+ "gru": {
18
+ "kind": "blockdiag",
19
+ "nblocks": 4
20
+ },
21
+ "sampling_rate": 16000,
22
+ "segment_size": 32000,
23
+ "n_fft": 512,
24
+ "hop_size": 256,
25
+ "win_size": 512,
26
+ "num_workers": 8,
27
+ "quant": {
28
+ "enabled": false,
29
+ "n_calib_utts": 200
30
+ },
31
+ "dist_config": {
32
+ "dist_backend": "nccl",
33
+ "dist_url": "tcp://localhost:54321",
34
+ "world_size": 1
35
+ }
36
+ }
wide_blockdiag/g_best ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e9ad0dda8f30258d8a9dfa42fd900c4e418bc97bdc2a2ed9a6aae709ab6542d7
3
+ size 9432786
wide_blockdiag/g_best.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4b0bf6ce3a0cd7650f647dcff733cbd47aa9c8645f1bf04cc82088b5ada975cb
3
+ size 2446614
wide_blockdiag/g_best_fp32.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:993a4691187c94e50c5e2de7a52a29113529cc0a487b8d98d989212594a7c9fa
3
+ size 9451516
wide_monarch/config.json CHANGED
@@ -15,8 +15,9 @@
15
  "nblocks": 4
16
  },
17
  "gru": {
18
- "kind": "monarch",
19
- "nblocks": 4
 
20
  },
21
  "sampling_rate": 16000,
22
  "segment_size": 32000,
@@ -33,4 +34,4 @@
33
  "dist_url": "tcp://localhost:54321",
34
  "world_size": 1
35
  }
36
- }
 
15
  "nblocks": 4
16
  },
17
  "gru": {
18
+ "kind": "triton_monarch",
19
+ "nblocks": 4,
20
+ "struct_input": true
21
  },
22
  "sampling_rate": 16000,
23
  "segment_size": 32000,
 
34
  "dist_url": "tcp://localhost:54321",
35
  "world_size": 1
36
  }
37
+ }
wide_monarch/g_best CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:e9ad0dda8f30258d8a9dfa42fd900c4e418bc97bdc2a2ed9a6aae709ab6542d7
3
- size 9432786
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7cd2e11239d38449de74f26abb802772a467de331939ed2dfa8a3248edcef490
3
+ size 14602065
wide_monarch/g_best.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:cc5ac41831080f05d188ca695b9b57a77bf2ee3092008be5fd9ce64f5ecfeb58
3
- size 9458215
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:86d3c6cd8df5c77ed14eee425d6d25c716728450e8ea6a5c1e2b16cca6c9014c
3
+ size 3776607
wide_monarch/g_best_fp32.onnx CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:1af01d6864dbb59f459cd25dc77b68befb28d7963f1164dffcb42b300167fa3b
3
- size 9451516
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:656b4c78c4c032e4913fb04604cb56492cf15cb934bd5a92e5182349f4854937
3
+ size 14573504