改革者の適応:テキストからスピーチへの効率的な変圧器。
このプロジェクトには以下が含まれています。
最近の改革者論文で提案された最適化に変圧器アーキテクチャを置き換えることにより、最先端のテキストからスピーチへのより効率的なバージョンを作成することを目指しました。これを使用して、この目的のために特別に作成された彼のスピーチのカスタムデータセットに基づいて、ドナルドトランプの信頼できるディープファークを生成します。
残念ながら、2か月にわたって100を超えるハイパーパラメーターの組み合わせを実験した後、トランスTTSペーパーからの結果と一致する結果を生成することができませんでした。ここでは、モデルサイズが重要な要素であり、TTSの変圧器を訓練するには、長期にわたる安定したトレーニングプロセス(RTX 2080TIでの〜1週間のトレーニング)を可能にするために、過剰フィッティングを減らす必要があると考えています。
また、トランスTTの元の実装にアクセスできることは大いに役立ちます。
改革者は私たちの期待と一致しませんでしたが、Squeezewaveの実装は、FP16サポートのない元のパフォーマンスと一致します。
また、トレーニングと推論を実行するためのCLI(使用法セクションを参照)、および実験の再現に必要なすべてのデータも含めます(開発セクションを参照)。
このプロジェクトは重要なリファクタルの下にあり、このバージョンはここに残され、以前の支出との互換性を可能にし、近い将来に移動されます。
このプロジェクトは通常のPythonパッケージであり、 Python 3.8以上を使用している限り、 pipを使用してインストールできます。
[リリース]ページに移動して、最新リリースのインストール命令を見つけます。
インストール後、実行することで利用可能なコマンドを確認できます。
python -m reformer_tts.cli --helpたとえば、すべてのコマンドはCLIを使用して実行されます。
python -m reformer_tts.cli train-vocoderほとんどのパラメーター(特に、すべてのトレーニングハイパーパラメーター)は、 cliへの--config引数(実行するコマンドの前に行く)を介して指定されています。
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoderデフォルト値は、 reformer_tts.config.Config (およびそのフィールド)にあります。
Conda-Forgeコミュニティのおかげで、1つのコマンドを使用してすべてのパッケージ( ffmpegなどの必要なバイナリを含む)をインストールできます。
conda env create -f environment.ymlPython>=3.8持っていることを確認してください: which python
python --versionpip install -r requirements.txt ffmpeg>=3.4,<4.0インストール(インストール手順)があることを確認してください
トレーニングについては、CUDAとGPUのドライバーがインストールされていることを確認してください(詳細については、Pytorch Webサイトの手順を参照)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.json注:ACCEを読むだけで(複製のために)読む必要がある場合、ステップ1を実行する必要はありません
dvc pullこれを行うには、プロジェクトテストを実行できます。
python -m pytest --pyargs reformer_ttsすべてのテストはCPUとGPUで動作する必要があり、完了するまでに最大1分かかる場合があります。
パスすることを忘れないでください--pyargs reformer_tts Pytestに、それ以外の場合はテストのデータディレクトリを検索します
Python>=3.8を使用しますrequirements.txtおよびenvironment.ymlになりますreformer_tts/cli.py 、Run python reformer_tts/cli.py --help構成は、DataClass構造で編成されています。
config.pyと呼ばれる独自の構成ファイルがあり、パラメーターとデフォルト値が定義されています - たとえば、データセットconfigパラメーターはreformer_tts.dataset.configで指定されていますreformer_tts.config.Configクラスには、すべてのサブモジュールの構成設定が含まれていますこれにより、デフォルト値は使用されている場所の近くに設定され、任意の構成値を必要に応じてオーバーライドできます
ランタイム構成を変更します
python reformer_tts/cli.py save-config -o config/custom.ymlを使用して、デフォルト値でデフォルト値で構成を自動的に生成するか、既存の構成ファイルの1つをconfig/ディレクトリに手動でコピーする-cオプションを使用してCLIスクリプトを実行するときに構成を指定します。IE: python reformer_tts/cli.py -c config/custom.yml [COMMAND]新しいモジュールの構成を追加します
config.pyを作成しますdatasetとsqueezewaveモジュールの両方で同じ場所にあるスペクトログラムチャネルの数を1回しか指定しました)reformer_tts.configメイン構成クラスにデータを追加するフィールドを追加しますデータ処理パイプラインを定義するためにDVCを使用します。 Remoteはdvc config listを実行する詳細については、Google Cloudストレージにセットアップされています。
実行のために準備されたノード:
/scidatalgで構成されていることを確認してください実行する前:
トレーニングを実行するには:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bashを使用して選択したノードにログイン/scidatalg/reformer-tts/reformer-tts/リポジトリが適切なブランチに引っ張られていることを確認してくださいjobs/train_entropy.sbatchコピーと変更 - ノード名とトレーニングコマンドの塗りつぶしsbatch your/job/script/location.sbatch実行しますプロのヒントwatch -n 1 squeue -u your_usernameジョブがすでにpro tip2を実行しているかどうかを視聴するために、 tail -f file.log less --follow-name +F file.log
DVCから引っ張るにはjobs/entropy_dvc_pull.sbatchを使用します。
/Scidatasmディレクトリはトレーニング中に同期していないため、各ノードのトレーニングを手作業で個別にセットアップする必要があります。新しいノードでenvをセットアップするには、このインスタンスに従ってください。
注: /scidatalgを使用したノードのみがこのスクリプトでサポートされています。これらのノードは、ASUSGPU4、ASUSGPU3、ASUSGPU2、ASUSGPU1、アーノルド、シルベスターです
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.jsonにコピーします(お気に入りの編集者を使用)scripts/setup_entropy_node.shのコンテンツをホームdirの新しいファイルにコピーします(再び編集者を使用)