QuanHoangNgoc commited on
Commit
d4743ca
·
verified ·
1 Parent(s): 6d5b32c

Upload experiment directory test_conformer_10-15_07-53

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +9 -0
  2. test_conformer_10-15_07-53/_dev_mf.json +9 -0
  3. test_conformer_10-15_07-53/_nemo_model_part_0.nemo +3 -0
  4. test_conformer_10-15_07-53/_nemo_model_part_1.nemo +3 -0
  5. test_conformer_10-15_07-53/_nemo_model_part_2.nemo +3 -0
  6. test_conformer_10-15_07-53/_nemo_model_part_3.nemo +3 -0
  7. test_conformer_10-15_07-53/_nemo_model_part_4.nemo +3 -0
  8. test_conformer_10-15_07-53/_nemo_model_part_5.nemo +3 -0
  9. test_conformer_10-15_07-53/_train_mf.json +0 -0
  10. test_conformer_10-15_07-53/args_trainer.txt +1 -0
  11. test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.8375.ckpt +3 -0
  12. test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9905.ckpt +3 -0
  13. test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9911.ckpt +3 -0
  14. test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9945.ckpt +3 -0
  15. test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9984.ckpt +3 -0
  16. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9905.ckpt +3 -0
  17. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9911.ckpt +3 -0
  18. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9933.ckpt +3 -0
  19. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9983.ckpt +3 -0
  20. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9984.ckpt +3 -0
  21. test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9988.ckpt +3 -0
  22. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9899.ckpt +3 -0
  23. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9911.ckpt +3 -0
  24. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9933.ckpt +3 -0
  25. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9983.ckpt +3 -0
  26. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9984.ckpt +3 -0
  27. test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9988.ckpt +3 -0
  28. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9879.ckpt +3 -0
  29. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9911.ckpt +3 -0
  30. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9933.ckpt +3 -0
  31. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9983.ckpt +3 -0
  32. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9984.ckpt +3 -0
  33. test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9988.ckpt +3 -0
  34. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9905.ckpt +3 -0
  35. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9911.ckpt +3 -0
  36. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9926.ckpt +3 -0
  37. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9933.ckpt +3 -0
  38. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9983.ckpt +3 -0
  39. test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9984.ckpt +3 -0
  40. test_conformer_10-15_07-53/ckpts/epochepoch=5-val_wer=0.9922.ckpt +3 -0
  41. test_conformer_10-15_07-53/code-folder/__pycache__/train.cpython-311.pyc +0 -0
  42. test_conformer_10-15_07-53/code-folder/configs/conformer.yaml +265 -0
  43. test_conformer_10-15_07-53/code-folder/train.py +289 -0
  44. test_conformer_10-15_07-53/code-folder/utils/__pycache__/utils.cpython-311.pyc +0 -0
  45. test_conformer_10-15_07-53/code-folder/utils/utils.py +300 -0
  46. test_conformer_10-15_07-53/conf_model.txt +1 -0
  47. test_conformer_10-15_07-53/git_pip_env.txt +878 -0
  48. test_conformer_10-15_07-53/model_avg.ckpt +3 -0
  49. test_conformer_10-15_07-53/n1ybwmlu.csv +0 -0
  50. test_conformer_10-15_07-53/nemo_model_avg.nemo +3 -0
.gitattributes CHANGED
@@ -33,3 +33,12 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ test_conformer_10-15_07-53/_nemo_model_part_0.nemo filter=lfs diff=lfs merge=lfs -text
37
+ test_conformer_10-15_07-53/_nemo_model_part_1.nemo filter=lfs diff=lfs merge=lfs -text
38
+ test_conformer_10-15_07-53/_nemo_model_part_2.nemo filter=lfs diff=lfs merge=lfs -text
39
+ test_conformer_10-15_07-53/_nemo_model_part_3.nemo filter=lfs diff=lfs merge=lfs -text
40
+ test_conformer_10-15_07-53/_nemo_model_part_4.nemo filter=lfs diff=lfs merge=lfs -text
41
+ test_conformer_10-15_07-53/_nemo_model_part_5.nemo filter=lfs diff=lfs merge=lfs -text
42
+ test_conformer_10-15_07-53/nemo_model_avg.nemo filter=lfs diff=lfs merge=lfs -text
43
+ test_conformer_10-15_07-53/training_process_4.png filter=lfs diff=lfs merge=lfs -text
44
+ test_conformer_10-15_07-53/training_process_5.png filter=lfs diff=lfs merge=lfs -text
test_conformer_10-15_07-53/_dev_mf.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/97_0259.wav", "duration": 25.433, "text": "1 th ì 1 tr ướ c 1 đ â y 1 th ì 1 kh ô ng 1 c ó 1 đ ườ ng 1 đ i 1 l ạ i 1 ấ y 1 th ì 1 h ọ c 1 s i nh 1 k iể u 1 đ i 1 b ộ 1 c ó 1 h ô m 1 th ì 1 h ọ c 1 s i nh 1 đ i 1 đ ế n 1 n ửa 1 đ ườ ng 1 đ ã 1 l ẩ n 1 tr ố n 1 đ i 1 v à o 1 c ạ nh 1 đ ườ ng 1 l ề 1 đ ườ ng 1 h oặ c 1 l à 1 đ ế n 1 tr ưa 1 tr ưa 1 r ồ i 1 l ạ i 1 v ề 1 x o ng 1 r ồ i 1 t ừ 1 l ú c 1 c ó 1 đ ườ ng 1 r ồ i 1 th ì 1 b ố 1 m ẹ 1 m ườ i 1 m ấ y 1 tr ở 1 l ạ i 1 đ â y 1 th ì 1 c ũ ng 1 gi a 1 đ ì nh 1 c ũ ng 1 c ó 1 m ộ t 1 c á i 1 x e 1 x o ng 1 r ồ i 1 l ú c 1 k ia 1 đ ưa 1 c o n 1 đ i 1 h ọ c 1 đ ưa 1 đ ế n 1 n ơ i 1 v ề 1 đ ế n 1 ch ố n"}
2
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/70_0247.wav", "duration": 10.4163125, "text": "0 b ê n 0 c ô ng 0 a n 0 th ị 0 tr ấ n 0 th ì 0 b ướ c 0 t uyê n 0 tr uyề n 0 r ấ t 0 l à 0 t ố t 0 r ấ t 0 l à 0 t í ch 0 c ự c 0 t uyê n 0 tr uyề n 0 ch o 0 b à 0 c o n 0 đ ế n 0 t ừ ng 0 h ộ 0 nh à 0 c ũ ng 0 th ô ng 0 b á o 0 ch o 0 b à 0 c o n 0 đ ế n 0 đ â y 0 l à m"}
3
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/86_0322.wav", "duration": 22.906, "text": "0 g â y 0 h ạ i 0 nh iề u 0 h ơ n 0 s o 0 v ớ i 0 v ườ n 0 đ ượ c 0 th ô ng 0 th oá ng 0 th ưa 0 b à 0 c o n 0 th ì 0 đ ố i 0 v ớ i 0 v ề 0 s i nh 0 l ý 0 c â y 0 đ iề u 0 l à 0 c â y 0 t ậ p 0 tr u ng 0 r a 0 h oa 0 ở 0 đ ầ u 0 c à nh 0 đ ầ u 0 t á n 0 n ê n 0 c á c 0 c á i 0 c à nh 0 tr o ng 0 t á n 0 th ì 0 n ó 0 s ẽ 0 kh ô ng 0 ch o 0 h oa 0 h iệ u 0 q uả 0 n ê n 0 b à 0 c o n 0 t iế n 0 h àn nh 0 c á c 0 c ắ t 0 t ỉa 0 c á c 0 c à nh 0 tr o ng 0 t á n 0 v à 0 ch ă m 0 s ó c 0 v à"}
4
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/60_0256.wav", "duration": 24.85, "text": "0 s ự 0 ph ố i 0 h ợ p 0 v ớ i 0 c á c 0 ph ò ng 0 b a n 0 ch uyê n 0 m ô n 0 v í 0 d ụ 0 ph ò ng 0 t à i 0 ng uyê n 0 m ô i 0 tr ườ ng 0 ph ò ng 0 k i nh 0 t ế 0 h ạ 0 t ầ ng 0 ph ò ng 0 n ôg ng 0 ngh iệ p 0 c á c 0 gi á m 0 kh ả o 0 đ ã 0 c ó 0 k i nh 0 ngh iệ m 0 c á c 0 a nh 0 ch ị 0 đ ã 0 c ó 0 k i nh 0 ngh iệ m 0 c ũ ng 0 nh ư 0 đ ạ i 0 h ọ c 0 l ạ c 0 h ồ ng 0 c ó 0 h a i 0 th ầ y 0 ở 0 đ ạ i 0 h ọ c 0 l ạ c 0 h ồ ng 0 v ề 0 c ù ng 0 ch ấ m"}
5
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/64_0265.wav", "duration": 10.342, "text": "2 r ồ i 2 h ỗ 2 tr ợ 2 v ề 2 ứ ng 2 d ụ ng 2 c ô ng 2 ngh ệ 2 c a o 2 h ỗ 2 tr ợ 2 v ề 2 ch i 2 ph í 2 x â y 2 d ự ng 2 nh à 2 x ưở ng 2 m á y 2 m ó c 2 th iế t 2 b ị 2 nh ư ng 2 m à 2 c ũ ng 2 kh ô ng 2 q uá 2 h a i 2 t ỷ 2 đ ồ ng 2 ch o 2 m ộ t 2 d ự 2 á n"}
6
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/27_0257.wav", "duration": 22.7170625, "text": "1 s a u 1 kh i 1 e m 1 t ố t 1 ngh iệ p 1 x o ng 1 c ấ p 1 b a 1 x o ng 1 th ì 1 c ó 1 r ấ t 1 nh iề u 1 l ựa 1 ch ọ n 1 ng à nh 1 ngh ề 1 m à 1 ng ườ i 1 th â n 1 tr o ng 1 gi a 1 đ ì nh 1 đ ã 1 gi ớ i 1 th iệ u 1 ch o 1 e m 1 nh ư ng 1 s a u 1 đ ó 1 e m 1 v ẫ n 1 q uyế t 1 đ ị nh 1 ch ọ n 1 t ạ i 1 tr ườ ng 1 c a o 1 đ ẳ ng 1 ngh ề 1 n à y 1 th ì 1 e m 1 c ả m 1 th ấ y 1 e m 1 nh ậ n 1 đ ị nh 1 đ ượ c 1 h iệ n 1 t ạ i 1 ng à nh 1 c ô ng 1 ngh ệ 1 ô 1 t ô 1 c ũ ng 1 đ a ng 1 r ấ t 1 c ầ n 1 nh â n 1 c ô ng 1 v à 1 l a o 1 đ ộ ng 1 th ì 1 e m 1 q uyế t 1 đ ị nh 1 h ọ c 1 đ ể 1 đ á p 1 ứ ng 1 nh u 1 c ầ u 1 c ủa 1 th ị 1 tr ườ ng 1 s a u 1 đ ó 1 m o ng 1 m uố n 1 l à 1 s ẽ 1 t ừ 1 c ô ng 1 v iệ c 1 n à y 1 c ó 1 m ộ t 1 m ứ c 1 l ươ ng 1 ổ n 1 đ ị nh"}
7
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/17_0289.wav", "duration": 12.551, "text": "7 c à ng 7 th a m 7 gi a 7 c á c 7 ph o ng 7 tr à o 7 th ể 7 d ụ c 7 th ể 7 th a o 7 v ă n 7 h óa 7 ngh ệ 7 th uậ t 7 b a o 7 nh iê u 7 th ì 7 l à 7 c à ng 7 t ố t 7 ch o 7 ng ườ i 7 c a o 7 t uổ i 7 b ấ y 7 nh iê u 7 t ô i 7 c ả m 7 th ấ y 7 l à 7 s ứ c 7 kh ỏe 7 c ủa 7 t uổ i 7 gi à 7 đ ượ c 7 n âg ng 7 l ê n 7 r ấ t 7 l à 7 nh iề u 7 nh ư ng 7 m à 7 t i nh 7 th ầ n 7 c ả m 7 th ấ y 7 l à 7 s ả ng 7 kh oá i 7 v u i 7 t ươ i"}
8
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/99_0277.wav", "duration": 27.7096875, "text": "1 t ạ m 1 đ ế n 1 gi ờ 1 th ì 1 c ơ 1 b ả n 1 th ì 1 n ó 1 h ơ n 1 ng à y 1 x ưa 1 m ộ t 1 ch ú t 1 nh ư ng 1 m à 1 v ề 1 c á i 1 đ ố t 1 v ề 1 c á i 1 b ã 1 r á c 1 th ả i 1 v ẫ n 1 đ ổ 1 ở 1 đ â y 1 n ó 1 v ẫ n 1 ch á y 1 â m 1 ỉ 1 ch o 1 n ê n 1 ng ườ i 1 d â n 1 ch ú ng 1 t ô i 1 v ẫ n 1 ph ả i 1 h ứ ng 1 ch ị u 1 c á i 1 kh ó i 1 kh ô ng 1 kh í 1 c ủa 1 b ã i 1 r á c 1 l ê n 1 m o ng 1 m uố n 1 ch ú ng 1 t ô i 1 b â y 1 gi ờ 1 th ì 1 c ứ 1 đ ề 1 x uấ t 1 c o i 1 nh ư 1 l à 1 c á n 1 b ộ 1 c o i 1 nh ư 1 l à 1 x ã 1 h oà n 1 s ơ n 1 v à 1 t iê n 1 d u 1 v à 1 c á n 1 b ộ 1 t ỉ nh 1 b ắ c 1 n ih nh 1 c o i 1 nh ư 1 l à 1 s ớ m 1 d i 1 ch uyể n 1 c á i 1 b ã i 1 r á c 1 n à y 1 ch o 1 ng ườ i 1 d â n 1 ch ú ng 1 t ô i 1 đ ượ c 1 ch o 1 c á c 1 ch á u 1 đ i 1 h ọ c 1 m à 1 m ô i 1 tr ườ ng 1 n ó 1 tr o ng 1 s ạ ch 1 h ơ n"}
9
+ {"audio_filepath": "/kaggle/input/annot-ds/annot-ds/wavs/36_0284.wav", "duration": 19.465, "text": "1 l iê n 1 t iế p 1 x ả y 1 r a 1 c á c 1 v ụ 1 r ấ t 1 ngh iê m 1 tr ọ ng 1 tr ướ c 1 c á i 1 t ì nh 1 h ìn nh 1 tr ê n 1 ph ò ng 1 c ả nh 1 s á t 1 h ìn nh 1 s ự 1 đ ã 1 th a m 1 m ư u 1 ch o 1 gi á m 1 đ ố c 1 c ô ng 1 a n 1 t ỉ nh 1 m ộ t 1 k ế 1 h oạc ch 1 h uy 1 đ ộ ng 1 l ự c 1 l ượ ng 1 c á n 1 b ộ 1 ph ươ ng 1 t iệ n 1 v à 1 th ự c 1 h iệ n 1 c á c 1 c á i 1 gi ả i 1 ph á p 1 ph ò ng 1 ng ừa 1 v à 1 đ ấ u 1 tr a nh"}
test_conformer_10-15_07-53/_nemo_model_part_0.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:94b83f93d36ffce54259af9ca19d5005af3a914b061b854f51786d647b999eba
3
+ size 52439040
test_conformer_10-15_07-53/_nemo_model_part_1.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9da266d37a540b54064b5fc54d903b0dec9de659fb1c19df62dcd042e9f0d897
3
+ size 52439040
test_conformer_10-15_07-53/_nemo_model_part_2.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52212e55c2fc58ea0cb4ca22d619b674b091fdaa44f4f7506a0aae1760769434
3
+ size 52439040
test_conformer_10-15_07-53/_nemo_model_part_3.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:080979828252ae0db0d7ff74b0a49c985db2b20fdff8a7d01bc663975c76c35f
3
+ size 52439040
test_conformer_10-15_07-53/_nemo_model_part_4.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d253fe1024f85875cb2c7deec4ee9873003e8dfb99870eb18cbf5d14b717fdb0
3
+ size 52439040
test_conformer_10-15_07-53/_nemo_model_part_5.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fe47b74fe87434de406c85dded2b82a1c82a7909adeadc120912242a54be4b72
3
+ size 52439040
test_conformer_10-15_07-53/_train_mf.json ADDED
The diff for this file is too large to render. See raw diff
 
