Skip to content

ローカル環境構築

SATOH Kiyoshi edited this page Feb 16, 2023 · 11 revisions

環境構築

ここではローカルPCでのTrainerの学習用ローカル環境を構築する方法を説明します。

その他の、提供されたexeを利用しない場合のクライアントのローカル環境構築や、exe化するためのPyInstallerのローカル環境構築については、下記ページを参照してください。

1. WSL2にUbuntu20.04を作成し、最新にする

# WSL2にUbuntuをインストール
# Ubuntu環境が既にある場合は削除する。
wsl --list --online
wsl --install -d Ubuntu-20.04

# WSL2上のUbuntuに入る。
# 以下コメントで `On Ubuntu`となっている箇所はこのコマンド実行後実行するもの。
wsl

# On Ubuntu
sudo apt update
sudo apt upgrade -y

# On Windows
# WSL2 Ubuntuを再起動する
wsl -t Ubuntu-20.04

2. MMVC_Trainerのデータを配置する

詳細は対象リポジトリを参照

2-1. MMVC_Trainerの配置

# On Ubuntu
cd ~
git clone https://github.com/isletennos/MMVC_Trainer

2-2. 録音データの配置

  1. 録音データを作成しておく
    • 動画シリーズ等で方法を確認する。録音データの収録方法等が詳細に説明されています。
    • 一番時間のかかる作業です。気長にやりましょう。
    • ローカルの適当な場所に保存。
  2. Windowsのエクスプローラから\\wsl$\Ubuntu-20.04\home\<UBUNTU_USERNAME>\MMVC_Trainer\dataset\textfulに録音データ、コーパスデータを配置
    • <UBUNTU_USERNAME>は1.でインストールした時に入力するユーザー名
    • 配置する方法はgitのReadme動画シリーズを確認してください。

2-3. fine_modelの配置

  1. GitHub - isletennos/MMVC_Trainer にアクセス
  2. 「Ph2. モデルの学習方法 > 1.下記リンクより、「G_180000.pth」「D_180000.pth」をダウンロード」を確認しダウンロード
    • この時、表示されているバージョンが MMVC_Trainer/version.txtの内容と合致していることを確認。バージョンが違うと原則動作しません。
  3. Windowsのエクスプローラから\\wsl$\Ubuntu-20.04\home\<UBUNTU_USERNAME>\MMVC_Trainer\fine_modelにアクセスし、ダウンロードしたデータを入れる。
    • <UBUNTU_USERNAME>は1.でインストールした時に入力するユーザー名

3. 環境構築

MMVC_Trainer v1.3.2系とv1.4系の場合

# On Ubuntu
cd ~/MMVC_Trainer

# 使用ライブラリをインストールするために必要なソフトのインストール
sudo apt install python3-pip -y
sudo apt install cmake -y
sudo apt install nvidia-utils-510 -y
sudo apt install espeak -y

# 使用ライブラリのインストール
pip install --upgrade -r requirements_wsl2.txt
pip install numpy==1.23.5

# pythonのパスを通す
sudo apt install python-is-python3

# monotonic_alignのインストール
cd monotonic_align
python setup.py build_ext --inplace
cd ..

# CUDAのインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda-repo-wsl-ubuntu-11-1-local_11.1.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-1-local_11.1.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-1-local/7fa2af80.pub 
sudo apt update
sudo apt install cuda -y

# GPU確認
# GPUが認識されていることやメモリ量等を確認する
nvidia-smi

v1.3.2系でRTX4090の場合

RTX4090ではcu118でないとpytorchが動かない(2023/2現在)
そのため、cu118系を使う必要があるが、cu118はtorch2.0系のNigtly buildしかまだ提供されていない。

https://download.pytorch.org/whl/nightly/torch/

から、Nightly buildの 2.0+cu118 を使うよう、requirements_wsl2.txt を修正する。

MMVC_Trainer v1.2/v1.3系の場合

