From 502cad0984ce8080ef44355c0dfdc1a69709318b Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:10:05 +0530 Subject: [PATCH 1/9] notebooks --- notebooks/Custom_model_training.ipynb | 2 +- notebooks/Getting_started.ipynb | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/notebooks/Custom_model_training.ipynb b/notebooks/Custom_model_training.ipynb index 7c963c2..93c595c 100644 --- a/notebooks/Custom_model_training.ipynb +++ b/notebooks/Custom_model_training.ipynb @@ -82,7 +82,7 @@ "- `min_valid_minutes`: minimum validation in minutes. Validation is automatically selected from training set. (exclusive users).\n", "- `matching_function`: there are two types of mapping functions.\n", " - `one_to_one` : In this one clean file will only have one corresponding noisy file. For example Valentini datasets\n", - " - `one_to_many` : In this one clean file will only have one corresponding noisy file. For example DNS dataset.\n" + " - `one_to_many` : In this one clean file will only have one corresponding noisy file. For example MS-SNSD dataset.\n" ] }, { diff --git a/notebooks/Getting_started.ipynb b/notebooks/Getting_started.ipynb index ed47dae..eb680d5 100644 --- a/notebooks/Getting_started.ipynb +++ b/notebooks/Getting_started.ipynb @@ -302,7 +302,7 @@ "source": [ "Now there are two types of `matching_function`\n", "- `one_to_one` : In this one clean file will only have one corresponding noisy file. For example Valentini datasets\n", - "- `one_to_many` : In this one clean file will only have one corresponding noisy file. For example DNS dataset." + "- `one_to_many` : In this one clean file will only have one corresponding noisy file. For example MS-SNSD dataset." ] }, { @@ -479,7 +479,7 @@ "metadata": {}, "source": [ "### TL;DR\n", - "Calling the following command would train mayavoz Demucs model on DNS-2020 dataset.\n", + "Calling the following command would train mayavoz Demucs model on MS-SNSD dataset.\n", "\n", "```bash\n", "mayavoz-train \\\n", @@ -540,7 +540,7 @@ "mayavoz-train --cfg job \\\n", " model=Demucs \\\n", " Demucs.sampling_rate=16000 \\\n", - " dataset=DNS-2020\n", + " dataset=MS-SNSD\n", "\n", "```\n", "\n", @@ -562,7 +562,7 @@ "```bash\n", "mayavoz-train \\\n", " model=Demucs model.sampling_rate=16000 \\\n", - " dataset=DNS-2020\n", + " dataset=MS-SNSD\n", "\n", "```" ] @@ -570,9 +570,9 @@ ], "metadata": { "kernelspec": { - "display_name": "enhancer", + "display_name": "Python 3.8.13 ('enhancer')", "language": "python", - "name": "enhancer" + "name": "python3" }, "language_info": { "codemirror_mode": { From 18c95cf219335d9cf5fb7e7e09299b06cacd704d Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:10:29 +0530 Subject: [PATCH 2/9] cli --- .../cli/train_config/dataset/{DNS-2020.yaml => MS-SNSD.yaml} | 2 +- mayavoz/cli/train_config/dataset/{Vctk.yaml => Valentini.yaml} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename mayavoz/cli/train_config/dataset/{DNS-2020.yaml => MS-SNSD.yaml} (95%) rename mayavoz/cli/train_config/dataset/{Vctk.yaml => Valentini.yaml} (94%) diff --git a/mayavoz/cli/train_config/dataset/DNS-2020.yaml b/mayavoz/cli/train_config/dataset/MS-SNSD.yaml similarity index 95% rename from mayavoz/cli/train_config/dataset/DNS-2020.yaml rename to mayavoz/cli/train_config/dataset/MS-SNSD.yaml index 4be9d97..dbd7af7 100644 --- a/mayavoz/cli/train_config/dataset/DNS-2020.yaml +++ b/mayavoz/cli/train_config/dataset/MS-SNSD.yaml @@ -1,5 +1,5 @@ _target_: mayavoz.data.dataset.MayaDataset -name : dns-2020 +name : MS-SDSD root_dir : /Users/shahules/Myprojects/MS-SNSD duration : 2.0 sampling_rate: 16000 diff --git a/mayavoz/cli/train_config/dataset/Vctk.yaml b/mayavoz/cli/train_config/dataset/Valentini.yaml similarity index 94% rename from mayavoz/cli/train_config/dataset/Vctk.yaml rename to mayavoz/cli/train_config/dataset/Valentini.yaml index 584abe7..656b4c9 100644 --- a/mayavoz/cli/train_config/dataset/Vctk.yaml +++ b/mayavoz/cli/train_config/dataset/Valentini.yaml @@ -1,5 +1,5 @@ _target_: mayavoz.data.dataset.MayaDataset -name : vctk +name : Valentini root_dir : /scratch/c.sistc3/DS_10283_2791 duration : 4.5 stride : 2 From 9187a940e7e28a240374e8a1c2e80affcb143370 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:10:50 +0530 Subject: [PATCH 3/9] recipes --- recipes/DNS/DNS-2020/README.md | 15 --------------- recipes/MS-SNSD/MS-SNSD-20/README.md | 17 +++++++++++++++++ .../MS-SNSD-20}/cli/train.py | 0 .../MS-SNSD-20}/cli/train_config/config.yaml | 0 .../cli/train_config/dataset/DNS-2020.yaml | 2 +- .../cli/train_config/dataset/Vctk.yaml | 0 .../train_config/hyperparameters/default.yaml | 0 .../cli/train_config/mlflow/experiment.yaml | 0 .../cli/train_config/model/DCCRN.yaml | 0 .../cli/train_config/model/Demucs.yaml | 0 .../cli/train_config/model/WaveUnet.yaml | 0 .../cli/train_config/optimizer/Adam.yaml | 0 .../cli/train_config/trainer/default.yaml | 0 .../cli/train_config/trainer/fastrun_dev.yaml | 0 .../cli/train_config/dataset/DNS-2020.yaml | 2 +- recipes/Valentini-dataset/README.md | 2 +- 16 files changed, 20 insertions(+), 18 deletions(-) delete mode 100644 recipes/DNS/DNS-2020/README.md create mode 100644 recipes/MS-SNSD/MS-SNSD-20/README.md rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train.py (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/config.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/dataset/DNS-2020.yaml (95%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/dataset/Vctk.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/hyperparameters/default.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/mlflow/experiment.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/model/DCCRN.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/model/Demucs.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/model/WaveUnet.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/optimizer/Adam.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/trainer/default.yaml (100%) rename recipes/{DNS/DNS-2020 => MS-SNSD/MS-SNSD-20}/cli/train_config/trainer/fastrun_dev.yaml (100%) diff --git a/recipes/DNS/DNS-2020/README.md b/recipes/DNS/DNS-2020/README.md deleted file mode 100644 index ae58816..0000000 --- a/recipes/DNS/DNS-2020/README.md +++ /dev/null @@ -1,15 +0,0 @@ -### DNS Challenge's dataset - -The Deep Noise Suppression (DNS) Challenge is a single-channel speech enhancement -challenge organized by Microsoft, with a focus on real-time applications. -More info can be found on the [official page](https://dns-challenge.azurewebsites.net/). - -**References** -The challenge paper, [here](https://arxiv.org/abs/2001.08662). -```BibTex -@misc{DNSChallenge2020, -title={The INTERSPEECH 2020 Deep Noise Suppression Challenge: Datasets, Subjective Speech Quality and Testing Framework}, -author={Chandan K. A. Reddy and Ebrahim Beyrami and Harishchandra Dubey and Vishak Gopal and Roger Cheng and Ross Cutler and Sergiy Matusevych and Robert Aichner and Ashkan Aazami and Sebastian Braun and Puneet Rana and Sriram Srinivasan and Johannes Gehrke}, year={2020}, -doi=https://doi.org/10.48550/arXiv.2001.08662, -} -``` diff --git a/recipes/MS-SNSD/MS-SNSD-20/README.md b/recipes/MS-SNSD/MS-SNSD-20/README.md new file mode 100644 index 0000000..272d283 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/README.md @@ -0,0 +1,17 @@ +### Microsoft Scalable Noisy Speech Dataset (MS-SNSD) + + MS-SNSD is a speech datasetthat can scale to arbitrary sizes depending on the number of speakers, noise types, and Speech to Noise Ratio (SNR) levels desired. + +### Dataset download & setup +- Follow steps in the official repo [here](https://github.com/microsoft/MS-SNSD) to download and setup the dataset. + +**References** +```BibTex +@article{reddy2019scalable, + title={A Scalable Noisy Speech Dataset and Online Subjective Test Framework}, + author={Reddy, Chandan KA and Beyrami, Ebrahim and Pool, Jamie and Cutler, Ross and Srinivasan, Sriram and Gehrke, Johannes}, + journal={Proc. Interspeech 2019}, + pages={1816--1820}, + year={2019} +} +``` diff --git a/recipes/DNS/DNS-2020/cli/train.py b/recipes/MS-SNSD/MS-SNSD-20/cli/train.py similarity index 100% rename from recipes/DNS/DNS-2020/cli/train.py rename to recipes/MS-SNSD/MS-SNSD-20/cli/train.py diff --git a/recipes/DNS/DNS-2020/cli/train_config/config.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/config.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/dataset/DNS-2020.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml similarity index 95% rename from recipes/DNS/DNS-2020/cli/train_config/dataset/DNS-2020.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml index 5c67be2..6d97bee 100644 --- a/recipes/DNS/DNS-2020/cli/train_config/dataset/DNS-2020.yaml +++ b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml @@ -1,6 +1,6 @@ _target_: mayavoz.data.dataset.MayaDataset root_dir : /Users/shahules/Myprojects/MS-SNSD -name : dns-2020 +name : MS-SNSD duration : 2.0 sampling_rate: 16000 batch_size: 32 diff --git a/recipes/DNS/DNS-2020/cli/train_config/dataset/Vctk.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/dataset/Vctk.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/hyperparameters/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/hyperparameters/default.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/mlflow/experiment.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/mlflow/experiment.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/model/DCCRN.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/model/DCCRN.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/model/Demucs.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/model/Demucs.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/model/WaveUnet.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/model/WaveUnet.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/optimizer/Adam.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/optimizer/Adam.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/trainer/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/trainer/default.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml diff --git a/recipes/DNS/DNS-2020/cli/train_config/trainer/fastrun_dev.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml similarity index 100% rename from recipes/DNS/DNS-2020/cli/train_config/trainer/fastrun_dev.yaml rename to recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml index 5c67be2..6d97bee 100644 --- a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml +++ b/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml @@ -1,6 +1,6 @@ _target_: mayavoz.data.dataset.MayaDataset root_dir : /Users/shahules/Myprojects/MS-SNSD -name : dns-2020 +name : MS-SNSD duration : 2.0 sampling_rate: 16000 batch_size: 32 diff --git a/recipes/Valentini-dataset/README.md b/recipes/Valentini-dataset/README.md index 941a6a5..ba3d8bd 100644 --- a/recipes/Valentini-dataset/README.md +++ b/recipes/Valentini-dataset/README.md @@ -4,7 +4,7 @@ Clean and noisy parallel speech database. The database was designed to train and **References** ```BibTex -@misc{DNSChallenge2020, +@misc{ title={Noisy speech database for training speech enhancement algorithms and TTS models}, author={Valentini-Botinhao, Cassia}, year={2017}, doi=https://doi.org/10.7488/ds/2117, From 8b3bc6752954528ff7497bdcddba1eecccc38660 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:53:55 +0530 Subject: [PATCH 4/9] readme --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 20cf995..ab5130b 100644 --- a/README.md +++ b/README.md @@ -30,13 +30,15 @@ model("noisy_audio.wav") | Model | Dataset | STOI | PESQ | URL | | :---: | :---: | :---: | :---: | :---: | -| WaveUnet | Vctk-28spk | 0.836 | 2.78 | shahules786/mayavoz-waveunet-valentini-28spk | -| Demucs | Vctk-28spk | 0.961 | 2.56 | shahules786/mayavoz-demucs-valentini-28spk | -| DCCRN | Vctk-28spk | 0.724 | 2.55 | shahules786/mayavoz-dccrn-valentini-28spk | -| Demucs | DNS2020 (20hrs) | 0.56 | 1.26 | shahules786/mayavoz-demucs-dns2020-20hr | +| WaveUnet | Valentini-28spk | 0.836 | 2.78 | shahules786/mayavoz-waveunet-valentini-28spk | +| Demucs | Valentini-28spk | 0.961 | 2.56 | shahules786/mayavoz-demucs-valentini-28spk | +| DCCRN | Valentini-28spk | 0.724 | 2.55 | shahules786/mayavoz-dccrn-valentini-28spk | +| Demucs | MS-SNSD-20hrs | 0.56 | 1.26 | shahules786/mayavoz-demucs-ms-snsd-20 | Test scores are based on respective test set associated with train dataset. +**See [tutorials](/notebooks/) to train your custom model** + ## Installation Only Python 3.8+ is officially supported (though it might work with Python 3.7) From 612c022d246ab466c1b7f56a5918511a61cd0372 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:54:09 +0530 Subject: [PATCH 5/9] tests --- tests/utils_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils_test.py b/tests/utils_test.py index 2b3e7a4..364469a 100644 --- a/tests/utils_test.py +++ b/tests/utils_test.py @@ -36,7 +36,7 @@ def test_fileprocessor_vctk(): assert len(matching_dict) == 2 -@pytest.mark.parametrize("dataset_name", ["vctk", "dns-2020"]) +@pytest.mark.parametrize("dataset_name", ["vctk", "MS-SNSD"]) def test_fileprocessor_names(dataset_name): fp = Fileprocessor.from_name(dataset_name, "clean_dir", "noisy_dir") assert hasattr(fp.matching_function, "__call__") From 2de2c715ed9bde570f7450d07c3868e650d3de64 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:54:27 +0530 Subject: [PATCH 6/9] rename dataset --- mayavoz/data/fileprocessor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mayavoz/data/fileprocessor.py b/mayavoz/data/fileprocessor.py index 9f6fbe5..cb1e275 100644 --- a/mayavoz/data/fileprocessor.py +++ b/mayavoz/data/fileprocessor.py @@ -95,7 +95,7 @@ class Fileprocessor: if matching_function is None: if name.lower() in ("vctk", "valentini"): return cls(clean_dir, noisy_dir, ProcessorFunctions.one_to_one) - elif name.lower() == "dns-2020": + elif name.lower() == "ms-snsd": return cls(clean_dir, noisy_dir, ProcessorFunctions.one_to_many) else: raise ValueError( From 249c535921f9b12843e03d143240d1a5b94ad472 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:57:04 +0530 Subject: [PATCH 7/9] rmv cli --- recipes/Valentini-dataset/28spk/cli/train.py | 120 ------------------ .../28spk/cli/train_config/config.yaml | 7 - .../cli/train_config/dataset/DNS-2020.yaml | 12 -- .../28spk/cli/train_config/dataset/Vctk.yaml | 13 -- .../train_config/hyperparameters/default.yaml | 7 - .../cli/train_config/mlflow/experiment.yaml | 2 - .../28spk/cli/train_config/model/DCCRN.yaml | 25 ---- .../28spk/cli/train_config/model/Demucs.yaml | 16 --- .../cli/train_config/model/WaveUnet.yaml | 5 - .../cli/train_config/optimizer/Adam.yaml | 6 - .../cli/train_config/trainer/default.yaml | 46 ------- .../cli/train_config/trainer/fastrun_dev.yaml | 2 - 12 files changed, 261 deletions(-) delete mode 100644 recipes/Valentini-dataset/28spk/cli/train.py delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/config.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/dataset/Vctk.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/hyperparameters/default.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/mlflow/experiment.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/model/DCCRN.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/model/Demucs.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/model/WaveUnet.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/optimizer/Adam.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/trainer/default.yaml delete mode 100644 recipes/Valentini-dataset/28spk/cli/train_config/trainer/fastrun_dev.yaml diff --git a/recipes/Valentini-dataset/28spk/cli/train.py b/recipes/Valentini-dataset/28spk/cli/train.py deleted file mode 100644 index c00c024..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train.py +++ /dev/null @@ -1,120 +0,0 @@ -import os -from types import MethodType - -import hydra -from hydra.utils import instantiate -from omegaconf import DictConfig, OmegaConf -from pytorch_lightning.callbacks import ( - EarlyStopping, - LearningRateMonitor, - ModelCheckpoint, -) -from pytorch_lightning.loggers import MLFlowLogger -from torch.optim.lr_scheduler import ReduceLROnPlateau - -# from torch_audiomentations import Compose, Shift - -os.environ["HYDRA_FULL_ERROR"] = "1" -JOB_ID = os.environ.get("SLURM_JOBID", "0") - - -@hydra.main(config_path="train_config", config_name="config") -def main(config: DictConfig): - - OmegaConf.save(config, "config_log.yaml") - - callbacks = [] - logger = MLFlowLogger( - experiment_name=config.mlflow.experiment_name, - run_name=config.mlflow.run_name, - tags={"JOB_ID": JOB_ID}, - ) - - parameters = config.hyperparameters - # apply_augmentations = Compose( - # [ - # Shift(min_shift=0.5, max_shift=1.0, shift_unit="seconds", p=0.5), - # ] - # ) - - dataset = instantiate(config.dataset, augmentations=None) - model = instantiate( - config.model, - dataset=dataset, - lr=parameters.get("lr"), - loss=parameters.get("loss"), - metric=parameters.get("metric"), - ) - - direction = model.valid_monitor - checkpoint = ModelCheckpoint( - dirpath="./model", - filename=f"model_{JOB_ID}", - monitor="valid_loss", - verbose=False, - mode=direction, - every_n_epochs=1, - ) - callbacks.append(checkpoint) - callbacks.append(LearningRateMonitor(logging_interval="epoch")) - - if parameters.get("Early_stop", False): - early_stopping = EarlyStopping( - monitor="val_loss", - mode=direction, - min_delta=0.0, - patience=parameters.get("EarlyStopping_patience", 10), - strict=True, - verbose=False, - ) - callbacks.append(early_stopping) - - def configure_optimizers(self): - optimizer = instantiate( - config.optimizer, - lr=parameters.get("lr"), - params=self.parameters(), - ) - scheduler = ReduceLROnPlateau( - optimizer=optimizer, - mode=direction, - factor=parameters.get("ReduceLr_factor", 0.1), - verbose=True, - min_lr=parameters.get("min_lr", 1e-6), - patience=parameters.get("ReduceLr_patience", 3), - ) - return { - "optimizer": optimizer, - "lr_scheduler": scheduler, - "monitor": f'valid_{parameters.get("ReduceLr_monitor", "loss")}', - } - - model.configure_optimizers = MethodType(configure_optimizers, model) - - trainer = instantiate(config.trainer, logger=logger, callbacks=callbacks) - trainer.fit(model) - trainer.test(model) - - logger.experiment.log_artifact( - logger.run_id, f"{trainer.default_root_dir}/config_log.yaml" - ) - - saved_location = os.path.join( - trainer.default_root_dir, "model", f"model_{JOB_ID}.ckpt" - ) - if os.path.isfile(saved_location): - logger.experiment.log_artifact(logger.run_id, saved_location) - logger.experiment.log_param( - logger.run_id, - "num_train_steps_per_epoch", - dataset.train__len__() / dataset.batch_size, - ) - logger.experiment.log_param( - logger.run_id, - "num_valid_steps_per_epoch", - dataset.val__len__() / dataset.batch_size, - ) - - -if __name__ == "__main__": - main() diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/config.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/config.yaml deleted file mode 100644 index 8d0ab14..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/config.yaml +++ /dev/null @@ -1,7 +0,0 @@ -defaults: - - model : Demucs - - dataset : Vctk - - optimizer : Adam - - hyperparameters : default - - trainer : default - - mlflow : experiment diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml deleted file mode 100644 index 6d97bee..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/DNS-2020.yaml +++ /dev/null @@ -1,12 +0,0 @@ -_target_: mayavoz.data.dataset.MayaDataset -root_dir : /Users/shahules/Myprojects/MS-SNSD -name : MS-SNSD -duration : 2.0 -sampling_rate: 16000 -batch_size: 32 -valid_size: 0.05 -files: - train_clean : CleanSpeech_training - test_clean : CleanSpeech_training - train_noisy : NoisySpeech_training - test_noisy : NoisySpeech_training diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/Vctk.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/dataset/Vctk.yaml deleted file mode 100644 index 584abe7..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/dataset/Vctk.yaml +++ /dev/null @@ -1,13 +0,0 @@ -_target_: mayavoz.data.dataset.MayaDataset -name : vctk -root_dir : /scratch/c.sistc3/DS_10283_2791 -duration : 4.5 -stride : 2 -sampling_rate: 16000 -batch_size: 32 -valid_minutes : 15 -files: - train_clean : clean_trainset_28spk_wav - test_clean : clean_testset_wav - train_noisy : noisy_trainset_28spk_wav - test_noisy : noisy_testset_wav diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/hyperparameters/default.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/hyperparameters/default.yaml deleted file mode 100644 index 1782ea9..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/hyperparameters/default.yaml +++ /dev/null @@ -1,7 +0,0 @@ -loss : mae -metric : [stoi,pesq,si-sdr] -lr : 0.0003 -ReduceLr_patience : 5 -ReduceLr_factor : 0.2 -min_lr : 0.000001 -EarlyStopping_factor : 10 diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/mlflow/experiment.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/mlflow/experiment.yaml deleted file mode 100644 index 9173e38..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/mlflow/experiment.yaml +++ /dev/null @@ -1,2 +0,0 @@ -experiment_name : shahules/mayavoz -run_name : Demucs + Vtck with stride + augmentations diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/model/DCCRN.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/model/DCCRN.yaml deleted file mode 100644 index d2ffcf1..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/model/DCCRN.yaml +++ /dev/null @@ -1,25 +0,0 @@ -_target_: mayavoz.models.dccrn.DCCRN -num_channels: 1 -sampling_rate : 16000 -complex_lstm : True -complex_norm : True -complex_relu : True -masking_mode : True - -encoder_decoder: - initial_output_channels : 32 - depth : 6 - kernel_size : 5 - growth_factor : 2 - stride : 2 - padding : 2 - output_padding : 1 - -lstm: - num_layers : 2 - hidden_size : 256 - -stft: - window_len : 400 - hop_size : 100 - nfft : 512 diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/model/Demucs.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/model/Demucs.yaml deleted file mode 100644 index f8d2eb8..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/model/Demucs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -_target_: mayavoz.models.demucs.Demucs -num_channels: 1 -resample: 4 -sampling_rate : 16000 - -encoder_decoder: - depth: 4 - initial_output_channels: 64 - kernel_size: 8 - stride: 4 - growth_factor: 2 - glu: True - -lstm: - bidirectional: False - num_layers: 2 diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/model/WaveUnet.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/model/WaveUnet.yaml deleted file mode 100644 index 7c17448..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/model/WaveUnet.yaml +++ /dev/null @@ -1,5 +0,0 @@ -_target_: mayavoz.models.waveunet.WaveUnet -num_channels : 1 -depth : 9 -initial_output_channels: 24 -sampling_rate : 16000 diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/optimizer/Adam.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/optimizer/Adam.yaml deleted file mode 100644 index 7952b81..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/optimizer/Adam.yaml +++ /dev/null @@ -1,6 +0,0 @@ -_target_: torch.optim.Adam -lr: 1e-3 -betas: [0.9, 0.999] -eps: 1e-08 -weight_decay: 0 -amsgrad: False diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/trainer/default.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/trainer/default.yaml deleted file mode 100644 index 958c418..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/trainer/default.yaml +++ /dev/null @@ -1,46 +0,0 @@ -_target_: pytorch_lightning.Trainer -accelerator: gpu -accumulate_grad_batches: 1 -amp_backend: native -auto_lr_find: True -auto_scale_batch_size: False -auto_select_gpus: True -benchmark: False -check_val_every_n_epoch: 1 -detect_anomaly: False -deterministic: False -devices: 2 -enable_checkpointing: True -enable_model_summary: True -enable_progress_bar: True -fast_dev_run: False -gpus: null -gradient_clip_val: 0 -gradient_clip_algorithm: norm -ipus: null -limit_predict_batches: 1.0 -limit_test_batches: 1.0 -limit_train_batches: 1.0 -limit_val_batches: 1.0 -log_every_n_steps: 50 -max_epochs: 200 -max_steps: -1 -max_time: null -min_epochs: 1 -min_steps: null -move_metrics_to_cpu: False -multiple_trainloader_mode: max_size_cycle -num_nodes: 1 -num_processes: 1 -num_sanity_val_steps: 2 -overfit_batches: 0.0 -precision: 32 -profiler: null -reload_dataloaders_every_n_epochs: 0 -replace_sampler_ddp: True -strategy: ddp -sync_batchnorm: False -tpu_cores: null -track_grad_norm: -1 -val_check_interval: 1.0 -weights_save_path: null diff --git a/recipes/Valentini-dataset/28spk/cli/train_config/trainer/fastrun_dev.yaml b/recipes/Valentini-dataset/28spk/cli/train_config/trainer/fastrun_dev.yaml deleted file mode 100644 index 682149e..0000000 --- a/recipes/Valentini-dataset/28spk/cli/train_config/trainer/fastrun_dev.yaml +++ /dev/null @@ -1,2 +0,0 @@ -_target_: pytorch_lightning.Trainer -fast_dev_run: True From b343ea3610e1689e049edac607c532f015f41e1b Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 11:57:47 +0530 Subject: [PATCH 8/9] rmv cli --- recipes/MS-SNSD/MS-SNSD-20/cli/train.py | 120 ------------------ .../MS-SNSD-20/cli/train_config/config.yaml | 7 - .../cli/train_config/dataset/DNS-2020.yaml | 12 -- .../cli/train_config/dataset/Vctk.yaml | 13 -- .../train_config/hyperparameters/default.yaml | 7 - .../cli/train_config/mlflow/experiment.yaml | 2 - .../cli/train_config/model/DCCRN.yaml | 25 ---- .../cli/train_config/model/Demucs.yaml | 16 --- .../cli/train_config/model/WaveUnet.yaml | 5 - .../cli/train_config/optimizer/Adam.yaml | 6 - .../cli/train_config/trainer/default.yaml | 46 ------- .../cli/train_config/trainer/fastrun_dev.yaml | 2 - 12 files changed, 261 deletions(-) delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train.py delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml delete mode 100644 recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train.py b/recipes/MS-SNSD/MS-SNSD-20/cli/train.py deleted file mode 100644 index c00c024..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train.py +++ /dev/null @@ -1,120 +0,0 @@ -import os -from types import MethodType - -import hydra -from hydra.utils import instantiate -from omegaconf import DictConfig, OmegaConf -from pytorch_lightning.callbacks import ( - EarlyStopping, - LearningRateMonitor, - ModelCheckpoint, -) -from pytorch_lightning.loggers import MLFlowLogger -from torch.optim.lr_scheduler import ReduceLROnPlateau - -# from torch_audiomentations import Compose, Shift - -os.environ["HYDRA_FULL_ERROR"] = "1" -JOB_ID = os.environ.get("SLURM_JOBID", "0") - - -@hydra.main(config_path="train_config", config_name="config") -def main(config: DictConfig): - - OmegaConf.save(config, "config_log.yaml") - - callbacks = [] - logger = MLFlowLogger( - experiment_name=config.mlflow.experiment_name, - run_name=config.mlflow.run_name, - tags={"JOB_ID": JOB_ID}, - ) - - parameters = config.hyperparameters - # apply_augmentations = Compose( - # [ - # Shift(min_shift=0.5, max_shift=1.0, shift_unit="seconds", p=0.5), - # ] - # ) - - dataset = instantiate(config.dataset, augmentations=None) - model = instantiate( - config.model, - dataset=dataset, - lr=parameters.get("lr"), - loss=parameters.get("loss"), - metric=parameters.get("metric"), - ) - - direction = model.valid_monitor - checkpoint = ModelCheckpoint( - dirpath="./model", - filename=f"model_{JOB_ID}", - monitor="valid_loss", - verbose=False, - mode=direction, - every_n_epochs=1, - ) - callbacks.append(checkpoint) - callbacks.append(LearningRateMonitor(logging_interval="epoch")) - - if parameters.get("Early_stop", False): - early_stopping = EarlyStopping( - monitor="val_loss", - mode=direction, - min_delta=0.0, - patience=parameters.get("EarlyStopping_patience", 10), - strict=True, - verbose=False, - ) - callbacks.append(early_stopping) - - def configure_optimizers(self): - optimizer = instantiate( - config.optimizer, - lr=parameters.get("lr"), - params=self.parameters(), - ) - scheduler = ReduceLROnPlateau( - optimizer=optimizer, - mode=direction, - factor=parameters.get("ReduceLr_factor", 0.1), - verbose=True, - min_lr=parameters.get("min_lr", 1e-6), - patience=parameters.get("ReduceLr_patience", 3), - ) - return { - "optimizer": optimizer, - "lr_scheduler": scheduler, - "monitor": f'valid_{parameters.get("ReduceLr_monitor", "loss")}', - } - - model.configure_optimizers = MethodType(configure_optimizers, model) - - trainer = instantiate(config.trainer, logger=logger, callbacks=callbacks) - trainer.fit(model) - trainer.test(model) - - logger.experiment.log_artifact( - logger.run_id, f"{trainer.default_root_dir}/config_log.yaml" - ) - - saved_location = os.path.join( - trainer.default_root_dir, "model", f"model_{JOB_ID}.ckpt" - ) - if os.path.isfile(saved_location): - logger.experiment.log_artifact(logger.run_id, saved_location) - logger.experiment.log_param( - logger.run_id, - "num_train_steps_per_epoch", - dataset.train__len__() / dataset.batch_size, - ) - logger.experiment.log_param( - logger.run_id, - "num_valid_steps_per_epoch", - dataset.val__len__() / dataset.batch_size, - ) - - -if __name__ == "__main__": - main() diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml deleted file mode 100644 index 8d0ab14..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/config.yaml +++ /dev/null @@ -1,7 +0,0 @@ -defaults: - - model : Demucs - - dataset : Vctk - - optimizer : Adam - - hyperparameters : default - - trainer : default - - mlflow : experiment diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml deleted file mode 100644 index 6d97bee..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/DNS-2020.yaml +++ /dev/null @@ -1,12 +0,0 @@ -_target_: mayavoz.data.dataset.MayaDataset -root_dir : /Users/shahules/Myprojects/MS-SNSD -name : MS-SNSD -duration : 2.0 -sampling_rate: 16000 -batch_size: 32 -valid_size: 0.05 -files: - train_clean : CleanSpeech_training - test_clean : CleanSpeech_training - train_noisy : NoisySpeech_training - test_noisy : NoisySpeech_training diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml deleted file mode 100644 index 584abe7..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/dataset/Vctk.yaml +++ /dev/null @@ -1,13 +0,0 @@ -_target_: mayavoz.data.dataset.MayaDataset -name : vctk -root_dir : /scratch/c.sistc3/DS_10283_2791 -duration : 4.5 -stride : 2 -sampling_rate: 16000 -batch_size: 32 -valid_minutes : 15 -files: - train_clean : clean_trainset_28spk_wav - test_clean : clean_testset_wav - train_noisy : noisy_trainset_28spk_wav - test_noisy : noisy_testset_wav diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml deleted file mode 100644 index 1782ea9..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/hyperparameters/default.yaml +++ /dev/null @@ -1,7 +0,0 @@ -loss : mae -metric : [stoi,pesq,si-sdr] -lr : 0.0003 -ReduceLr_patience : 5 -ReduceLr_factor : 0.2 -min_lr : 0.000001 -EarlyStopping_factor : 10 diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml deleted file mode 100644 index 9173e38..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/mlflow/experiment.yaml +++ /dev/null @@ -1,2 +0,0 @@ -experiment_name : shahules/mayavoz -run_name : Demucs + Vtck with stride + augmentations diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml deleted file mode 100644 index d2ffcf1..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/DCCRN.yaml +++ /dev/null @@ -1,25 +0,0 @@ -_target_: mayavoz.models.dccrn.DCCRN -num_channels: 1 -sampling_rate : 16000 -complex_lstm : True -complex_norm : True -complex_relu : True -masking_mode : True - -encoder_decoder: - initial_output_channels : 32 - depth : 6 - kernel_size : 5 - growth_factor : 2 - stride : 2 - padding : 2 - output_padding : 1 - -lstm: - num_layers : 2 - hidden_size : 256 - -stft: - window_len : 400 - hop_size : 100 - nfft : 512 diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml deleted file mode 100644 index f8d2eb8..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/Demucs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -_target_: mayavoz.models.demucs.Demucs -num_channels: 1 -resample: 4 -sampling_rate : 16000 - -encoder_decoder: - depth: 4 - initial_output_channels: 64 - kernel_size: 8 - stride: 4 - growth_factor: 2 - glu: True - -lstm: - bidirectional: False - num_layers: 2 diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml deleted file mode 100644 index 7c17448..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/model/WaveUnet.yaml +++ /dev/null @@ -1,5 +0,0 @@ -_target_: mayavoz.models.waveunet.WaveUnet -num_channels : 1 -depth : 9 -initial_output_channels: 24 -sampling_rate : 16000 diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml deleted file mode 100644 index 7952b81..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/optimizer/Adam.yaml +++ /dev/null @@ -1,6 +0,0 @@ -_target_: torch.optim.Adam -lr: 1e-3 -betas: [0.9, 0.999] -eps: 1e-08 -weight_decay: 0 -amsgrad: False diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml deleted file mode 100644 index 958c418..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/default.yaml +++ /dev/null @@ -1,46 +0,0 @@ -_target_: pytorch_lightning.Trainer -accelerator: gpu -accumulate_grad_batches: 1 -amp_backend: native -auto_lr_find: True -auto_scale_batch_size: False -auto_select_gpus: True -benchmark: False -check_val_every_n_epoch: 1 -detect_anomaly: False -deterministic: False -devices: 2 -enable_checkpointing: True -enable_model_summary: True -enable_progress_bar: True -fast_dev_run: False -gpus: null -gradient_clip_val: 0 -gradient_clip_algorithm: norm -ipus: null -limit_predict_batches: 1.0 -limit_test_batches: 1.0 -limit_train_batches: 1.0 -limit_val_batches: 1.0 -log_every_n_steps: 50 -max_epochs: 200 -max_steps: -1 -max_time: null -min_epochs: 1 -min_steps: null -move_metrics_to_cpu: False -multiple_trainloader_mode: max_size_cycle -num_nodes: 1 -num_processes: 1 -num_sanity_val_steps: 2 -overfit_batches: 0.0 -precision: 32 -profiler: null -reload_dataloaders_every_n_epochs: 0 -replace_sampler_ddp: True -strategy: ddp -sync_batchnorm: False -tpu_cores: null -track_grad_norm: -1 -val_check_interval: 1.0 -weights_save_path: null diff --git a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml b/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml deleted file mode 100644 index 682149e..0000000 --- a/recipes/MS-SNSD/MS-SNSD-20/cli/train_config/trainer/fastrun_dev.yaml +++ /dev/null @@ -1,2 +0,0 @@ -_target_: pytorch_lightning.Trainer -fast_dev_run: True From 25139d7d3f634b12689018ddb36867f97df5464e Mon Sep 17 00:00:00 2001 From: shahules786 Date: Thu, 24 Nov 2022 12:15:19 +0530 Subject: [PATCH 9/9] add MS-SNSD recipes --- recipes/MS-SNSD/MS-SNSD-20/DCCRN/train.py | 120 ++++++++++++++++++ .../MS-SNSD-20/DCCRN/train_config/config.yaml | 7 + .../DCCRN/train_config/dataset/MS-SNSD.yaml | 13 ++ .../train_config/hyperparameters/default.yaml | 7 + .../DCCRN/train_config/mlflow/experiment.yaml | 2 + .../DCCRN/train_config/model/DCCRN.yaml | 25 ++++ .../DCCRN/train_config/optimizer/Adam.yaml | 6 + .../DCCRN/train_config/trainer/default.yaml | 46 +++++++ .../train_config/trainer/fastrun_dev.yaml | 2 + recipes/MS-SNSD/MS-SNSD-20/Demucs/train.py | 120 ++++++++++++++++++ .../Demucs/train_config/config.yaml | 7 + .../Demucs/train_config/dataset/MS-SNSD.yaml | 13 ++ .../train_config/hyperparameters/default.yaml | 7 + .../train_config/mlflow/experiment.yaml | 2 + .../Demucs/train_config/model/Demucs.yaml | 16 +++ .../Demucs/train_config/optimizer/Adam.yaml | 6 + .../Demucs/train_config/trainer/default.yaml | 46 +++++++ .../train_config/trainer/fastrun_dev.yaml | 2 + 18 files changed, 447 insertions(+) create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train.py create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/config.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/dataset/MS-SNSD.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/hyperparameters/default.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/mlflow/experiment.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/model/DCCRN.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/optimizer/Adam.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/default.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/fastrun_dev.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train.py create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/config.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/dataset/MS-SNSD.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/hyperparameters/default.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/mlflow/experiment.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/model/Demucs.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/optimizer/Adam.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/default.yaml create mode 100644 recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/fastrun_dev.yaml diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train.py b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train.py new file mode 100644 index 0000000..8f12ea7 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train.py @@ -0,0 +1,120 @@ +import os +from types import MethodType + +import hydra +from hydra.utils import instantiate +from omegaconf import DictConfig, OmegaConf +from pytorch_lightning.callbacks import ( + EarlyStopping, + LearningRateMonitor, + ModelCheckpoint, +) +from pytorch_lightning.loggers import MLFlowLogger +from torch.optim.lr_scheduler import ReduceLROnPlateau + +# from torch_audiomentations import Compose, Shift + +os.environ["HYDRA_FULL_ERROR"] = "1" +JOB_ID = os.environ.get("SLURM_JOBID", "0") + + +@hydra.main(config_path="train_config", config_name="config") +def train(config: DictConfig): + + OmegaConf.save(config, "config.yaml") + + callbacks = [] + logger = MLFlowLogger( + experiment_name=config.mlflow.experiment_name, + run_name=config.mlflow.run_name, + tags={"JOB_ID": JOB_ID}, + ) + + parameters = config.hyperparameters + # apply_augmentations = Compose( + # [ + # Shift(min_shift=0.5, max_shift=1.0, shift_unit="seconds", p=0.5), + # ] + # ) + + dataset = instantiate(config.dataset, augmentations=None) + model = instantiate( + config.model, + dataset=dataset, + lr=parameters.get("lr"), + loss=parameters.get("loss"), + metric=parameters.get("metric"), + ) + + direction = model.valid_monitor + checkpoint = ModelCheckpoint( + dirpath="./model", + filename=f"model_{JOB_ID}", + monitor="valid_loss", + verbose=False, + mode=direction, + every_n_epochs=1, + ) + callbacks.append(checkpoint) + callbacks.append(LearningRateMonitor(logging_interval="epoch")) + + if parameters.get("Early_stop", False): + early_stopping = EarlyStopping( + monitor="val_loss", + mode=direction, + min_delta=0.0, + patience=parameters.get("EarlyStopping_patience", 10), + strict=True, + verbose=False, + ) + callbacks.append(early_stopping) + + def configure_optimizers(self): + optimizer = instantiate( + config.optimizer, + lr=parameters.get("lr"), + params=self.parameters(), + ) + scheduler = ReduceLROnPlateau( + optimizer=optimizer, + mode=direction, + factor=parameters.get("ReduceLr_factor", 0.1), + verbose=True, + min_lr=parameters.get("min_lr", 1e-6), + patience=parameters.get("ReduceLr_patience", 3), + ) + return { + "optimizer": optimizer, + "lr_scheduler": scheduler, + "monitor": f'valid_{parameters.get("ReduceLr_monitor", "loss")}', + } + + model.configure_optimizers = MethodType(configure_optimizers, model) + + trainer = instantiate(config.trainer, logger=logger, callbacks=callbacks) + trainer.fit(model) + trainer.test(model) + + logger.experiment.log_artifact( + logger.run_id, f"{trainer.default_root_dir}/config.yaml" + ) + + saved_location = os.path.join( + trainer.default_root_dir, "model", f"model_{JOB_ID}.ckpt" + ) + if os.path.isfile(saved_location): + logger.experiment.log_artifact(logger.run_id, saved_location) + logger.experiment.log_param( + logger.run_id, + "num_train_steps_per_epoch", + dataset.train__len__() / dataset.batch_size, + ) + logger.experiment.log_param( + logger.run_id, + "num_valid_steps_per_epoch", + dataset.val__len__() / dataset.batch_size, + ) + + +if __name__ == "__main__": + train() diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/config.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/config.yaml new file mode 100644 index 0000000..36aa50d --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/config.yaml @@ -0,0 +1,7 @@ +defaults: + - model : Demucs + - dataset : MS-SNSD + - optimizer : Adam + - hyperparameters : default + - trainer : default + - mlflow : experiment diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/dataset/MS-SNSD.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/dataset/MS-SNSD.yaml new file mode 100644 index 0000000..74641fe --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/dataset/MS-SNSD.yaml @@ -0,0 +1,13 @@ +_target_: mayavoz.data.dataset.MayaDataset +name : MS-SDSD +root_dir : /Users/shahules/Myprojects/MS-SNSD +duration : 1.5 +stride : 1 +sampling_rate: 16000 +batch_size: 32 +min_valid_minutes: 25 +files: + train_clean : CleanSpeech_training + test_clean : CleanSpeech_training + train_noisy : NoisySpeech_training + test_noisy : NoisySpeech_training diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/hyperparameters/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/hyperparameters/default.yaml new file mode 100644 index 0000000..0d5de5e --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/hyperparameters/default.yaml @@ -0,0 +1,7 @@ +loss : si-snr +metric : [stoi,pesq] +lr : 0.001 +ReduceLr_patience : 10 +ReduceLr_factor : 0.5 +min_lr : 0.000001 +EarlyStopping_factor : 10 diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/mlflow/experiment.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/mlflow/experiment.yaml new file mode 100644 index 0000000..9173e38 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/mlflow/experiment.yaml @@ -0,0 +1,2 @@ +experiment_name : shahules/mayavoz +run_name : Demucs + Vtck with stride + augmentations diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/model/DCCRN.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/model/DCCRN.yaml new file mode 100644 index 0000000..d2ffcf1 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/model/DCCRN.yaml @@ -0,0 +1,25 @@ +_target_: mayavoz.models.dccrn.DCCRN +num_channels: 1 +sampling_rate : 16000 +complex_lstm : True +complex_norm : True +complex_relu : True +masking_mode : True + +encoder_decoder: + initial_output_channels : 32 + depth : 6 + kernel_size : 5 + growth_factor : 2 + stride : 2 + padding : 2 + output_padding : 1 + +lstm: + num_layers : 2 + hidden_size : 256 + +stft: + window_len : 400 + hop_size : 100 + nfft : 512 diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/optimizer/Adam.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/optimizer/Adam.yaml new file mode 100644 index 0000000..7952b81 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/optimizer/Adam.yaml @@ -0,0 +1,6 @@ +_target_: torch.optim.Adam +lr: 1e-3 +betas: [0.9, 0.999] +eps: 1e-08 +weight_decay: 0 +amsgrad: False diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/default.yaml new file mode 100644 index 0000000..958c418 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/default.yaml @@ -0,0 +1,46 @@ +_target_: pytorch_lightning.Trainer +accelerator: gpu +accumulate_grad_batches: 1 +amp_backend: native +auto_lr_find: True +auto_scale_batch_size: False +auto_select_gpus: True +benchmark: False +check_val_every_n_epoch: 1 +detect_anomaly: False +deterministic: False +devices: 2 +enable_checkpointing: True +enable_model_summary: True +enable_progress_bar: True +fast_dev_run: False +gpus: null +gradient_clip_val: 0 +gradient_clip_algorithm: norm +ipus: null +limit_predict_batches: 1.0 +limit_test_batches: 1.0 +limit_train_batches: 1.0 +limit_val_batches: 1.0 +log_every_n_steps: 50 +max_epochs: 200 +max_steps: -1 +max_time: null +min_epochs: 1 +min_steps: null +move_metrics_to_cpu: False +multiple_trainloader_mode: max_size_cycle +num_nodes: 1 +num_processes: 1 +num_sanity_val_steps: 2 +overfit_batches: 0.0 +precision: 32 +profiler: null +reload_dataloaders_every_n_epochs: 0 +replace_sampler_ddp: True +strategy: ddp +sync_batchnorm: False +tpu_cores: null +track_grad_norm: -1 +val_check_interval: 1.0 +weights_save_path: null diff --git a/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/fastrun_dev.yaml b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/fastrun_dev.yaml new file mode 100644 index 0000000..682149e --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/DCCRN/train_config/trainer/fastrun_dev.yaml @@ -0,0 +1,2 @@ +_target_: pytorch_lightning.Trainer +fast_dev_run: True diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train.py b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train.py new file mode 100644 index 0000000..8f12ea7 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train.py @@ -0,0 +1,120 @@ +import os +from types import MethodType + +import hydra +from hydra.utils import instantiate +from omegaconf import DictConfig, OmegaConf +from pytorch_lightning.callbacks import ( + EarlyStopping, + LearningRateMonitor, + ModelCheckpoint, +) +from pytorch_lightning.loggers import MLFlowLogger +from torch.optim.lr_scheduler import ReduceLROnPlateau + +# from torch_audiomentations import Compose, Shift + +os.environ["HYDRA_FULL_ERROR"] = "1" +JOB_ID = os.environ.get("SLURM_JOBID", "0") + + +@hydra.main(config_path="train_config", config_name="config") +def train(config: DictConfig): + + OmegaConf.save(config, "config.yaml") + + callbacks = [] + logger = MLFlowLogger( + experiment_name=config.mlflow.experiment_name, + run_name=config.mlflow.run_name, + tags={"JOB_ID": JOB_ID}, + ) + + parameters = config.hyperparameters + # apply_augmentations = Compose( + # [ + # Shift(min_shift=0.5, max_shift=1.0, shift_unit="seconds", p=0.5), + # ] + # ) + + dataset = instantiate(config.dataset, augmentations=None) + model = instantiate( + config.model, + dataset=dataset, + lr=parameters.get("lr"), + loss=parameters.get("loss"), + metric=parameters.get("metric"), + ) + + direction = model.valid_monitor + checkpoint = ModelCheckpoint( + dirpath="./model", + filename=f"model_{JOB_ID}", + monitor="valid_loss", + verbose=False, + mode=direction, + every_n_epochs=1, + ) + callbacks.append(checkpoint) + callbacks.append(LearningRateMonitor(logging_interval="epoch")) + + if parameters.get("Early_stop", False): + early_stopping = EarlyStopping( + monitor="val_loss", + mode=direction, + min_delta=0.0, + patience=parameters.get("EarlyStopping_patience", 10), + strict=True, + verbose=False, + ) + callbacks.append(early_stopping) + + def configure_optimizers(self): + optimizer = instantiate( + config.optimizer, + lr=parameters.get("lr"), + params=self.parameters(), + ) + scheduler = ReduceLROnPlateau( + optimizer=optimizer, + mode=direction, + factor=parameters.get("ReduceLr_factor", 0.1), + verbose=True, + min_lr=parameters.get("min_lr", 1e-6), + patience=parameters.get("ReduceLr_patience", 3), + ) + return { + "optimizer": optimizer, + "lr_scheduler": scheduler, + "monitor": f'valid_{parameters.get("ReduceLr_monitor", "loss")}', + } + + model.configure_optimizers = MethodType(configure_optimizers, model) + + trainer = instantiate(config.trainer, logger=logger, callbacks=callbacks) + trainer.fit(model) + trainer.test(model) + + logger.experiment.log_artifact( + logger.run_id, f"{trainer.default_root_dir}/config.yaml" + ) + + saved_location = os.path.join( + trainer.default_root_dir, "model", f"model_{JOB_ID}.ckpt" + ) + if os.path.isfile(saved_location): + logger.experiment.log_artifact(logger.run_id, saved_location) + logger.experiment.log_param( + logger.run_id, + "num_train_steps_per_epoch", + dataset.train__len__() / dataset.batch_size, + ) + logger.experiment.log_param( + logger.run_id, + "num_valid_steps_per_epoch", + dataset.val__len__() / dataset.batch_size, + ) + + +if __name__ == "__main__": + train() diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/config.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/config.yaml new file mode 100644 index 0000000..36aa50d --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/config.yaml @@ -0,0 +1,7 @@ +defaults: + - model : Demucs + - dataset : MS-SNSD + - optimizer : Adam + - hyperparameters : default + - trainer : default + - mlflow : experiment diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/dataset/MS-SNSD.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/dataset/MS-SNSD.yaml new file mode 100644 index 0000000..031049f --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/dataset/MS-SNSD.yaml @@ -0,0 +1,13 @@ +_target_: mayavoz.data.dataset.MayaDataset +name : MS-SDSD +root_dir : /Users/shahules/Myprojects/MS-SNSD +duration : 5 +stride : 1 +sampling_rate: 16000 +batch_size: 32 +min_valid_minutes: 25 +files: + train_clean : CleanSpeech_training + test_clean : CleanSpeech_training + train_noisy : NoisySpeech_training + test_noisy : NoisySpeech_training diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/hyperparameters/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/hyperparameters/default.yaml new file mode 100644 index 0000000..4bff7cd --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/hyperparameters/default.yaml @@ -0,0 +1,7 @@ +loss : mae +metric : [stoi,pesq] +lr : 0.0003 +ReduceLr_patience : 10 +ReduceLr_factor : 0.5 +min_lr : 0.000001 +EarlyStopping_factor : 10 diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/mlflow/experiment.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/mlflow/experiment.yaml new file mode 100644 index 0000000..3e97944 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/mlflow/experiment.yaml @@ -0,0 +1,2 @@ +experiment_name : shahules/mayavoz +run_name : demucs-ms-snsd diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/model/Demucs.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/model/Demucs.yaml new file mode 100644 index 0000000..f8d2eb8 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/model/Demucs.yaml @@ -0,0 +1,16 @@ +_target_: mayavoz.models.demucs.Demucs +num_channels: 1 +resample: 4 +sampling_rate : 16000 + +encoder_decoder: + depth: 4 + initial_output_channels: 64 + kernel_size: 8 + stride: 4 + growth_factor: 2 + glu: True + +lstm: + bidirectional: False + num_layers: 2 diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/optimizer/Adam.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/optimizer/Adam.yaml new file mode 100644 index 0000000..7952b81 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/optimizer/Adam.yaml @@ -0,0 +1,6 @@ +_target_: torch.optim.Adam +lr: 1e-3 +betas: [0.9, 0.999] +eps: 1e-08 +weight_decay: 0 +amsgrad: False diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/default.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/default.yaml new file mode 100644 index 0000000..958c418 --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/default.yaml @@ -0,0 +1,46 @@ +_target_: pytorch_lightning.Trainer +accelerator: gpu +accumulate_grad_batches: 1 +amp_backend: native +auto_lr_find: True +auto_scale_batch_size: False +auto_select_gpus: True +benchmark: False +check_val_every_n_epoch: 1 +detect_anomaly: False +deterministic: False +devices: 2 +enable_checkpointing: True +enable_model_summary: True +enable_progress_bar: True +fast_dev_run: False +gpus: null +gradient_clip_val: 0 +gradient_clip_algorithm: norm +ipus: null +limit_predict_batches: 1.0 +limit_test_batches: 1.0 +limit_train_batches: 1.0 +limit_val_batches: 1.0 +log_every_n_steps: 50 +max_epochs: 200 +max_steps: -1 +max_time: null +min_epochs: 1 +min_steps: null +move_metrics_to_cpu: False +multiple_trainloader_mode: max_size_cycle +num_nodes: 1 +num_processes: 1 +num_sanity_val_steps: 2 +overfit_batches: 0.0 +precision: 32 +profiler: null +reload_dataloaders_every_n_epochs: 0 +replace_sampler_ddp: True +strategy: ddp +sync_batchnorm: False +tpu_cores: null +track_grad_norm: -1 +val_check_interval: 1.0 +weights_save_path: null diff --git a/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/fastrun_dev.yaml b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/fastrun_dev.yaml new file mode 100644 index 0000000..682149e --- /dev/null +++ b/recipes/MS-SNSD/MS-SNSD-20/Demucs/train_config/trainer/fastrun_dev.yaml @@ -0,0 +1,2 @@ +_target_: pytorch_lightning.Trainer +fast_dev_run: True