test_conformer_10-15_07-53/args_trainer.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ {'precision': 'bf16', 'devices': 1, 'num_nodes': 1, 'accelerator': 'gpu', 'strategy': 'auto', 'max_epochs': 1000, 'accumulate_grad_batches': 1, 'gradient_clip_val': 0.0, 'log_every_n_steps': 100, 'val_check_interval': 1.0, 'enable_progress_bar': False, 'num_sanity_val_steps': 0, 'check_val_every_n_epoch': 1, 'sync_batchnorm': True, 'benchmark': False, 'enable_checkpointing': True, 'max_time': '00:00:02:00', 'callbacks': [<v2_run.Conformer_nemo.utils.utils.LossLogger object at 0x7f7cf18a4f90>, <lightning.pytorch.callbacks.early_stopping.EarlyStopping object at 0x7f7cf176ee50>, <lightning.pytorch.callbacks.model_checkpoint.ModelCheckpoint object at 0x7f7cf191d4d0>]}
test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.8375.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:25da216a1443f5231f468571a98047b5efc58c601304b460c712e75aa47d81b9
3
+ size 157153333
test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9905.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:020ffb258daee4ab1bbd14fe240c8f3f68da56338675b3023b54c00603af5804
3
+ size 157153333
test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9911.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5e4c938bf922887732a1c312baeded9d9750c9d76cd3cac106f4a311d4c0403
3
+ size 157153333
test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9945.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:798505303504bb1a5668b6bcfef485c62f288dc07080524dd7b71fd73df31a52
3
+ size 157153333
test_conformer_10-15_07-53/ckpts/epochepoch=0-val_wer=0.9984.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:450dc49a39185df4d25a7e756e4cdf0a104034ef74a5350a195f0f4755abd63f
3
+ size 157153333
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9905.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c78da6cae0e4c580d2dcde38c94ca49b62640ead5076668c36f867e1beb1e423
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9911.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8920815aadc771aaf0b60305895413c79b57675ce3145441c020f2ede60c32ba
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9933.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27caca5d6b80f10d7e7d8b73798b4e14a6287bd1fb24279be5a5f45b1b57daf3
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9983.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d29d411c127dbfee0a69d60f99a957a3b2626afe02258277b51fe43e82210f4
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9984.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5166a6863bac5a6823dd56a3f5bb32bfdbf2f9893acc7b5ddf5c8c2d6234444d
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=1-val_wer=0.9988.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9c41cf1694aac103149a9b363f8d85fd021a2edc39c14bd042db98b4da69a86f
3
+ size 157153716
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9899.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7e6acbe811b61314c231b6fcdd0e88cd18aeffee9807368fe1dfedaaf4e55cd7
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9911.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a99e510a22ecef7566d1c5219e1971de107625e56ee6646e366c7c13ab84efb2
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9933.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea0f350f4885b2e0dee5d725ce504bbae55075ad4853abca5566aa69ba865505
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9983.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c91812b643ef97486dbded4105feb0f6c7b4d8e3b6263204ea0bc0c2274db6ce
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9984.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d415fed79b55a0f7446fb1388b52761eb065ae8d90a3458a40ef7832aa5e6387
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=2-val_wer=0.9988.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e475e27b158528dad0d7d807d05c986d6708f58d121342bf7fa9a82f9ada763
3
+ size 157154099
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9879.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:860702c6a021cbfbbab42198af4c844f45c598daa23cd641c261aa1308a4d2a7
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9911.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c67cfff55ba9cbfdc39b025fa72e9a795412ed5419ba800934c0037750e49c9f
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9933.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5870e3b4e7d8a0f324364cc880f79ee0ceabb260a7383765cc2e0dc425999f33
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9983.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:13b013f7e5d6e2ebaeee7f0f167113b73e55b5bd048be3a548886c52aac3f385
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9984.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:567482c617230158a1e3714bef8a0fd00d1e6a382c1080b16f2c6db25a6f52b9
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=3-val_wer=0.9988.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d13454913774a1e4b5df920e96bdcebf79f57564a079bc8a6ae5c34e4b127f4
3
+ size 157154418
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9905.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9c72589eb6a294fe408f729b1ec34bac7a3e66bd2147c7eb66c44faac281e92c
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9911.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:11d3dab7f84326bbfcaa6a7e624abd08461bf403cd1d34179dd9c48c6c1e9bfc
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9926.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1871ee4d27078cd2a67b77e877be19649994e9ece35816116b6a9852a403ad65
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9933.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a754ecb11262a6b295d1dd995ac4ec5726418e8478d02fc9420591305f61f10
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9983.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:03848225c6243cbf8434fc7e1ca948f445db305c2c2bd2fc19157850eb37e847
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=4-val_wer=0.9984.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e2ad497ee2257cf6cd3b3dd8783d3a8563b95d699d7ca27991c5f606b89ab23c
3
+ size 157154482
test_conformer_10-15_07-53/ckpts/epochepoch=5-val_wer=0.9922.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d1e4f0c67969218a351d0ba4b6ad924445132c150861f2214361e1321af47fba
3
+ size 157154482
test_conformer_10-15_07-53/code-folder/__pycache__/train.cpython-311.pyc ADDED
Binary file (15 kB). View file
 