# On Ubuntu
cd ~/MMVC_Trainer

# 使用ライブラリをインストールするために必要なソフトのインストール
sudo apt install python3-pip -y
sudo apt install cmake -y
sudo apt install nvidia-utils-510 -y
sudo apt install espeak -y

# 使用ライブラリのインストール
pip install pyopenjtalk
pip install Cython==0.29.21
pip install librosa==0.8.0
pip install matplotlib==3.3.1
pip install phonemizer==2.2.1
pip install scipy==1.5.2
pip install tensorboard==2.3.0
pip install torch==1.8.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install torchvision==0.9.0
pip install torchaudio==0.8.0
pip install Unidecode==1.1.1
pip install retry
pip install tqdm
pip install resampy==0.2.2

# WSL2で動作させるためにnotebookに記載された使用ライブラリとは別にインストールしたものやバージョンを指定したもの
pip install psutil
pip install protobuf==3.19.0
pip install numpy==1.23.5

# pythonのパスを通す
sudo apt install python-is-python3

# monotonic_alignのインストール
cd monotonic_align
python setup.py build_ext --inplace
cd ..

# CUDAのインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda-repo-wsl-ubuntu-11-1-local_11.1.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-1-local_11.1.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-1-local/7fa2af80.pub 
sudo apt update
sudo apt install cuda -y

# GPU確認
# GPUが認識されていることやメモリ量等を確認する
nvidia-smi

WSL2の再起動

# On Windows
# WSL2 Ubuntuを再起動する
wsl -t Ubuntu-20.04

4. 設定ファイルを書き換える

  • MMVC_Trainer/configs/baseconfig.jsonを環境に合わせて書き換える。
    • "others:
      • "os_type": "linux" WSL2で実行する場合はこの箇所を"windows"に変更する!
    • "train":
      • "eval_interval": 2000 記録間隔。小さいとこまめに記録されるが容量を食う。
      • "batch_size": 10 GPUのメモリサイズに合わせて調整。大きい方が学習の進み方が速い。
        そのままで回してみて学習中にメモリエラーが出るようであれば小さくしていく。 このファイルは設定ファイルのテンプレートなので、後々作成するtrain_config_XXX.jsonの値も修正する。
  • 設定の書換のノウハウは冒頭で紹介した動画シリーズが詳しいです。
  • 設定内容詳細は設定ファイル説明#サーバ側設定を確認してください。
旧バージョンではソースコードの書換が必要だったが、現在は設定ファイルの書換だけで対応可能。
  • MMVC_Trainer/train_ms.pyを次の通り書き換える。

    • 14行目、DistributedDataParallelDataParallel に。
    • 78行目、backend='nccl'backend='gloo'に。
  • Windows側から\\wsl$\Ubuntu-20.04\home\<UBUNTU_USERNAME>\MMVC_Trainer\train_ms.pyをメモ帳等で開いて修正してもよし、Ubuntu側からvi train_ms.pyで書き換えてもよい。

  • WindowsのVSCodeでWSL2に接続した方が楽。筆者はそうしています。説明は省略。

    diff --git a/train_ms.py b/train_ms.py
    index b20d45f..d19e52f 100644
    --- a/train_ms.py
    +++ b/train_ms.py
    @@ -11,7 +11,7 @@ from torch.utils.data import DataLoader
    from torch.utils.tensorboard import SummaryWriter
    import torch.multiprocessing as mp
    import torch.distributed as dist
    -from torch.nn.parallel import DistributedDataParallel as DDP
    +from torch.nn.parallel import DataParallel as DDP
    from torch.cuda.amp import autocast, GradScaler
    import datetime
    import pytz
    @@ -75,7 +75,7 @@ def run(rank, n_gpus, hps):
    if cpu_count > 8:
        cpu_count = 8
    
    -  dist.init_process_group(backend='nccl', init_method='env://', world_size=n_gpus, rank=rank)
    +  dist.init_process_group(backend='gloo', init_method='env://', world_size=n_gpus, rank=rank)
    torch.manual_seed(hps.train.seed)
    torch.cuda.set_device(rank)
    train_dataset = TextAudioSpeakerLoader(hps.data.training_files, hps.data)
  • v1.2.2.0 ではこの作業はなくなり、configに "others":{ "os_type": "windows" } を追加するだけになる。

  • v1.3.0などの場合 https://github.com/isletennos/MMVC_Trainer/blob/v1.3.0.0/train_ms.py#L59 「os.environ['MASTER_PORT'] = '80000'」のように65535以上の値にになっている場合は「80000」を「8000」などに修正してください。

