diff --git a/model_zoo/research/audio/wavenet/README.md b/model_zoo/research/audio/wavenet/README.md index 32a14c85ac6..20650e7e691 100644 --- a/model_zoo/research/audio/wavenet/README.md +++ b/model_zoo/research/audio/wavenet/README.md @@ -65,38 +65,43 @@ Dataset used: [The LJ Speech Dataset]() . ├── audio └──wavenet - ├──datasets // Note the datasets folder should be downloaded from the above link - ├──egs // Note the egs folder should be downloaded from the above link - ├──utils // Note the utils folder should be downloaded from the above link - ├── audio.py // Audio utils. Note this script should be downloaded from a third party - ├── compute-meanvar-stats.py // Compute mean-variance normalization stats. Note this script should be downloaded from the above link - ├── evaluate.py // Evaluation - ├── export.py // Convert mindspore model to air model - ├── hparams.py // Hyper-parameter configuration. Note this script should be downloaded from the above link - ├── lrschedule.py // Learning rate scheduler. Note this script should be downloaded from the above link - ├── mksubset.py // Make subset of dataset. Note this script should be downloaded from the above link - ├── preprocess.py // Preprocess dataset. Note this script should be downloaded from the above link - ├── preprocess_normalize.py // Perform meanvar normalization to preprocessed features. Note this script should be downloaded from the above link - ├── README.md // Descriptions about WaveNet - ├── train.py // Training scripts - ├── train_pytorch.py // Note this script should be downloaded from the above link. The initial name of this script is train.py in the project from the link + ├── scripts + │ ├──run_distribute_train_gpu.sh // launch distributed training with gpu platform(8p) + │ ├──run_eval_cpu.sh // launch evaluation with cpu platform + │ ├──run_eval_gpu.sh // launch evaluation with gpu platform + │ ├──run_standalone_train_cpu.sh // launch standalone training with cpu platform + │ └──run_standalone_train_gpu.sh // launch standalone training with gpu platform(1p) + ├──datasets // Note the datasets folder should be downloaded from the above link + ├──egs // Note the egs folder should be downloaded from the above link + ├──utils // Note the utils folder should be downloaded from the above link + ├── audio.py // Audio utils. Note this script should be downloaded from the above link + ├── compute-meanvar-stats.py // Compute mean-variance normalization stats. Note this script should be downloaded from the above link + ├── evaluate.py // Evaluation + ├── export.py // Convert mindspore model to air model + ├── hparams.py // Hyper-parameter configuration. Note this script should be downloaded from the above link + ├── mksubset.py // Make subset of dataset. Note this script should be downloaded from the above link + ├── preprocess.py // Preprocess dataset. Note this script should be downloaded from the above link + ├── preprocess_normalize.py // Perform meanvar normalization to preprocessed features. Note this script should be downloaded from the above link + ├── README.md // Descriptions about WaveNet + ├── train.py // Training scripts + ├── train_pytorch.py // Note this script should be downloaded from the above link. The initial name of this script is train.py in the project from the link ├── src │ ├──__init__.py - │ ├──dataset.py // Generate dataloader and data processing entry - │ ├──callback.py // Callbacks to monitor the training - │ ├──lr_generator.py // Learning rate generator - │ └──loss.py // Loss function definition + │ ├──dataset.py // Generate dataloader and data processing entry + │ ├──callback.py // Callbacks to monitor the training + │ ├──lr_generator.py // Learning rate generator + │ └──loss.py // Loss function definition └── wavenet_vocoder ├──__init__.py - ├──conv.py // Extended 1D convolution - ├──mixture.py // Loss function for training and sample function for testing - ├──modules.py // Modules for Wavenet construction - ├──upsample.py // Upsample layer definition - ├──util.py // Utils. Note this script should be downloaded from the above link - ├──wavenet.py // WaveNet networks - └──tfcompat // Note this script should be downloaded from the above link + ├──conv.py // Extended 1D convolution + ├──mixture.py // Loss function for training and sample function for testing + ├──modules.py // Modules for Wavenet construction + ├──upsample.py // Upsample layer definition + ├──util.py // Utils. Note this script should be downloaded from the above link + ├──wavenet.py // WaveNet networks + └──tfcompat // Note this script should be downloaded from the above link ├──__init__.py - └──hparam.py // Param management tools + └──hparam.py // Param management tools ``` ## [Script Parameters](#contents) @@ -205,13 +210,13 @@ you can run the following command to train the network: ```bash Standalone training GPU: -python train.py --data_path=/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/ --preset=/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json --checkpoint_dir=path_to_save_ckpt +sh ./scripts/run_standalone_train_gpu.sh [CUDA_DEVICE_ID] [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_save_ckpt] CPU: -python train.py --data_path=/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/ --preset=/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json --checkpoint_dir=path_to_save_ckpt --platform=CPU +sh ./scripts/run_standalone_train_cpu.sh [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_save_ckpt] -Distributed training (on GPU only) -CUDA_VISIBLE_DEVICES='0,1,2,3,4,5,6,7' mpirun --allow-run-as-root -n 8 python train.py ----data_path= /path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/ --preset=/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json --checkpoint_dir=path_to_save_ckpt --is_distributed=True +Distributed training(8p) +sh ./scripts/run_distribute_train_gpu.sh [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_save_ckpt] ``` ## [Evaluation Process](#contents) @@ -221,11 +226,14 @@ this [link](https://bbs.huaweicloud.com/forum/thread-94852-1-1.html) ```bash Evaluation -GPU: -python evaluate.py --data_path=/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/eval --preset=/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json --pretrain_ckpt=path_to_load_ckpt --is_numpy --output_path=path_to_save_audio +GPU (using numpy): +sh ./scripts/run_eval_gpu.sh [CUDA_DEVICE_ID] [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_load_ckpt] is_numpy [path_to_save_audio] + +GPU (using mindspore): +sh ./scripts/run_eval_gpu.sh [CUDA_DEVICE_ID] [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_load_ckpt] [path_to_save_audio] CPU: -python evaluate.py --data_path=/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/eval --preset=/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json --pretrain_ckpt=path_to_load_ckpt --is_numpy --output_path=path_to_save_audio --platform=CPU +sh ./scripts/run_eval_cpu.sh [/path_to_egs/egs/gaussian/dump/lj/logmelspectrogram/norm/] [/path_to_egs/egs/gaussian/conf/gaussian_wavenet.json] [path_to_load_ckpt] [is_numpy] [path_to_save_audio] ``` ## [Convert Process](#contents) diff --git a/model_zoo/research/audio/wavenet/scripts/run_distribute_train_gpu.sh b/model_zoo/research/audio/wavenet/scripts/run_distribute_train_gpu.sh new file mode 100644 index 00000000000..f0ac068914c --- /dev/null +++ b/model_zoo/research/audio/wavenet/scripts/run_distribute_train_gpu.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +DATA_PATH=$1 +PRESET=$2 +CHECKPOINT_DIR=$3 +mpirun --allow-run-as-root -n 8 --output-filename log_output --merge-stderr-to-stdout \ + python ./train.py --data_path=$DATA_PATH --preset=$PRESET --checkpoint_dir=$CHECKPOINT_DIR --is_distributed > train.log 2>&1 & diff --git a/model_zoo/research/audio/wavenet/scripts/run_eval_cpu.sh b/model_zoo/research/audio/wavenet/scripts/run_eval_cpu.sh new file mode 100644 index 00000000000..02b2ba5c20e --- /dev/null +++ b/model_zoo/research/audio/wavenet/scripts/run_eval_cpu.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +if [ $# == 5 ] +then + python ./evaluate.py --data_path=$1 --preset=$2 --pretrain_ckpt=$3 --is_numpy --output_path=$5 > eval.log 2>&1 & +else + python ./evaluate.py --data_path=$1 --preset=$2 --pretrain_ckpt=$3 --output_path=$4 > eval.log 2>&1 & +fi diff --git a/model_zoo/research/audio/wavenet/scripts/run_eval_gpu.sh b/model_zoo/research/audio/wavenet/scripts/run_eval_gpu.sh new file mode 100644 index 00000000000..a533d5ee7a2 --- /dev/null +++ b/model_zoo/research/audio/wavenet/scripts/run_eval_gpu.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +if [ $# == 6 ] +then + CUDA_VISIBLE_DEVICES=$1 python ./evaluate.py --data_path=$2 --preset=$3 --pretrain_ckpt=$4 \ + --is_numpy --output_path=$6 > eval.log 2>&1 & +else + CUDA_VISIBLE_DEVICES=$1 python ./evaluate.py --data_path=$2 --preset=$3 --pretrain_ckpt=$4 \ + --output_path=$5 > eval.log 2>&1 & +fi diff --git a/model_zoo/research/audio/wavenet/scripts/run_standalone_train_cpu.sh b/model_zoo/research/audio/wavenet/scripts/run_standalone_train_cpu.sh new file mode 100644 index 00000000000..948952babae --- /dev/null +++ b/model_zoo/research/audio/wavenet/scripts/run_standalone_train_cpu.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +DATA_PATH=$1 +PRESET=$2 +CHECKPOINT_DIR=$3 +python ./train.py --data_path=$DATA_PATH --preset=$PRESET --checkpoint_dir=$CHECKPOINT_DIR \ +--platform=CPU > train.log 2>&1 & diff --git a/model_zoo/research/audio/wavenet/scripts/run_standalone_train_gpu.sh b/model_zoo/research/audio/wavenet/scripts/run_standalone_train_gpu.sh new file mode 100644 index 00000000000..b9aae15ac4a --- /dev/null +++ b/model_zoo/research/audio/wavenet/scripts/run_standalone_train_gpu.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Copyright 2021 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +DEVICE_ID=$1 +DATA_PATH=$2 +PRESET=$3 +CHECKPOINT_DIR=$4 +CUDA_VISIBLE_DEVICES=$DEVICE_ID python ./train.py --data_path=$DATA_PATH --preset=$PRESET \ +--checkpoint_dir=$CHECKPOINT_DIR > train.log 2>&1 &