test_conformer_10-15_07-53/code-folder/configs/conformer.yaml ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # It contains the default values for training a Conformer-CTC ASR model, large size (~120M) with CTC loss and sub-word encoding.
2
+
3
+ # Architecture and training config:
4
+ # Here are the recommended configs for different variants of Conformer-CTC, other parameters are the same as in this config file.
5
+ #! One extra layer (compared to original paper) is added to the #medium and #large variants to compensate for replacing the #LSTM decoder with a linear one.
6
+ #
7
+ # +--------------+---------+---------+----------+------------------+------------+-----+
8
+ # | Model | d_model | n_heads | n_layers | conv_kernel_size | time_masks | lr |
9
+ # +==============+=========+========+===========+==================+============+=====+
10
+ # | Small (13M)| 176 | 4 | 16 | 31 | 5 | 5.0 |
11
+ # +--------------+---------+--------+-----------+------------------+------------+-----+
12
+ # | Medium (30M)| 256 | 4 | 18 | 31 | 5 | 5.0 |
13
+ # +--------------+---------+--------+-----------+------------------+------------+-----+
14
+ # | Large (121M)| 512 | 8 | 18 | 31 | 10 | 2.0 |
15
+ # +------------------------+--------+-----------+------------------+------------+-----+
16
+ # | XLarge (635M)| 1024 | 8 | 24 | 5 | 10 | 6.4 |
17
+ # +--------------+---------+--------+-----------+------------------+------------+-----+
18
+ #
19
+ # Default learning parameters in this config are set for global batch size of 2K while you may use lower values.
20
+ # To increase the global batch size with limited number of GPUs, you may use higher accumulate_grad_batches.
21
+ # However accumulate_grad_batches is better to be avoided as long as the global batch size is large enough and training is stable.
22
+
23
+ # You may find more info about Conformer-CTC here: https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/stable/asr/models.html#conformer-ctc
24
+ # Pre-trained models of Conformer-CTC can be found here: https://docs.nvidia.com/deeplearning/nemo/user-guide/docs/en/stable/asr/results.html
25
+ # The checkpoint of the large model trained on LibriSpeech with this recipe can be found here: https://ngc.nvidia.com/catalog/models/nvidia:nemo:stt_en_conformer_ctc_large_ls
26
+
27
+ # We suggest to use trainer.precision=bf16 for GPUs which support it otherwise trainer.precision=16 is recommended.
28
+ # Using bf16 or 16 would make it possible to double the batch size and speedup training/inference. If fp16 is not stable and model diverges after some epochs, you may use fp32.
29
+ # Here are the suggested batch size per GPU for each precision and memory sizes:
30
+ # +-----------+------------+------------+
31
+ # | Precision | GPU Memory | Batch Size |
32
+ # +===========+============+============+
33
+ # | 32 | 16GB | 8 |
34
+ # | | 32GB | 16 |
35
+ # | | 80GB | 32 |
36
+ # +-----------+------------+------------+
37
+ # | 16 or | 16GB | 16 |
38
+ # | bf16 | 32GB | 32 |
39
+ # | | 80GB | 64 |
40
+ # +-----------+------------+------------+
41
+ #! fp16 >> 32 --> batch_size = 16, small size
42
+ # Note: They are based on the assumption of max_duration of 20. If you have longer or shorter max_duration, then batch sizes may need to get updated accordingly.
43
+
44
+ name: "Conformer-CTC-BPE"
45
+ train_path: "v2_prepdata/out/train_300.json"
46
+ dev_path: "v2_prepdata/out/test_10.json"
47
+ test_path: "v2_prepdata/out/test_300.json"
48
+ vocab_dir: "v2_prepdata/out/" #* correct
49
+ full_val_path: "v2_prepdata/out/dev_300.json"
50
+
51
+ train_ds_batch_size: 16 #! batch size for small
52
+ gen_ds_batch_size: 16
53
+ ds_max_duration: 25.5 #! Will be replaced
54
+
55
+ # Model parameters
56
+ d_model: 176
57
+ n_heads: 4
58
+ n_layers: 16
59
+ conv_kernel_size: 31
60
+ aug_time_masks: 5 # Change from 10 to faster smooth optimize, 2 in fast conformer
61
+ # Optimize
62
+ lr: 5.0 #! Select lr and decay = 0.0, sched, warm_step
63
+ weight_decay: 0.0
64
+ warmup_steps: 10000
65
+ use_cer: true #! Change metrics
66
+
67
+ model:
68
+ sample_rate: 16000
69
+ log_prediction: false #! enables logging sample predictions in the output during training
70
+ ctc_reduction: "mean_batch" # "mean_volume" in fast conformer
71
+ skip_nan_grad: false
72
+
73
+ wer:
74
+ use_cer: ${use_cer}
75
+ use_cer: ${use_cer} # Set to true for Character Error Rate instead (default: false)
76
+
77
+ train_ds:
78
+ manifest_filepath: ${train_path}
79
+ sample_rate: ${model.sample_rate}
80
+ batch_size: ${train_ds_batch_size}
81
+ shuffle: true
82
+ num_workers: 8
83
+ pin_memory: true
84
+ max_duration: ${ds_max_duration} # it is set for LibriSpeech, you may need to update it for your dataset
85
+ min_duration: 0.1
86
+ # tarred datasets
87
+ is_tarred: false
88
+ tarred_audio_filepaths: null
89
+ shuffle_n: 2048
90
+ # bucketing params
91
+ bucketing_strategy: "synced_randomized" # "fully_randomized" in fast conformer
92
+ bucketing_batch_size: null
93
+
94
+ validation_ds:
95
+ manifest_filepath: ${dev_path}
96
+ sample_rate: ${model.sample_rate}
97
+ batch_size: ${gen_ds_batch_size} # you may increase batch_size if your memory allows
98
+ shuffle: false
99
+ use_start_end_token: false
100
+ num_workers: 8
101
+ pin_memory: true
102
+
103
+ test_ds:
104
+ manifest_filepath: ${test_path}
105
+ sample_rate: ${model.sample_rate}
106
+ batch_size: ${gen_ds_batch_size} # you may increase batch_size if your memory allows
107
+ shuffle: false
108
+ use_start_end_token: false
109
+ num_workers: 8
110
+ pin_memory: true
111
+
112
+ # recommend to SPE Unigram tokenizer with small vocab size of 128 or 256 when using 4x sub-sampling
113
+ # you may find more detail on how to train a tokenizer at: /scripts/tokenizers/process_asr_text_tokenizer.py
114
+ tokenizer:
115
+ dir: ${vocab_dir} # path to directory which contains either tokenizer.model (bpe) or vocab.txt (wpe)
116
+ type: wpe # Can be either bpe (SentencePiece tokenizer) or wpe (WordPiece tokenizer)
117
+
118
+ preprocessor:
119
+ _target_: nemo.collections.asr.modules.AudioToMelSpectrogramPreprocessor
120
+ sample_rate: ${model.sample_rate}
121
+ normalize: "per_feature"
122
+ window_size: 0.025
123
+ window_stride: 0.01
124
+ window: "hann"
125
+ features: 80
126
+ n_fft: 512
127
+ log: true
128
+ frame_splicing: 1
129
+ dither: 0.00001
130
+ pad_to: 0
131
+ pad_value: 0.0
132
+
133
+ spec_augment:
134
+ _target_: nemo.collections.asr.modules.SpectrogramAugmentation
135
+ freq_masks: 2 # set to zero to disable it
136
+ # you may use lower time_masks for smaller models to have a faster convergence
137
+ time_masks: ${aug_time_masks} # set to zero to disable it
138
+ freq_width: 27
139
+ time_width: 0.05
140
+
141
+ encoder:
142
+ _target_: nemo.collections.asr.modules.ConformerEncoder
143
+ feat_in: ${model.preprocessor.features}
144
+ feat_out: -1 # you may set it if you need different output size other than the default d_model
145
+ n_layers: ${n_layers}
146
+ d_model: ${d_model}
147
+
148
+ # Sub-sampling params
149
+ subsampling: striding # vggnet, striding, stacking or stacking_norm, dw_striding # dw_striding in fast conformer
150
+ subsampling_factor: 4 # must be power of 2 for striding and vggnet
151
+ subsampling_conv_channels: -1 # -1 sets it to d_model = 256, -1 in fast
152
+ causal_downsampling: false
153
+
154
+ # Feed forward module's params
155
+ ff_expansion_factor: 4
156
+
157
+ # Multi-headed Attention Module's params
158
+ self_attention_model: rel_pos # rel_pos or abs_pos
159
+ n_heads: ${n_heads} # may need to be lower for smaller d_models
160
+ # [left, right] specifies the number of steps to be seen from left and right of each step in self-attention
161
+ att_context_size: [-1, -1] # -1 means unlimited context
162
+ att_context_style: regular # regular or chunked_limited
163
+ xscaling: true # scales up the input embeddings by sqrt(d_model)
164
+ untie_biases: true # unties the biases of the TransformerXL layers
165
+ pos_emb_max_len: 5000
166
+
167
+ # Convolution module's params
168
+ conv_kernel_size: ${conv_kernel_size}
169
+ conv_norm_type: "batch_norm" # batch_norm or layer_norm or groupnormN (N specifies the number of groups)
170
+ # conv_context_size can be"causal" or a list of two integers while conv_context_size[0]+conv_context_size[1]+1==conv_kernel_size
171
+ # null means [(kernel_size-1)//2, (kernel_size-1)//2], and 'causal' means [(kernel_size-1), 0]
172
+ conv_context_size: null
173
+
174
+ ### regularization
175
+ dropout: 0.1 # The dropout used in most of the Conformer Modules
176
+ dropout_pre_encoder: 0.1 # The dropout used before the encoder
177
+ dropout_emb: 0.0 # The dropout used for embeddings
178
+ dropout_att: 0.1 # The dropout for multi-headed attention modules
179
+
180
+ # set to non-zero to enable stochastic depth
181
+ stochastic_depth_drop_prob: 0.0
182
+ stochastic_depth_mode: linear # linear or uniform
183
+ stochastic_depth_start_layer: 1
184
+
185
+ decoder:
186
+ _target_: nemo.collections.asr.modules.ConvASRDecoder
187
+ feat_in: null
188
+ num_classes: -1
189
+ vocabulary: []
190
+
191
+ # config for InterCTC loss: https://arxiv.org/abs/2102.03216
192
+ # specify loss weights and which layers to use for InterCTC
193
+ # e.g., to reproduce the paper results, set loss_weights: [0.3]
194
+ # and apply_at_layers: [8] (assuming 18 layers). Note that final
195
+ # layer loss coefficient is automatically adjusted (to 0.7 in above example)
196
+ interctc:
197
+ loss_weights: []
198
+ apply_at_layers: []
199
+
200
+ optim:
201
+ name: adamw
202
+ # lr: 5.0 #?
203
+ lr: ${lr}
204
+ # optimizer arguments
205
+ betas: [0.9, 0.98]
206
+ # less necessity for weight_decay as we already have large augmentations with SpecAug
207
+ # you may need weight_decay for large models, stable AMP training, small datasets, or when lower augmentations are used
208
+ # weight decay of 0.0 with lr of 2.0 also works fine
209
+ # weight_decay: 0.0 #?
210
+ weight_decay: ${weight_decay}
211
+
212
+ # scheduler setup
213
+ sched:
214
+ name: NoamAnnealing
215
+ d_model: ${model.encoder.d_model}
216
+ # scheduler config override
217
+ # warmup_steps: 10000
218
+ warmup_steps: ${warmup_steps}
219
+ warmup_ratio: null
220
+ min_lr: 1e-6
221
+
222
+ # ==============================================================================
223
+ # Dont use
224
+
225
+ trainer:
226
+ devices: -1 # number of GPUs, -1 would use all available GPUs
227
+ num_nodes: 1
228
+ max_epochs: 1000
229
+ max_steps: -1 # computed at runtime if not set
230
+ val_check_interval: 1.0 # Set to 0.25 to check 4 times per epoch, or an int for number of iterations
231
+ accelerator: auto
232
+ strategy: ddp
233
+ accumulate_grad_batches: 1
234
+ gradient_clip_val: 0.0
235
+ precision: 32 # 16, 32, or bf16
236
+ log_every_n_steps: 10 # Interval of logging.
237
+ enable_progress_bar: True
238
+ num_sanity_val_steps: 0 # number of steps to perform validation steps for sanity check the validation process before starting the training, setting to 0 disables it
239
+ check_val_every_n_epoch: 1 # number of evaluations on validation every n epochs
240
+ sync_batchnorm: true
241
+ enable_checkpointing: False # Provided by exp_manager
242
+ logger: false # Provided by exp_manager
243
+ benchmark: false # needs to be false for models with variable-length speech input as it slows down training
244
+
245
+ exp_manager:
246
+ exp_dir: null
247
+ name: ${name}
248
+ create_tensorboard_logger: true
249
+ create_checkpoint_callback: true
250
+ checkpoint_callback_params:
251
+ # in case of multiple validation sets, first one is used
252
+ monitor: "val_wer"
253
+ mode: "min"
254
+ save_top_k: 5
255
+ always_save_nemo: True # saves the checkpoints as nemo files instead of PTL checkpoints
256
+
257
+ # you need to set these two to True to continue the training
258
+ resume_if_exists: false
259
+ resume_ignore_no_checkpoint: false
260
+
261
+ # You may use this section to create a W&B logger
262
+ create_wandb_logger: false
263
+ wandb_logger_kwargs:
264
+ name: null
265
+ project: null
test_conformer_10-15_07-53/code-folder/train.py ADDED
@@ -0,0 +1,289 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import subprocess
3
+ import sys
4
+
5
+ from sklearn.model_selection import train_test_split
6
+ from torch import rand
7
+
8
+ # * Have first: V0, utils -> this
9
+ if True:
10
+ sys.path.append(os.getcwd())
11
+ if True:
12
+ from v0_import.import_scr import *
13
+ if True:
14
+ from v2_run.Conformer_nemo.utils.utils import *
15
+ run_import_src = True
16
+
17
+
18
+ # ==============================================================================
19
+ # Ultil functions
20
+ # Dont need to edit, please..
21
+
22
+ def set_all_seeds(seed=42):
23
+ random.seed(seed)
24
+ np.random.seed(seed)
25
+ torch.manual_seed(seed)
26
+ torch.cuda.manual_seed_all(seed)
27
+
28
+
29
+ def get_config_nemo():
30
+ # config_path = "Fast_conformer_nemo/configs/fast_conformer.yaml"
31
+ # if len(sys.argv) >= 2:
32
+ # config_path = sys.argv[1]
33
+ print(config_path, flush=True)
34
+ with open(config_path, "r", encoding="utf-8") as f:
35
+ yaml_text = f.read().strip()
36
+
37
+ _config = OmegaConf.create(yaml_text)
38
+ config_dict = OmegaConf.to_container(_config, resolve=True)
39
+ print(f"\n{config_dict['model']}\n{config_dict}", flush=True)
40
+ return config_dict
41
+
42
+
43
+ def get_train_dev_test(path): # Train is full, dev is 300, test is full
44
+ data = []
45
+ print(path, flush=True)
46
+ with open(path, "r", encoding="utf-8") as f:
47
+ for line in f:
48
+ if line.strip():
49
+ dic = json.loads(line)
50
+ data.append(dic)
51
+ return data
52
+
53
+
54
+ def get_info(train_path):
55
+ data = []
56
+ max_dur = 0.0
57
+ words = []
58
+ with open(train_path, "r", encoding="utf-8") as f: # Same code with above
59
+ for line in f:
60
+ if line.strip():
61
+ dic = json.loads(line)
62
+ data.append(dic)
63
+ max_dur = max(max_dur, dic["duration"])
64
+ words.extend(str(dic["text"]).split())
65
+
66
+ words = list(set(sorted(words)))
67
+ return data, max_dur, len(words)
68
+
69
+
70
+ # ==============================================================================
71
+ # Set global vars and data
72
+ if run_import_src:
73
+ set_all_seeds(42) # Set random seed for reproducibility
74
+ config_dict = get_config_nemo() # Get from path
75
+ data, max_dur, len_vocab = get_info(config_dict['train_path'])
76
+ sample_rate = 16000
77
+ dev_data, test_data = get_train_dev_test(
78
+ config_dict['dev_path']), get_train_dev_test(config_dict['test_path'])
79
+ full_val_data = get_train_dev_test(config_dict['full_val_path'])
80
+
81
+ log.info("Overall checking:")
82
+ log.info(f"Number of samples in manifest: {len(data)}")
83
+ log.info(
84
+ f"- Max duration in manifest: {max_dur:.2f} seconds, sample rate: {sample_rate}")
85
+ log.info(f"- Vocab in manifest: {len_vocab} units")
86
+ log.info(f"Number of dev is {len(dev_data)}, test is {len(test_data)}")
87
+
88
+
89
+ # ==============================================================================
90
+ # Create params, conf_model, mfpath and change st
91
+ if run_import_src:
92
+ params = copy.deepcopy(config_dict)['model']
93
+ train_mfpath = os.path.join(res_exp_dir, "_train_mf.json")
94
+ dev_mfpath = os.path.join(res_exp_dir, "_dev_mf.json")
95
+
96
+ for ds in ['train_ds', 'validation_ds']: # Change train and dev temporarily
97
+ if ds == 'train_ds':
98
+ params[ds]['manifest_filepath'] = train_mfpath
99
+ params[ds]['max_duration'] = round(max_dur + 0.1, 2)
100
+ else:
101
+ params[ds]['manifest_filepath'] = dev_mfpath
102
+ log.info(
103
+ f"Changed params['train_ds']['max_duration'] = {round(max_dur + 0.1, 2)} seconds \nand {train_mfpath}, {dev_mfpath} to write data!")
104
+
105
+ # Create an OmegaConf object from the dictionary
106
+ conf_model = OmegaConf.create(params)
107
+ write_txt_exp_dir("conf_model.txt", conf_model)
108
+ # Run pip freeze and capture output as string
109
+ pip_freeze_str = subprocess.check_output(
110
+ ["git", "log", "-1",
111
+ '--pretty=format:%h %s%nAuthor date: %ad%nCommit date: %cd', "--date=iso"],
112
+ text=True
113
+ ) + "\n"
114
+ pip_freeze_str += subprocess.check_output(
115
+ ["python", "--version"], text=True) + "\n"
116
+ pip_freeze_str += subprocess.check_output(
117
+ ["pip", "freeze"], text=True) + "\n"
118
+ write_txt_exp_dir("git_pip_env.txt", pip_freeze_str)
119
+
120
+ # Some for training
121
+ log.info(f"train_ds_batch_size: {config_dict['train_ds_batch_size']}")
122
+ log.info(
123
+ f"warmup_steps: {config_dict['warmup_steps']}, lr: {config_dict['lr']}, weight_decay: {config_dict['weight_decay']}")
124
+
125
+
126
+ # ==============================================================================
127
+ # Create subset from part and write it to global mfpath
128
+
129
+
130
+ def create_train_dev(root_train_data: list, begin_idx, end_idx, num_train, num_dev, root_dev_data=None):
131
+ global train_mfpath, dev_mfpath
132
+
133
+ def get_min_max_duration(data):
134
+ mi, ma = 100.0, 0.0
135
+ for dic in data:
136
+ mi = min(mi, dic["duration"])
137
+ ma = max(ma, dic["duration"])
138
+ return mi, ma
139
+
140
+ def split_data(data: list, k):
141
+ if k >= len(data):
142
+ return data
143
+ _train_data, _test_data = train_test_split(
144
+ data, test_size=k, random_state=42
145
+ )
146
+ return _test_data
147
+
148
+ # # Sort by distribution
149
+ # data = list(sorted(root_train_data, key=lambda x: int(
150
+ # os.path.basename(x["audio_filepath"]).split("_")[0])))
151
+
152
+ # Select part
153
+ data = root_train_data.copy()
154
+ begin_idx = max(0, begin_idx)
155
+ end_idx = min(end_idx, len(data))
156
+ data = data[begin_idx:end_idx]
157
+ log.info(f"- Duration of this part: [{get_min_max_duration(data)}]")
158
+
159
+ # Select random subset/set from part: train from data, and dev from train or is root_dev
160
+ from tqdm import tqdm
161
+ num_train = min(num_train, len(data))
162
+ train_data = random.sample(data, num_train) # ? Use random.sample
163
+ if root_dev_data is None:
164
+ num_dev = min(num_dev, num_train)
165
+ dev_data = random.sample(train_data, num_dev) # ? Use random.sample
166
+ else:
167
+ dev_data = list(root_dev_data).copy()
168
+
169
+ # Write subset data back to a new file (or overwrite)
170
+ dev_in_train = True if root_dev_data is None else False
171
+ log.info(
172
+ f"- Number of train is {len(train_data)}, dev is {len(dev_data)}, dev in train: {dev_in_train}")
173
+ log.info(f"\n{train_data[0]}\n{dev_data[0]}\n")
174
+
175
+ with open(train_mfpath, "w", encoding="utf-8") as fout:
176
+ for item in train_data:
177
+ fout.write(json.dumps(item, ensure_ascii=False) + "\n")
178
+
179
+ with open(dev_mfpath, "w", encoding="utf-8") as fout:
180
+ for item in dev_data:
181
+ fout.write(json.dumps(item, ensure_ascii=False) + "\n")
182
+
183
+
184
+ # ==============================================================================
185
+ # Demo Nemo model and demo first
186
+ def init_nemo_model(data, dev_data, conf_model):
187
+ log.info(f"\n\nInit nemo model:")
188
+ create_train_dev(root_train_data=data, begin_idx=0, end_idx=len(data), num_train=len(
189
+ data), num_dev=-1, root_dev_data=dev_data) # Demo create data, v
190
+ trainer = create_new_trainer(epochs=1000, min_stop=0.0) # Demo trainer, v
191
+
192
+ # trainer.fit(nemo_model)
193
+ nemo_model = nemo_asr.models.EncDecCTCModelBPE(
194
+ cfg=conf_model, trainer=trainer)
195
+ summary = ModelSummary(nemo_model)
196
+ print(summary)
197
+ return nemo_model
198
+
199
+
200
+ # ==============================================================================
201
+ # Train model: Multi part training, need edit for Conformer
202
+
203
+
204
+ def train_multi_turn(train_data, dev_data):
205
+ # Init nemo model
206
+ set_all_seeds(42)
207
+ global params, conf_model, res_exp_dir
208
+ nemo_model = init_nemo_model(
209
+ data=train_data, dev_data=dev_data, conf_model=conf_model)
210
+
211
+ # ! NOTE: Setting for multi part training
212
+ train_data = list(sorted(train_data, key=lambda x: x["duration"]))
213
+
214
+ cnt = len(train_data)
215
+ setting = {
216
+ "begin_idx": [0] * 5 + [0], # ! Difference with root version
217
+ "end_idx": [3000, 6000, 9000, 12000, 15000, cnt],
218
+ "num_train": [300] * 5 + [cnt],
219
+ "num_dev": [10] * 5 + [-1], # Must -1
220
+ "epochs": [200] * 5 + [1000], # ! Not run enough epochs
221
+ "min_stop": [0.3] * 5 + [0.0] # ! 0.3
222
+ }
223
+ num_part = len(setting["begin_idx"])
224
+ trainer = None
225
+
226
+ for i in range(num_part):
227
+ begin_idx = setting["begin_idx"][i]
228
+ end_idx = setting["end_idx"][i]
229
+ num_train = setting["num_train"][i]
230
+ num_dev = setting["num_dev"][i]
231
+ num_epochs = setting["epochs"][i]
232
+ min_stop = setting["min_stop"][i]
233
+ log.info(
234
+ f"\n\n Here {i}: {begin_idx} --> {end_idx} | {num_train}, {num_dev}, {cnt} | {num_epochs}, {min_stop}")
235
+
236
+ # Create train dev file
237
+ if num_dev <= 0:
238
+ create_train_dev(root_train_data=train_data, begin_idx=begin_idx, end_idx=end_idx,
239
+ num_train=num_train, num_dev=num_dev, root_dev_data=dev_data)
240
+ else:
241
+ create_train_dev(root_train_data=train_data, begin_idx=begin_idx, end_idx=end_idx,
242
+ num_train=num_train, num_dev=num_dev)
243
+
244
+ # Create trainer newly
245
+ trainer = create_new_trainer(
246
+ epochs=num_epochs, min_stop=min_stop)
247
+
248
+ nemo_model.setup_training_data(
249
+ train_data_config=params['train_ds']) # Reload it
250
+ nemo_model.setup_validation_data(
251
+ val_data_config=params['validation_ds']) # Reload it
252
+ trainer.fit(nemo_model) # Fit
253
+
254
+ # Save it tmply
255
+ save_path = os.path.join(res_exp_dir, f"_nemo_model_part_{i}.nemo")
256
+ nemo_model.save_to(save_path)
257
+ return trainer, nemo_model
258
+
259
+
260
+ # =====================================
261
+ # Conformer, dont need to edit, please..
262
+
263
+
264
+ def run_main_in_notebook():
265
+ global data, dev_data, res_exp_dir
266
+ trainer, nemo_model = train_multi_turn(data, dev_data) # Train with data
267
+
268
+ # ==========================================================================
269
+ # Get paths from checkpoint callback
270
+ # # last in list of callbacks if added last
271
+ ckpt_callback = trainer.callbacks[-1]
272
+ best_paths = list(ckpt_callback.best_k_models.keys())
273
+
274
+ # Reload and save
275
+ nemo_model, avg_weights = reload_nemo_from_avg(
276
+ best_paths=best_paths, nemo_model=nemo_model)
277
+ avg_ckpt_path = f"{res_exp_dir}/model_avg.ckpt"
278
+ nemo_model_path = f"{res_exp_dir}/nemo_model_avg.nemo"
279
+ save_model_to_path(nemo_model, avg_weights, nemo_model_path, avg_ckpt_path)
280
+
281
+ # Gen, score and save for mfpath
282
+ nemo_inference_for_mfpath(nemo_model, config_dict['dev_path'])
283
+ nemo_inference_for_mfpath(nemo_model, config_dict['test_path'])
284
+ nemo_inference_for_mfpath(nemo_model, config_dict['full_val_path'])
285
+ push_exp_dir_to_hub(res_exp_dir)
286
+
287
+
288
+ if __name__ == "__main__":
289
+ run_main_in_notebook()
test_conformer_10-15_07-53/code-folder/utils/__pycache__/utils.cpython-311.pyc ADDED
Binary file (17.2 kB). View file
 