5. 学習させる

以下の説明はずんだもんになる場合です。 九州そら、四国めたん、春日部つむぎ等、他の話者になりたい場合、対象リポジトリMMVC_Trainer/notebook/*のファイルを読んで音声データを配置の上コマンドを変更しましょう。

# On Ubuntu
cd ~/MMVC_Trainer
# Create_Configfile
python create_dataset_jtalk.py -f train_config_zundamon -s 24000 -t 100
# Train_MMVC
## 初回のみ
python train_ms.py -c configs/train_config_zundamon.json -m 20220811_24000_zundamon -fg fine_model/G_180000.pth -fd fine_model/D_180000.pth
## 途中から再開する場合
cd ~/MMVC_Trainer
python train_ms.py -c configs/train_config_zundamon.json -m 20220811_24000_zundamon
## 学習を中断させたい場合は `ctrl + c`
  • マルチGPUで動作させている場合、python train_ms.py ~の前に以下のexport行を実行する
    • export CUDA_VISIBLE_DEVICES=0
      • 数字が0か1かは環境によって違う。学習中にWindows上のタスクマネージャで学習に使用したいGPUの負荷が上がってるかを確認する。
      • WSL2だとDDPが動作しないため、マルチGPUでの計算は現状できない。(特定の一つのGPUのみで計算する以外に方法がない。)

6. Tensorboardで学習状況を確認する

# On Ubuntu
cd ~/MMVC_Trainer
tensorboard --logdir logs
# URLが表示されるのでそれにアクセスする。
# 終了するときは `ctrl + c`

7. 学習成果を利用してボイスチェンジを試みる

  • MMVC_Trainer/logs/20220811_24000_zundamon/D_XXXXXX.pth, G_XXXXXX.pth が保存されているので、ディレクトリごとWindows側にコピーする。
  • クライアントソフト をDLし、設定する。(説明省略)

上記の導入によって動作を確認できたPC環境

Windows11 Pro 21H2
CPU: Ryzen3900X
GPU: GeForce RTX 3070
MEM: 64GB

更新履歴

  • 2022-12-13: 元のエントリ https://qiita.com/yukarimazedofu/items/ed39d34632e412b2fc03 をWikiにcommitしていただきました。感謝です!
  • 2022-08-13: 最新版(v1300)リリースされましたが、ほぼバグフィックスなのでこの内容で動作するはずです。
  • 2022-08-11: 最新版(v1220)リリースに伴う修正
    • 動画へのリンクからシリーズへのリンクに変更
    • githubのReadmeに合わせた記述の順序修正(2-2と2-3が順番逆だった)
    • インストールライブラリの修正
      • numpy, tqdm
      • For RTX30XX の記述を削除(v1220を通常通りインストールすることで対応できるようになった)
    • 「設定ファイルを書き換える」の増補
    • LD_LIBRARY_PATH 環境変数の指定が不要になっていたので削除
  • 2022-07-23: 現時点最新版(v1216)に合わせた内容の修正
    • psutil, protobufの追加
    • CUDAのインストールバージョンを11.1に変更
    • 2.MMVC_Trainerのデータを配置する や 4.ファイルを改変する の内容を増補
    • マルチGPU使用時の設定方法の追加