test_conformer_10-15_07-53/code-folder/utils/utils.py ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import csv
3
+ import glob
4
+ import json
5
+ import logging
6
+ import logging as log
7
+ import os
8
+ import random
9
+ import re
10
+ import shutil
11
+ import string
12
+ import sys
13
+ import unicodedata
14
+
15
+ import jiwer
16
+ import lightning.pytorch as pl
17
+ import nemo
18
+ import nemo.collections.asr as nemo_asr
19
+ import numpy as np
20
+ import torch
21
+ from datasets import load_dataset
22
+ from jiwer import wer
23
+ from lightning.pytorch.callbacks import Callback, EarlyStopping, ModelCheckpoint
24
+ from lightning.pytorch.utilities.model_summary import ModelSummary
25
+ from omegaconf import OmegaConf
26
+ from scipy.io import wavfile
27
+
28
+ # * Have first: V0 -> this
29
+ from v0_import.import_scr import push_file_to_hub
30
+
31
+
32
+ class LossLogger(Callback):
33
+ def __init__(self, exp_dir):
34
+ super().__init__()
35
+ self.train_losses = []
36
+ self.val_losses = []
37
+ self.train_wer = []
38
+ self.val_wer = []
39
+ self.lr_list = [] # ? lr plot
40
+ self.step_list = [] # ? step plot
41
+ self.num_last = 100 # ? epoch unit
42
+ self.num_plot = 100 # ? epoch
43
+ self.allow_show_plot = False # ? Allow show plot in notebook
44
+ self.exp_dir = exp_dir
45
+
46
+ def on_train_epoch_end(self, trainer, pl_module):
47
+ train_loss = trainer.callback_metrics.get('train_loss')
48
+ epoch_idx = trainer.current_epoch
49
+ lr = trainer.optimizers[0].param_groups[0]['lr'] # Print lr
50
+ optimize_step = trainer.global_step # <-- this is what you want
51
+ log.info(f"Epoch {epoch_idx} ended." + "=" * 100)
52
+ if train_loss is not None:
53
+ self.train_losses.append(train_loss.item())
54
+ self.lr_list.append(lr) # Add lr
55
+ self.step_list.append(optimize_step) # Add step
56
+ log.info(
57
+ f"Train Loss: {train_loss.item()}, lr: {lr}, step: {optimize_step}")
58
+
59
+ if epoch_idx != 0 and epoch_idx % self.num_plot == 0:
60
+ self._plot_train()
61
+
62
+ def on_validation_epoch_end(self, trainer, pl_module):
63
+ val_loss = trainer.callback_metrics.get('val_loss')
64
+ val_wer = trainer.callback_metrics.get('val_wer')
65
+ if val_loss is not None:
66
+ self.val_losses.append(val_loss.item())
67
+ log.info(f"Validation Loss: {val_loss.item()}")
68
+ if val_wer is not None:
69
+ self.val_wer.append(val_wer.item())
70
+ log.info(f"Validation WER: {val_wer.item()}")
71
+
72
+ def _plot_train(self):
73
+ import matplotlib.pyplot as plt
74
+ plt.figure(figsize=(20, 16)) # Bigger figure
75
+ num = self.num_last
76
+ # ===== Loss Plot =====
77
+ plt.subplot(2, 2, 1)
78
+ plt.plot(self.train_losses[-num:], label='Training Loss', linewidth=1)
79
+ plt.plot(self.val_losses[-num:], label='Validation Loss', linewidth=1)
80
+ plt.xlabel('Epoch')
81
+ plt.ylabel('Loss')
82
+ plt.legend()
83
+ plt.title('Training and Validation Loss')
84
+ plt.grid(True, linestyle='--', alpha=0.6)
85
+ # ===== WER Plot =====
86
+ plt.subplot(2, 2, 2)
87
+ plt.plot(self.train_wer[-num:], label='Training WER', linewidth=1)
88
+ plt.plot(self.val_wer[-num:], label='Validation WER', linewidth=1)
89
+ plt.xlabel('Epoch')
90
+ plt.ylabel('WER')
91
+ plt.legend()
92
+ plt.title('Training and Validation WER')
93
+ plt.grid(True, linestyle='--', alpha=0.6)
94
+ # ===== Learning Rate Plot =====
95
+ plt.subplot(2, 2, 3)
96
+ plt.plot(self.lr_list[-num:], label='Learning rate', linewidth=1)
97
+ plt.xlabel('Epoch')
98
+ plt.ylabel('LR')
99
+ plt.legend()
100
+ plt.title('Learning Rate Schedule')
101
+ plt.grid(True, linestyle='--', alpha=0.6)
102
+ # ===== Optimize step Plot =====
103
+ plt.subplot(2, 2, 4)
104
+ plt.plot(self.step_list[-num:], label='Optimize step', linewidth=1)
105
+ plt.xlabel('Epoch')
106
+ plt.ylabel('Step')
107
+ plt.legend()
108
+ plt.title('Step Optimization')
109
+ plt.grid(True, linestyle='--', alpha=0.6)
110
+ plt.tight_layout()
111
+ # allow_show_plot = True # Allow show plot in notebook
112
+ if self.allow_show_plot:
113
+ plt.show()
114
+ else:
115
+ plot_png = os.path.join(
116
+ self.exp_dir, f"training_process_{len(self.val_wer)}.png")
117
+ plt.savefig(plot_png)
118
+ push_file_to_hub(plot_png)
119
+
120
+ def on_train_end(self, trainer, pl_module):
121
+ self.num_last = len(self.val_wer)
122
+ self._plot_train()
123
+
124
+
125
+ config_path = "v2_run/Conformer_nemo/configs/conformer.yaml" # ! NOTE: Setting
126
+ res_exp_dir = "test_conformer" # ? NOTE: Setting
127
+ os.makedirs(res_exp_dir, exist_ok=True)
128
+ src_folder = "v2_run/Conformer_nemo" # ?
129
+ dst_folder = os.path.join(res_exp_dir, "code-folder")
130
+ shutil.copytree(src_folder, dst_folder, dirs_exist_ok=True)
131
+ log.info(f"Copied code to {dst_folder}")
132
+
133
+
134
+ def write_txt_exp_dir(name, var):
135
+ path = os.path.join(res_exp_dir, name)
136
+ with open(path, "w", encoding="utf-8") as f:
137
+ f.write(str(var))
138
+ f.close()
139
+
140
+
141
+ # ==============================================================================
142
+
143
+
144
+ def create_time_callbacks(num_keep, min_stop, max_hour):
145
+ # num_keep = 500
146
+ early_stop_callback = EarlyStopping(
147
+ monitor="val_wer", # Metric to monitor
148
+ mode="min", # Lower is better
149
+ stopping_threshold=min_stop, # Stop if val_wer < 0.x
150
+ patience=num_keep, # Stop immediately when not reduce
151
+ verbose=True
152
+ )
153
+ # Keep top 5 checkpoints based on val_wer
154
+ num_avg = 5
155
+ save_last = False
156
+ checkpoint_callback = ModelCheckpoint(
157
+ dirpath=f"{res_exp_dir}/ckpts", # Dir of ckpts
158
+ filename="epoch{epoch}-{val_wer:.4f}",
159
+ monitor="val_wer", # ! Use val_cer metric
160
+ mode="min",
161
+ save_top_k=num_avg, # Only keep 5 best
162
+ save_last=save_last, # Also save last epoch: False
163
+ )
164
+ # max_time_training = "00:09:00:00"
165
+ max_time_training = f"00:{max_hour}:02:00"
166
+ callback_list = [LossLogger(res_exp_dir),
167
+ early_stop_callback, checkpoint_callback] # Difference with root version
168
+ return max_time_training, callback_list
169
+
170
+
171
+ def create_new_trainer(epochs, min_stop, max_hour="09"):
172
+ # NOTE: Setting
173
+ max_hour = "00" # ! Must edit when run: Conformer
174
+ log.info(f"Hour to train is {max_hour}")
175
+ setting = {
176
+ 'num_keep': 500,
177
+ 'precision': 'bf16', # ! Use AMP: Difference with root version
178
+ 'accumulate_grad_batches': 1,
179
+ 'max_hour': max_hour,
180
+ 'enable_progress_bar': False, # Off bar training to shorter log
181
+ }
182
+ log.info(f"Precision to train is {setting['precision']}")
183
+ log.info(
184
+ f"Grad batch size to train is {16} x {setting['accumulate_grad_batches']}") # ! Bsize
185
+
186
+ # Create callbacks
187
+ max_time_training, callback_list = create_time_callbacks(
188
+ num_keep=setting['num_keep'], min_stop=min_stop, max_hour=max_hour)
189
+ # Training args
190
+ trainer_dict = {
191
+ # Hardware
192
+ 'precision': setting['precision'], # Trade-off
193
+ 'devices': 1,
194
+ 'num_nodes': 1,
195
+ 'accelerator': 'gpu',
196
+ 'strategy': 'auto', # Must: no multi gpu
197
+ # Training
198
+ 'max_epochs': epochs,
199
+ 'accumulate_grad_batches': setting['accumulate_grad_batches'],
200
+ 'gradient_clip_val': 0.0,
201
+ # Prediction monitor
202
+ 'log_every_n_steps': 100, # Logging in a epoch train
203
+ 'val_check_interval': 1.0, # Compute wer after 1.0 epoch
204
+ # No-related
205
+ 'enable_progress_bar': setting['enable_progress_bar'],
206
+ 'num_sanity_val_steps': 0,
207
+ 'check_val_every_n_epoch': 1,
208
+ # If True, enables cudnn benchmarking for faster training.
209
+ 'sync_batchnorm': True,
210
+ 'benchmark': False,
211
+ # Saving and callback: New setting for callbacks
212
+ 'enable_checkpointing': True,
213
+ 'max_time': max_time_training,
214
+ 'callbacks': callback_list,
215
+ }
216
+ write_txt_exp_dir("args_trainer.txt", trainer_dict)
217
+ trainer = pl.Trainer(**trainer_dict)
218
+ return trainer
219
+
220
+
221
+ # ==============================================================================
222
+ # Dont need to edit, please..
223
+
224
+
225
+ def reload_nemo_from_avg(best_paths, nemo_model):
226
+ w_only = False # NOTE: Use w_only = False because it error
227
+ load_strict = False
228
+
229
+ def average_checkpoints(paths):
230
+ avg_state_dict = None
231
+ for path in paths:
232
+ ckpt = torch.load(path, map_location="cpu",
233
+ weights_only=w_only)["state_dict"]
234
+ if avg_state_dict is None:
235
+ avg_state_dict = {k: v.clone() for k, v in ckpt.items()}
236
+ else:
237
+ for k in avg_state_dict:
238
+ # if it's int/bool, leave as-is
239
+ if torch.is_floating_point(avg_state_dict[k]):
240
+ avg_state_dict[k] += ckpt[k]
241
+ for k in avg_state_dict:
242
+ if torch.is_floating_point(avg_state_dict[k]):
243
+ avg_state_dict[k] /= len(paths)
244
+ return avg_state_dict
245
+
246
+ # Average
247
+ log.info(f"\n\nBest paths for AVG(model): {best_paths}")
248
+ avg_weights = average_checkpoints(best_paths)
249
+ # Assign averaged weights to NeMo model
250
+ nemo_model = nemo_model.to("cuda" if torch.cuda.is_available() else "cpu")
251
+ nemo_model.load_state_dict(avg_weights, strict=load_strict)
252
+ return nemo_model, avg_weights
253
+
254
+
255
+ def save_model_to_path(nemo_model, avg_weights, nemo_model_path, avg_ckpt_path):
256
+ torch.save({"state_dict": avg_weights}, avg_ckpt_path)
257
+ nemo_model.save_to(nemo_model_path)
258
+ log.info(f"\n\nSaved avg weights (.ckpt) at {avg_ckpt_path}")
259
+ log.info(f"Saved averaged NeMo model at {nemo_model_path}")
260
+
261
+
262
+ def nemo_inference_for_mfpath(nemo_model, mfpath):
263
+ def save_gen_list(text_list, gt_list):
264
+ random_name = ''.join(random.choices(
265
+ string.ascii_lowercase + string.digits, k=8))
266
+ file_path = f"{random_name}.csv"
267
+ # Save rd name
268
+ file_path = os.path.join(res_exp_dir, file_path)
269
+ log.info(f"Saved gen at {file_path}")
270
+ # Write it as .csv
271
+ with open(file_path, mode="w", newline="", encoding="utf-8") as f:
272
+ writer = csv.writer(f)
273
+ writer.writerow(["Gen", "GT"]) # header
274
+ for first, second in zip(text_list, gt_list):
275
+ writer.writerow([first, second])
276
+
277
+ with open(mfpath, "r", encoding="utf-8") as fin:
278
+ data = [json.loads(line) for line in fin]
279
+ log.info(f"\n\nLoaded {len(data)} entries from {mfpath}")
280
+
281
+ references = []
282
+ predictions = []
283
+ from tqdm import tqdm
284
+ for entry in data: # Limit data if need
285
+ ref = entry['text']
286
+ audio_path = entry['audio_filepath']
287
+ with torch.no_grad():
288
+ pred = nemo_model.transcribe(audio_path, verbose=False)[0].text
289
+ # if use_norm:
290
+ # pred = normalize_text_vietnamese(pred)
291
+ references.append(ref)
292
+ predictions.append(pred)
293
+
294
+ # Computer wer
295
+ wer_score = wer(references, predictions)
296
+ log.info(f"WER: {wer_score}")
297
+
298
+ # Save pred
299
+ save_gen_list(text_list=predictions, gt_list=references)
300
+ return wer_score
test_conformer_10-15_07-53/conf_model.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ {'sample_rate': 16000, 'log_prediction': False, 'ctc_reduction': 'mean_batch', 'skip_nan_grad': False, 'wer': {'use_cer': True}, 'use_cer': True, 'train_ds': {'manifest_filepath': 'test_conformer/_train_mf.json', 'sample_rate': 16000, 'batch_size': 16, 'shuffle': True, 'num_workers': 8, 'pin_memory': True, 'max_duration': 30.44, 'min_duration': 0.1, 'is_tarred': False, 'tarred_audio_filepaths': None, 'shuffle_n': 2048, 'bucketing_strategy': 'synced_randomized', 'bucketing_batch_size': None}, 'validation_ds': {'manifest_filepath': 'test_conformer/_dev_mf.json', 'sample_rate': 16000, 'batch_size': 16, 'shuffle': False, 'use_start_end_token': False, 'num_workers': 8, 'pin_memory': True}, 'test_ds': {'manifest_filepath': 'v2_prepdata/out/test_300.json', 'sample_rate': 16000, 'batch_size': 16, 'shuffle': False, 'use_start_end_token': False, 'num_workers': 8, 'pin_memory': True}, 'tokenizer': {'dir': 'v2_prepdata/out/', 'type': 'wpe'}, 'preprocessor': {'_target_': 'nemo.collections.asr.modules.AudioToMelSpectrogramPreprocessor', 'sample_rate': 16000, 'normalize': 'per_feature', 'window_size': 0.025, 'window_stride': 0.01, 'window': 'hann', 'features': 80, 'n_fft': 512, 'log': True, 'frame_splicing': 1, 'dither': 1e-05, 'pad_to': 0, 'pad_value': 0.0}, 'spec_augment': {'_target_': 'nemo.collections.asr.modules.SpectrogramAugmentation', 'freq_masks': 2, 'time_masks': 5, 'freq_width': 27, 'time_width': 0.05}, 'encoder': {'_target_': 'nemo.collections.asr.modules.ConformerEncoder', 'feat_in': 80, 'feat_out': -1, 'n_layers': 16, 'd_model': 176, 'subsampling': 'striding', 'subsampling_factor': 4, 'subsampling_conv_channels': -1, 'causal_downsampling': False, 'ff_expansion_factor': 4, 'self_attention_model': 'rel_pos', 'n_heads': 4, 'att_context_size': [-1, -1], 'att_context_style': 'regular', 'xscaling': True, 'untie_biases': True, 'pos_emb_max_len': 5000, 'conv_kernel_size': 31, 'conv_norm_type': 'batch_norm', 'conv_context_size': None, 'dropout': 0.1, 'dropout_pre_encoder': 0.1, 'dropout_emb': 0.0, 'dropout_att': 0.1, 'stochastic_depth_drop_prob': 0.0, 'stochastic_depth_mode': 'linear', 'stochastic_depth_start_layer': 1}, 'decoder': {'_target_': 'nemo.collections.asr.modules.ConvASRDecoder', 'feat_in': None, 'num_classes': -1, 'vocabulary': []}, 'interctc': {'loss_weights': [], 'apply_at_layers': []}, 'optim': {'name': 'adamw', 'lr': 5.0, 'betas': [0.9, 0.98], 'weight_decay': 0.0, 'sched': {'name': 'NoamAnnealing', 'd_model': 176, 'warmup_steps': 10000, 'warmup_ratio': None, 'min_lr': 1e-06}}}
test_conformer_10-15_07-53/git_pip_env.txt ADDED
@@ -0,0 +1,878 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ eb31208 try conformer
2
+ Author date: 2025-10-15 14:38:28 +0700
3
+ Commit date: 2025-10-15 14:38:28 +0700
4
+ Python 3.11.11
5
+
6
+ absl-py==1.4.0
7
+ accelerate==1.5.2
8
+ aiofiles==22.1.0
9
+ aiohappyeyeballs==2.6.1
10
+ aiohttp==3.11.18
11
+ aiosignal==1.3.2
12
+ aiosqlite==0.21.0
13
+ alabaster==1.0.0
14
+ albucore==0.0.23
15
+ albumentations==2.0.5
16
+ ale-py==0.10.2
17
+ alembic==1.15.2
18
+ altair==5.5.0
19
+ annotated-types==0.7.0
20
+ annoy==1.17.3
21
+ ansicolors==1.1.8
22
+ antlr4-python3-runtime==4.9.3
23
+ anyio==4.9.0
24
+ argon2-cffi==23.1.0
25
+ argon2-cffi-bindings==21.2.0
26
+ args==0.1.0
27
+ array_record==0.7.1
28
+ arrow==1.3.0
29
+ arviz==0.21.0
30
+ astropy==7.0.1
31
+ astropy-iers-data==0.2025.3.31.0.36.18
32
+ asttokens==3.0.0
33
+ astunparse==1.6.3
34
+ atpublic==5.1
35
+ attrs==25.3.0
36
+ audioread==3.0.1
37
+ autograd==1.7.0
38
+ babel==2.17.0
39
+ backcall==0.2.0
40
+ bayesian-optimization==2.0.3
41
+ beartype==0.20.2
42
+ beautifulsoup4==4.13.3
43
+ betterproto==2.0.0b6
44
+ bigframes==1.42.0
45
+ bigquery-magics==0.9.0
46
+ bitsandbytes==0.46.0
47
+ bleach==6.2.0
48
+ blinker==1.9.0
49
+ blis==1.2.1
50
+ blobfile==3.0.0
51
+ blosc2==3.2.1
52
+ bokeh==3.6.3
53
+ Boruta==0.4.3
54
+ boto3==1.38.11
55
+ botocore==1.38.11
56
+ Bottleneck==1.4.2
57
+ -e git+https://github.com/SohierDane/BigQuery_Helper@8615a7f6c1663e7f2d48aa2b32c2dbcb600a440f#egg=bq_helper
58
+ bqplot==0.12.44
59
+ braceexpand==0.1.7
60
+ branca==0.8.1
61
+ CacheControl==0.14.2
62
+ cachetools==5.5.2
63
+ Cartopy==0.24.1
64
+ catalogue==2.0.10
65
+ catboost==1.2.8
66
+ category_encoders==2.7.0
67
+ certifi==2025.4.26
68
+ cesium==0.12.4
69
+ cffi==1.17.1
70
+ chardet==5.2.0
71
+ charset-normalizer==3.4.2
72
+ Chessnut==0.4.1
73
+ chex==0.1.89
74
+ clarabel==0.10.0
75
+ click==8.1.8
76
+ click-plugins==1.1.1
77
+ cligj==0.7.2
78
+ clint==0.5.1
79
+ cloudpathlib==0.21.0
80
+ cloudpickle==3.1.1
81
+ cmake==3.31.6
82
+ cmdstanpy==1.2.5
83
+ colorama==0.4.6
84
+ colorcet==3.1.0
85
+ colorlog==6.9.0
86
+ colorlover==0.3.0
87
+ colour==0.1.5
88
+ comm==0.2.2
89
+ community==1.0.0b1
90
+ confection==0.1.5
91
+ cons==0.4.6
92
+ contourpy==1.3.1
93
+ coverage==7.8.0
94
+ cramjam==2.9.1
95
+ cryptography==44.0.3
96
+ cuda-bindings==12.9.0
97
+ cuda-python==12.9.0
98
+ cudf-cu12==25.2.2
99
+ cudf-polars-cu12==25.2.2
100
+ cufflinks==0.17.3
101
+ cuml-cu12==25.2.1
102
+ cupy-cuda12x==13.4.1
103
+ cuvs-cu12==25.2.1
104
+ cvxopt==1.3.2
105
+ cvxpy==1.6.4
106
+ cycler==0.12.1
107
+ cyipopt==1.5.0
108
+ cymem==2.0.11
109
+ Cython==3.0.12
110
+ cytoolz==1.0.1
111
+ daal==2025.5.0
112
+ dacite==1.9.2
113
+ dask==2024.12.1
114
+ dask-cuda==25.2.0
115
+ dask-cudf-cu12==25.2.2
116
+ dask-expr==1.1.21
117
+ dataclasses-json==0.6.7
118
+ datascience==0.17.6
119
+ datasets==3.6.0
120
+ db-dtypes==1.4.2
121
+ dbus-python==1.2.18
122
+ deap==1.4.3
123
+ debugpy==1.8.0
124
+ decorator==4.4.2
125
+ deepdiff==8.4.2
126
+ defusedxml==0.7.1
127
+ Deprecated==1.2.18
128
+ diffusers==0.32.2
129
+ dill==0.3.8
130
+ dipy==1.11.0
131
+ distributed==2024.12.1
132
+ distributed-ucxx-cu12==0.42.0
133
+ distro==1.9.0
134
+ dlib==19.24.6
135
+ dm-tree==0.1.9
136
+ dnspython==2.7.0
137
+ docker==7.1.0
138
+ docker-pycreds==0.4.0
139
+ docopt==0.6.2
140
+ docstring-to-markdown==0.17
141
+ docstring_parser==0.16
142
+ docutils==0.21.2
143
+ dopamine_rl==4.1.2
144
+ duckdb==1.2.1
145
+ earthengine-api==1.5.9
146
+ easydict==1.13
147
+ easyocr==1.7.2
148
+ editdistance==0.8.1
149
+ eerepr==0.1.1
150
+ einops==0.8.1
151
+ eli5==0.13.0
152
+ email_validator==2.2.0
153
+ emoji==2.14.1
154
+ en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl#sha256=1932429db727d4bff3deed6b34cfc05df17794f4a52eeb26cf8928f7c1a0fb85
155
+ entrypoints==0.4
156
+ et_xmlfile==2.0.0
157
+ etils==1.12.2
158
+ etuples==0.3.9
159
+ execnb==0.1.14
160
+ Farama-Notifications==0.0.4
161
+ fastai==2.7.19
162
+ fastcore==1.7.29
163
+ fastdownload==0.0.7
164
+ fastjsonschema==2.21.1
165
+ fastprogress==1.0.3
166
+ fastrlock==0.8.3
167
+ fasttext==0.9.3
168
+ featuretools==1.31.0
169
+ fiddle==0.3.0
170
+ filelock==3.18.0
171
+ fiona==1.10.1
172
+ firebase-admin==6.7.0
173
+ Flask==3.1.0
174
+ flatbuffers==25.2.10
175
+ flax==0.10.5
176
+ folium==0.19.5
177
+ fonttools==4.57.0
178
+ fqdn==1.5.1
179
+ frozendict==2.4.6
180
+ frozenlist==1.6.0
181
+ fsspec==2024.12.0
182
+ funcy==2.0
183
+ fury==0.12.0
184
+ future==1.0.0
185
+ fuzzywuzzy==0.18.0
186
+ gast==0.6.0
187
+ gatspy==0.3
188
+ gcsfs==2025.3.2
189
+ GDAL==3.6.4
190
+ gdown==5.2.0
191
+ geemap==0.35.3
192
+ gensim==4.3.3
193
+ geocoder==1.38.1
194
+ geographiclib==2.0
195
+ geojson==3.2.0
196
+ geopandas==0.14.4
197
+ geopy==2.4.1
198
+ ghapi==1.0.6
199
+ gin-config==0.5.0
200
+ gitdb==4.0.12
201
+ GitPython==3.1.44
202
+ glob2==0.7
203
+ google==2.0.3
204
+ google-ai-generativelanguage==0.6.15
205
+ google-api-core==1.34.1
206
+ google-api-python-client==2.164.0
207
+ google-auth==2.40.1
208
+ google-auth-httplib2==0.2.0
209
+ google-auth-oauthlib==1.2.1
210
+ google-cloud-aiplatform==1.87.0
211
+ google-cloud-automl==1.0.1
212
+ google-cloud-bigquery==3.25.0
213
+ google-cloud-bigquery-connection==1.18.2
214
+ google-cloud-bigtable==2.30.0
215
+ google-cloud-core==2.4.3
216
+ google-cloud-dataproc==5.18.1
217
+ google-cloud-datastore==2.20.2
218
+ google-cloud-firestore==2.20.1
219
+ google-cloud-functions==1.20.2
220
+ google-cloud-iam==2.18.3
221
+ google-cloud-language==2.17.1
222
+ google-cloud-pubsub==2.29.0
223
+ google-cloud-resource-manager==1.14.2
224
+ google-cloud-spanner==3.53.0
225
+ google-cloud-storage==2.19.0
226
+ google-cloud-translate==3.12.1
227
+ google-cloud-videointelligence==2.16.1
228
+ google-cloud-vision==3.10.1
229
+ google-colab @ file:///colabtools/dist/google_colab-1.0.0.tar.gz
230
+ google-crc32c==1.7.1
231
+ google-genai==1.9.0
232
+ google-generativeai==0.8.4
233
+ google-pasta==0.2.0
234
+ google-resumable-media==2.7.2
235
+ google-spark-connect==0.5.2
236
+ googleapis-common-protos==1.70.0
237
+ googledrivedownloader==1.1.0
238
+ gpxpy==1.6.2
239
+ graphviz==0.20.3
240
+ greenlet==3.1.1
241
+ grpc-google-iam-v1==0.14.2
242
+ grpc-interceptor==0.15.4
243
+ grpcio==1.72.0rc1
244
+ grpcio-status==1.49.0rc1
245
+ grpclib==0.4.8
246
+ gspread==6.2.0
247
+ gspread-dataframe==4.0.0
248
+ gym==0.25.2
249
+ gym-notices==0.0.8
250
+ gymnasium==0.29.0
251
+ h11==0.14.0
252
+ h2==4.2.0
253
+ h2o==3.46.0.7
254
+ h5netcdf==1.6.1
255
+ h5py==3.13.0
256
+ haversine==2.9.0
257
+ hdbscan==0.8.40
258
+ hep_ml==0.7.3
259
+ hf-xet==1.1.0
260
+ hf_transfer==0.1.9
261
+ highspy==1.9.0
262
+ holidays==0.69
263
+ holoviews==1.20.2
264
+ hpack==4.1.0
265
+ html5lib==1.1
266
+ htmlmin==0.1.12
267
+ httpcore==1.0.7
268
+ httpimport==1.4.1
269
+ httplib2==0.22.0
270
+ httpx==0.28.1
271
+ huggingface-hub==0.31.1
272
+ humanize==4.12.2
273
+ hydra-core==1.3.2
274
+ hyperframe==6.1.0
275
+ hyperopt==0.2.7
276
+ ibis-framework==9.5.0
277
+ id==1.5.0
278
+ idna==3.10
279
+ igraph==0.11.8
280
+ ImageHash==4.3.1
281
+ imageio==2.37.0
282
+ imageio-ffmpeg==0.6.0
283
+ imagesize==1.4.1
284
+ imbalanced-learn==0.13.0
285
+ immutabledict==4.2.1
286
+ importlib_metadata==8.7.0
287
+ importlib_resources==6.5.2
288
+ imutils==0.5.4
289
+ in-toto-attestation==0.9.3
290
+ indic_numtowords==1.1.0
291
+ inflect==7.5.0
292
+ iniconfig==2.1.0
293
+ intel-cmplr-lib-rt==2024.2.0
294
+ intel-cmplr-lib-ur==2024.2.0
295
+ intel-openmp==2024.2.0
296
+ intervaltree==3.1.0
297
+ ipyevents==2.0.2
298
+ ipyfilechooser==0.6.0
299
+ ipykernel==6.17.1
300
+ ipyleaflet==0.19.2
301
+ ipympl==0.9.7
302
+ ipyparallel==8.8.0
303
+ ipython==7.34.0
304
+ ipython-genutils==0.2.0
305
+ ipython-sql==0.5.0
306
+ ipytree==0.2.2
307
+ ipywidgets==8.1.5
308
+ isoduration==20.11.0
309
+ isoweek==1.3.3
310
+ itsdangerous==2.2.0
311
+ Janome==0.5.0
312
+ jax==0.5.2
313
+ jax-cuda12-pjrt==0.5.1
314
+ jax-cuda12-plugin==0.5.1
315
+ jaxlib==0.5.1
316
+ jedi==0.19.2
317
+ jeepney==0.7.1
318
+ jellyfish==1.1.0
319
+ jieba==0.42.1
320
+ Jinja2==3.1.6
321
+ jiter==0.9.0
322
+ jiwer==3.1.0
323
+ jmespath==1.0.1
324
+ joblib==1.5.0
325
+ json5==0.12.0
326
+ jsonpatch==1.33
327
+ jsonpickle==4.0.5
328
+ jsonpointer==3.0.0
329
+ jsonschema==4.23.0
330
+ jsonschema-specifications==2024.10.1
331
+ jupyter-console==6.1.0
332
+ jupyter-events==0.12.0
333
+ jupyter-leaflet==0.19.2
334
+ jupyter-lsp==1.5.1
335
+ jupyter-ydoc==0.2.5
336
+ jupyter_client==8.6.3
337
+ jupyter_core==5.7.2
338
+ jupyter_server==2.12.5
339
+ jupyter_server_fileid==0.9.3
340
+ jupyter_server_terminals==0.5.3
341
+ jupyter_server_ydoc==0.8.0
342
+ jupyterlab==3.6.8
343
+ jupyterlab-lsp==3.10.2
344
+ jupyterlab_pygments==0.3.0
345
+ jupyterlab_server==2.27.3
346
+ jupyterlab_widgets==3.0.13
347
+ kaggle==1.7.4.2
348
+ kaggle-environments==1.16.11
349
+ kagglehub==0.3.12
350
+ kaldi-python-io==1.2.2
351
+ keras==3.8.0
352
+ keras-core==0.1.7
353
+ keras-cv==0.9.0
354
+ keras-hub==0.18.1
355
+ keras-nlp==0.18.1
356
+ keras-tuner==1.4.7
357
+ keyring==23.5.0
358
+ kiwisolver==1.4.8
359
+ kornia==0.8.1
360
+ kornia_rs==0.1.9
361
+ kt-legacy==1.0.5
362
+ langchain==0.3.22
363
+ langchain-core==0.3.50
364
+ langchain-text-splitters==0.3.7
365
+ langcodes==3.5.0
366
+ langid==1.1.6
367
+ langsmith==0.3.23
368
+ language_data==1.3.0
369
+ launchpadlib==1.10.16
370
+ lazr.restfulclient==0.14.4
371
+ lazr.uri==1.0.6
372
+ lazy_loader==0.4
373
+ learntools @ git+https://github.com/Kaggle/learntools@9188cafa2795c2cb720981631280853a7e55649c
374
+ Levenshtein==0.27.1
375
+ lhotse==1.31.1
376
+ libclang==18.1.1
377
+ libcst==1.8.5
378
+ libcudf-cu12==25.2.2
379
+ libcugraph-cu12==25.2.0
380
+ libcuml-cu12==25.2.1
381
+ libcuvs-cu12==25.2.1
382
+ libkvikio-cu12==25.2.1
383
+ libpysal==4.9.2
384
+ libraft-cu12==25.2.0
385
+ librosa==0.11.0
386
+ libucx-cu12==1.18.1
387
+ libucxx-cu12==0.42.0
388
+ lightgbm @ file:///tmp/lightgbm/lightgbm-4.6.0-py3-none-linux_x86_64.whl
389
+ lightning==2.4.0
390
+ lightning-utilities==0.14.3
391
+ lilcom==1.8.1
392
+ lime==0.2.0.1
393
+ line_profiler==4.2.0
394
+ linkify-it-py==2.0.3
395
+ llvmlite==0.43.0
396
+ lml==0.2.0
397
+ locket==1.0.0
398
+ logical-unification==0.4.6
399
+ loguru==0.7.3
400
+ lxml==5.3.1
401
+ Mako==1.3.10
402
+ mamba==0.11.3
403
+ marisa-trie==1.2.1
404
+ Markdown==3.7
405
+ markdown-it-py==3.0.0
406
+ MarkupSafe==3.0.2
407
+ marshmallow==3.26.1
408
+ matplotlib==3.7.2
409
+ matplotlib-inline==0.1.7
410
+ matplotlib-venn==1.1.2
411
+ mdit-py-plugins==0.4.2
412
+ mdurl==0.1.2
413
+ mediapy==1.1.6
414
+ miniKanren==1.0.3
415
+ missingno==0.5.2
416
+ mistune==0.8.4
417
+ mizani==0.13.2
418
+ mkl==2025.1.0
419
+ mkl-fft==1.3.8
420
+ mkl-random==1.2.4
421
+ mkl-service==2.4.1
422
+ mkl-umath==0.1.1
423
+ ml-dtypes==0.4.1
424
+ mlcrate==0.2.0
425
+ mlxtend==0.23.4
426
+ mne==1.9.0
427
+ model-signing==1.0.1
428
+ more-itertools==10.6.0
429
+ moviepy==1.0.3
430
+ mpld3==0.5.10
431
+ mpmath==1.3.0
432
+ msgpack==1.1.0
433
+ multidict==6.4.3
434
+ multimethod==1.12
435
+ multipledispatch==1.0.0
436
+ multiprocess==0.70.16
437
+ multitasking==0.0.11
438
+ murmurhash==1.0.12
439
+ music21==9.3.0
440
+ mypy_extensions==1.1.0
441
+ namex==0.0.8
442
+ narwhals==1.33.0
443
+ natsort==8.4.0
444
+ nbclassic==1.2.0
445
+ nbclient==0.5.13
446
+ nbconvert==6.4.5
447
+ nbdev==2.3.36
448
+ nbformat==5.10.4
449
+ ndindex==1.9.2
450
+ nemo-toolkit==2.5.0
451
+ nest-asyncio==1.6.0
452
+ networkx==3.4.2
453
+ nibabel==5.3.2
454
+ nilearn==0.10.4
455
+ ninja==1.11.1.4
456
+ nltk==3.9.1
457
+ notebook==6.5.4
458
+ notebook_shim==0.2.4
459
+ num2words==0.5.14
460
+ numba==0.60.0
461
+ numba-cuda==0.2.0
462
+ numexpr==2.10.2
463
+ numpy==1.26.4
464
+ nvidia-cublas-cu12==12.4.5.8
465
+ nvidia-cuda-cupti-cu12==12.4.127
466
+ nvidia-cuda-nvcc-cu12==12.5.82
467
+ nvidia-cuda-nvrtc-cu12==12.4.127
468
+ nvidia-cuda-runtime-cu12==12.4.127
469
+ nvidia-cudnn-cu12==9.1.0.70
470
+ nvidia-cufft-cu12==11.2.1.3
471
+ nvidia-curand-cu12==10.3.5.147
472
+ nvidia-cusolver-cu12==11.6.1.9
473
+ nvidia-cusparse-cu12==12.3.1.170
474
+ nvidia-cusparselt-cu12==0.6.2
475
+ nvidia-ml-py==12.575.51
476
+ nvidia-nccl-cu12==2.21.5
477
+ nvidia-nvcomp-cu12==4.2.0.11
478
+ nvidia-nvjitlink-cu12==12.4.127
479
+ nvidia-nvtx-cu12==12.4.127
480
+ nvtx==0.2.11
481
+ nx-cugraph-cu12 @ https://pypi.nvidia.com/nx-cugraph-cu12/nx_cugraph_cu12-25.2.0-py3-none-any.whl
482
+ oauth2client==4.1.3
483
+ oauthlib==3.2.2
484
+ odfpy==1.4.1
485
+ olefile==0.47
486
+ omegaconf==2.3.0
487
+ onnx==1.17.0
488
+ openai==1.70.0
489
+ opencv-contrib-python==4.11.0.86
490
+ opencv-python==4.11.0.86
491
+ opencv-python-headless==4.11.0.86
492
+ openpyxl==3.1.5
493
+ openslide-bin==4.0.0.8
494
+ openslide-python==1.4.2
495
+ opentelemetry-api==1.31.1
496
+ opentelemetry-sdk==1.31.1
497
+ opentelemetry-semantic-conventions==0.52b1
498
+ opt_einsum==3.4.0
499
+ optax==0.2.4
500
+ optree==0.14.1
501
+ optuna==4.3.0
502
+ orbax-checkpoint==0.11.10
503
+ orderly-set==5.4.1
504
+ orjson==3.10.16
505
+ osqp==1.0.3
506
+ overrides==7.7.0
507
+ packaging==24.2
508
+ pandas==2.2.3
509
+ pandas-datareader==0.10.0
510
+ pandas-gbq==0.28.0
511
+ pandas-profiling==3.6.6
512
+ pandas-stubs==2.2.2.240909
513
+ pandasql==0.7.3
514
+ pandocfilters==1.5.1
515
+ panel==1.6.2
516
+ papermill==2.6.0
517
+ param==2.2.0
518
+ parso==0.8.4
519
+ parsy==2.1
520
+ partd==1.4.2
521
+ path==17.1.0
522
+ path.py==12.5.0
523
+ pathlib==1.0.1
524
+ pathos==0.3.2
525
+ patsy==1.0.1
526
+ pdf2image==1.17.0
527
+ peewee==3.17.9
528
+ peft==0.14.0
529
+ pettingzoo==1.24.0
530
+ pexpect==4.9.0
531
+ phik==0.12.4
532
+ pickleshare==0.7.5
533
+ pillow==11.1.0
534
+ plac==1.4.5
535
+ platformdirs==4.3.8
536
+ plotly==5.24.1
537
+ plotly-express==0.4.1
538
+ plotnine==0.14.5
539
+ pluggy==1.5.0
540
+ plum-dispatch==2.5.7
541
+ ply==3.11
542
+ polars==1.21.0
543
+ pooch==1.8.2
544
+ portpicker==1.5.2
545
+ pox==0.3.6
546
+ ppft==1.7.7
547
+ preprocessing==0.1.13
548
+ preshed==3.0.9
549
+ prettytable==3.16.0
550
+ proglog==0.1.11
551
+ progressbar2==4.5.0
552
+ prometheus_client==0.21.1
553
+ promise==2.3
554
+ prompt_toolkit==3.0.50
555
+ propcache==0.3.1
556
+ prophet==1.1.6
557
+ proto-plus==1.26.1
558
+ protobuf==5.29.5
559
+ psutil==7.0.0
560
+ psycopg2==2.9.10
561
+ ptyprocess==0.7.0
562
+ pudb==2025.1
563
+ puremagic==1.29
564
+ py-cpuinfo==9.0.0
565
+ py4j==0.10.9.7
566
+ pyaml==25.1.0
567
+ pyannote.core==5.0.0
568
+ pyannote.database==5.1.3
569
+ pyannote.metrics==3.2.1
570
+ PyArabic==0.6.15
571
+ pyarrow==19.0.1
572
+ pyasn1==0.6.1
573
+ pyasn1_modules==0.4.2
574
+ pybind11==2.13.6
575
+ pycairo==1.27.0
576
+ pyclipper==1.3.0.post6
577
+ pycocotools==2.0.8
578
+ pycparser==2.22
579
+ pycryptodome==3.22.0
580
+ pycryptodomex==3.22.0
581
+ pycuda==2025.1
582
+ pydantic==2.11.4
583
+ pydantic_core==2.33.2
584
+ pydata-google-auth==1.9.1
585
+ pydegensac==0.1.2
586
+ pydicom==3.0.1
587
+ pydot==3.0.4
588
+ pydotplus==2.0.2
589
+ PyDrive==1.3.1
590
+ PyDrive2==1.21.3
591
+ pydub==0.25.1
592
+ pyemd==1.0.0
593
+ pyerfa==2.0.1.5
594
+ pyexcel-io==0.6.7
595
+ pyexcel-ods==0.6.0
596
+ pygame==2.6.1
597
+ pygit2==1.17.0
598
+ pygltflib==1.16.4
599
+ Pygments==2.19.1
600
+ PyGObject==3.42.0
601
+ PyJWT==2.10.1
602
+ pyLDAvis==3.4.1
603
+ pylibcudf-cu12==25.2.2
604
+ pylibcugraph-cu12==25.2.0
605
+ pylibraft-cu12==25.2.0
606
+ pyloudnorm==0.1.1
607
+ pymc==5.21.2
608
+ pymc3==3.11.4
609
+ pymongo==4.12.1
610
+ Pympler==1.1
611
+ pymystem3==0.2.0
612
+ pynndescent==0.5.13
613
+ pynvjitlink-cu12==0.5.2
614
+ pynvml==12.0.0
615
+ pyogrio==0.10.0
616
+ Pyomo==6.8.2
617
+ PyOpenGL==3.1.9
618
+ pyOpenSSL==25.0.0
619
+ pyparsing==3.0.9
620
+ pypdf==5.4.0
621
+ pyperclip==1.9.0
622
+ pyproj==3.7.1
623
+ pyshp==2.3.1
624
+ PySocks==1.7.1
625
+ pyspark==3.5.5
626
+ pytensor==2.30.2
627
+ pytesseract==0.3.13
628
+ pytest==8.3.5
629
+ python-apt==0.0.0
630
+ python-bidi==0.6.6
631
+ python-box==7.3.2
632
+ python-dateutil==2.9.0.post0
633
+ python-dotenv==1.1.1
634
+ python-json-logger==3.3.0
635
+ python-louvain==0.16
636
+ python-lsp-jsonrpc==1.1.2
637
+ python-lsp-server==1.12.2
638
+ python-slugify==8.0.4
639
+ python-snappy==0.7.3
640
+ python-utils==3.9.1
641
+ pytools==2025.1.3
642
+ pytorch-ignite==0.5.2
643
+ pytorch-lightning==2.5.1.post0
644
+ pytz==2025.2
645
+ PyUpSet==0.1.1.post7
646
+ pyviz_comms==3.0.4
647
+ PyWavelets==1.8.0
648
+ PyYAML==6.0.2
649
+ pyzmq==24.0.1
650
+ qgrid==1.3.1
651
+ qtconsole==5.6.1
652
+ QtPy==2.4.3
653
+ raft-dask-cu12==25.2.0
654
+ RapidFuzz==3.14.1
655
+ rapids-dask-dependency==25.2.0
656
+ ratelim==0.1.6
657
+ ray==2.46.0
658
+ referencing==0.36.2
659
+ regex==2024.11.6
660
+ requests==2.32.3
661
+ requests-oauthlib==2.0.0
662
+ requests-toolbelt==1.0.0
663
+ requirements-parser==0.9.0
664
+ resampy==0.4.3
665
+ rfc3161-client==1.0.1
666
+ rfc3339-validator==0.1.4
667
+ rfc3986-validator==0.1.1
668
+ rfc8785==0.1.4
669
+ rgf-python==3.12.0
670
+ rich==14.0.0
671
+ rmm-cu12==25.2.0
672
+ roman-numerals-py==3.1.0
673
+ rpds-py==0.24.0
674
+ rpy2==3.5.17
675
+ rsa==4.9.1
676
+ rtree==1.4.0
677
+ ruamel.yaml==0.18.15
678
+ ruamel.yaml.clib==0.2.14
679
+ s3fs==0.4.2
680
+ s3transfer==0.12.0
681
+ sacremoses==0.1.1
682
+ safetensors==0.5.3
683
+ scikit-image==0.25.2
684
+ scikit-learn==1.2.2
685
+ scikit-learn-intelex==2025.5.0
686
+ scikit-multilearn==0.2.0
687
+ scikit-optimize==0.10.2
688
+ scikit-plot==0.3.7
689
+ scikit-surprise==1.1.4
690
+ scipy==1.15.2
691
+ scooby==0.10.0
692
+ scs==3.2.7.post2
693
+ seaborn==0.12.2
694
+ SecretStorage==3.3.1
695
+ securesystemslib==1.3.0
696
+ segment_anything @ git+https://github.com/facebookresearch/segment-anything.git@dca509fe793f601edb92606367a655c15ac00fdf
697
+ semver==3.0.4
698
+ Send2Trash==1.8.3
699
+ sentence-transformers==3.4.1
700
+ sentencepiece==0.2.0
701
+ sentry-sdk==2.25.1
702
+ setproctitle==1.3.5
703
+ setuptools-scm==8.3.1
704
+ shap==0.44.1
705
+ shapely==2.1.0
706
+ shellingham==1.5.4
707
+ Shimmy==1.3.0
708
+ sigstore==3.6.2
709
+ sigstore-protobuf-specs==0.3.2
710
+ sigstore-rekor-types==0.0.18
711
+ simple-parsing==0.1.7
712
+ simpleitk==2.5.0
713
+ simplejson==3.20.1
714
+ simsimd==6.2.1
715
+ siphash24==1.7
716
+ six==1.17.0
717
+ sklearn-compat==0.1.3
718
+ sklearn-pandas==2.2.0
719
+ slicer==0.0.7
720
+ smart-open==7.1.0
721
+ smmap==5.0.2
722
+ sniffio==1.3.1
723
+ snowballstemmer==2.2.0
724
+ sortedcontainers==2.4.0
725
+ soundfile==0.13.1
726
+ soupsieve==2.6
727
+ sox==1.5.0
728
+ soxr==0.5.0.post1
729
+ spacy==3.8.5
730
+ spacy-legacy==3.0.12
731
+ spacy-loggers==1.0.5
732
+ spanner-graph-notebook==1.1.6
733
+ Sphinx==8.2.3
734
+ sphinx-rtd-theme==0.2.4
735
+ sphinxcontrib-applehelp==2.0.0
736
+ sphinxcontrib-devhelp==2.0.0
737
+ sphinxcontrib-htmlhelp==2.1.0
738
+ sphinxcontrib-jsmath==1.0.1
739
+ sphinxcontrib-qthelp==2.0.0
740
+ sphinxcontrib-serializinghtml==2.0.0
741
+ SQLAlchemy==2.0.40
742
+ sqlglot==25.20.2
743
+ sqlparse==0.5.3
744
+ squarify==0.4.4
745
+ srsly==2.5.1
746
+ stable-baselines3==2.1.0
747
+ stanio==0.5.1
748
+ statsmodels==0.14.4
749
+ stopit==1.1.2
750
+ stringzilla==3.12.3
751
+ stumpy==1.13.0
752
+ sympy==1.13.1
753
+ tables==3.10.2
754
+ tabulate==0.9.0
755
+ tbb==2022.1.0
756
+ tbb4py==2022.1.0
757
+ tblib==3.1.0
758
+ tcmlib==1.3.0
759
+ tenacity==9.1.2
760
+ tensorboard==2.18.0
761
+ tensorboard-data-server==0.7.2
762
+ tensorflow==2.18.0
763
+ tensorflow-cloud==0.1.5
764
+ tensorflow-datasets==4.9.8
765
+ tensorflow-hub==0.16.1
766
+ tensorflow-io==0.37.1
767
+ tensorflow-io-gcs-filesystem==0.37.1
768
+ tensorflow-metadata==1.17.0
769
+ tensorflow-probability==0.25.0
770
+ tensorflow-text==2.18.1
771
+ tensorflow_decision_forests==1.11.0
772
+ tensorstore==0.1.73
773
+ termcolor==3.0.1
774
+ terminado==0.18.1
775
+ testpath==0.6.0
776
+ text-unidecode==1.3
777
+ textblob==0.19.0
778
+ texterrors==0.5.1
779
+ texttable==1.7.0
780
+ tf-slim==1.1.0
781
+ tf_keras==2.18.0
782
+ Theano==1.0.5
783
+ Theano-PyMC==1.1.2
784
+ thinc==8.3.4
785
+ threadpoolctl==3.6.0
786
+ tifffile==2025.3.30
787
+ tiktoken==0.9.0
788
+ timm==1.0.15
789
+ tinycss2==1.4.0
790
+ tokenizers==0.21.1
791
+ toml==0.10.2
792
+ toolz==1.0.0
793
+ torch @ https://download.pytorch.org/whl/cu124/torch-2.6.0%2Bcu124-cp311-cp311-linux_x86_64.whl
794
+ torchao==0.10.0
795
+ torchaudio @ https://download.pytorch.org/whl/cu124/torchaudio-2.6.0%2Bcu124-cp311-cp311-linux_x86_64.whl
796
+ torchdata==0.11.0
797
+ torchinfo==1.8.0
798
+ torchmetrics==1.7.1
799
+ torchsummary==1.5.1
800
+ torchtune==0.6.1
801
+ torchvision @ https://download.pytorch.org/whl/cu124/torchvision-0.21.0%2Bcu124-cp311-cp311-linux_x86_64.whl
802
+ tornado==6.4.2
803
+ TPOT==0.12.1
804
+ tqdm==4.67.1
805
+ traitlets==5.7.1
806
+ traittypes==0.2.1
807
+ transformers==4.53.3
808
+ treelite==4.4.1
809
+ treescope==0.1.9
810
+ triton==3.2.0
811
+ trx-python==0.3
812
+ tsfresh==0.21.0
813
+ tuf==6.0.0
814
+ tweepy==4.15.0
815
+ typeguard==4.4.2
816
+ typer==0.15.2
817
+ types-python-dateutil==2.9.0.20241206
818
+ types-pytz==2025.2.0.20250326
819
+ types-setuptools==78.1.0.20250329
820
+ typing-inspect==0.9.0
821
+ typing-inspection==0.4.0
822
+ typing_extensions==4.13.2
823
+ tzdata==2025.2
824
+ tzlocal==5.3.1
825
+ uc-micro-py==1.0.3
826
+ ucx-py-cu12==0.42.0
827
+ ucxx-cu12==0.42.0
828
+ ujson==5.10.0
829
+ umap-learn==0.5.7
830
+ umf==0.10.0
831
+ update-checker==0.18.0
832
+ uri-template==1.3.0
833
+ uritemplate==4.1.1
834
+ urllib3==2.4.0
835
+ urwid==3.0.2
836
+ urwid_readline==0.15.1
837
+ vega-datasets==0.9.0
838
+ visions==0.8.1
839
+ vtk==9.3.1
840
+ wadllib==1.3.6
841
+ Wand==0.6.13
842
+ wandb==0.19.9
843
+ wasabi==1.1.3
844
+ watchdog==6.0.0
845
+ wavio==0.0.9
846
+ wcwidth==0.2.13
847
+ weasel==0.4.1
848
+ webcolors==24.11.1
849
+ webdataset==1.0.2
850
+ webencodings==0.5.1
851
+ websocket-client==1.8.0
852
+ websockets==15.0.1
853
+ Werkzeug==3.1.3
854
+ wget==3.2
855
+ whisper_normalizer==0.1.12
856
+ widgetsnbextension==4.0.14
857
+ woodwork==0.31.0
858
+ wordcloud==1.9.4
859
+ wrapt==1.17.2
860
+ wurlitzer==3.1.1
861
+ xarray==2025.1.2
862
+ xarray-einstats==0.8.0
863
+ xgboost==2.0.3
864
+ xlrd==2.0.1
865
+ xvfbwrapper==0.2.13
866
+ xxhash==3.5.0
867
+ xyzservices==2025.1.0
868
+ y-py==0.6.2
869
+ yarl==1.20.0
870
+ ydata-profiling==4.16.1
871
+ ydf==0.9.0
872
+ yellowbrick==1.5
873
+ yfinance==0.2.55
874
+ ypy-websocket==0.8.4
875
+ zict==3.0.0
876
+ zipp==3.21.0
877
+ zstandard==0.23.0
878
+
test_conformer_10-15_07-53/model_avg.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:74968c063d914760e09e6968d247984902330fba46dbebdfc40d0e1558eea663
3
+ size 52385082
test_conformer_10-15_07-53/n1ybwmlu.csv ADDED
The diff for this file is too large to render. See raw diff
 
test_conformer_10-15_07-53/nemo_model_avg.nemo ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4639846bbd38855d4001d6eecf550e3d1955038d12914939257b9e1b4dc9c63f
3
+ size 52449280