Eine Anpassung des Reformers: Der effiziente Transformator für Text-to-Speech-Aufgabe.
Dieses Projekt enthält:
Wir wollten eine wesentlich effizientere Version des hochmodernen Text-zu-Sprache-Modells erstellen, indem wir seine Transformatorarchitektur durch Optimierungen ersetzen, die in der neueren Reformerpapiere vorgeschlagen wurden. Wir werden es verwenden, um eine glaubwürdige Deepfake von Donald Trump zu generieren, die auf einem benutzerdefinierten Datensatz seiner Reden basiert, die speziell für diesen Zweck erstellt wurden.
Leider konnten wir keine Ergebnisse erzielen, die denjenigen aus Transformator -TTS -Papier entsprechen, nachdem wir über 2 Monate mit mehr als 100 Hyperparameter -Kombinationen experimentierten. Wir glauben, dass die Modellgröße hier ein wesentlicher Faktor ist und Transformatoren für TTs zu trainieren, die man wirklich reduzieren muss, um einen langen, stetigen Trainingsprozess (~ 1 Woche Training auf RTX 2080TI) zu ermöglichen.
Außerdem würde der Zugriff auf die ursprüngliche Implementierung von Transformator -TTs sehr helfen.
Obwohl der Reformer unseren Erwartungen nicht entsprach, entspricht die Implementierung von Squeezewave die Leistung des Originals ohne FP16 -Unterstützung.
Wir enthalten auch CLI für das Ausführen von Training und Inferenz (siehe Nutzungsabschnitt ) sowie alle Daten, die für die Reproduktion von Experimenten erforderlich sind (siehe Abschnitt Entwicklungsabschnitt ).
Das Projekt befindet sich unter einem bedeutenden Refactor, diese Version bleibt hier, um die Kompatibilität mit unseren vorherigen Extraktionen zu ermöglichen, und wird in naher Zukunft bewegt .
Dieses Projekt ist ein normales Python -Paket und kann mit pip installiert werden, solange Sie Python 3.8 oder mehr haben.
Gehen Sie zur Seite "Releases", um die Installationsanweisung für die neueste Version zu finden.
Nach der Installation können Sie verfügbare Befehle sehen, indem Sie ausführen:
python -m reformer_tts.cli --helpAlle Befehle werden beispielsweise mit CLI ausgeführt:
python -m reformer_tts.cli train-vocoder Die meisten Parameter (insbesondere alle Trainingshyperparameter) werden über ein Argument für --config (das vor dem Befehl, den Sie ausführen möchten), z. B. über das Argument für cli angegeben:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder Standardwerte finden Sie in reformer_tts.config.Config (und seinen Feldern).
Dank der Conda-Forge Community können wir alle Pakete (einschließlich notwendiger Binärdateien wie ffmpeg ) mit einem Befehl installieren.
conda env create -f environment.ymlPython>=3.8 haben: which python
python --versionpip install -r requirements.txt Stellen Sie sicher, dass Sie ffmpeg>=3.4,<4.0 installiert haben (Installationsanweisungen)
Stellen Sie zum Training sicher, dass Sie CUDA- und GPU -Treiber installieren (Einzelheiten finden Sie unter Anweisungen auf der Pytorch -Website).
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonHINWEIS: Wenn Sie nur Lesen von Acces (zur Reproduktion) benötigen, müssen Sie Schritt 1 nicht ausführen
dvc pullDazu können Sie Projekttests ausführen:
python -m pytest --pyargs reformer_ttsAlle Tests sollten auf CPU und GPU funktionieren und können bis zu einer Minute dauern.
Denken Sie daran, --pyargs reformer_tts an PyTest zu übergeben, ansonsten werden Datenverzeichnisse nach Tests durchsucht
Python>=3.8requirements.txt als auch in environment.yml erfolgenreformer_tts/cli.py , Run python reformer_tts/cli.py --help für detaillierte ReferenzDie Konfiguration ist in Dataclass -Strukturen organisiert:
config.py , wobei die Parameter und Standardwerte definiert sind - beispielsweise sind Datensatzkonfigurationsparameter in reformer_tts.dataset.config angegebenreformer_tts.config.Config -Klasse enthält alle Konfigurationseinstellungen von SubmodulesAuf diese Weise werden die Standardwerte in der Nähe des Ortes festgelegt, an dem sie verwendet werden, und jeder Konfigurationswert kann überall überschrieben werden, wo immer Sie möchten
Um die Laufzeitkonfiguration zu ändern
python reformer_tts/cli.py save-config -o config/custom.yml oder kopieren Sie manuell eine der vorhandenen Konfigurationsdateien in config/ Verzeichnis manuell-c ausführen, dh python reformer_tts/cli.py -c config/custom.yml [COMMAND]Fügen Sie Konfiguration für ein neues Modul hinzu
config.py in Ihrem Modul erstellendataset als auch für squeezewave -Module).reformer_tts.config hinzu Wir verwenden DVC zum Definieren von Datenverarbeitungspipelines. Remote wird im Google Cloud -Speicher eingerichtet, um Details auszuführen, die dvc config list ausführen.
Knoten für das Laufen vorbereitet:
/scidatalg konfiguriert istVor dem Laufen:
Training durchführen:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash bei einem ausgewählten Knoten an./scidatalg/reformer-tts/reformer-tts/ Stellen Sie sicher, dass das Repository gezogen wird und an der richtigen Filialejobs/train_entropy.sbatch - Füllen Sie den Befehl des Knotennamens und des Trainings aussbatch your/job/script/location.sbatch Pro Tipp watch -n 1 squeue -u your_username zu sehen tail -f file.log wenn less --follow-name +F file.log Job bereits pro Tip2 ausgeführt wird
Um von DVC zu ziehen, verwenden Sie jobs/entropy_dvc_pull.sbatch .
Da /Scidatasm -Verzeichnis nicht synchronisiert wird, während wir trainieren möchten, müssen wir das Training auf jedem Knoten von Hand separat einrichten. Um Env auf einem neuen Knoten einzurichten, folgen Sie folgenden Angaben:
Hinweis : Nur Knoten mit /scidatalg werden von diesen Skripten unterstützt. Diese Knoten sind: Asusgpu4, Asusgpu3, Asusgpu2, Asusgpu1, Arnold, Sylvester
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (mit Ihrem Lieblings-Editor)scripts/setup_entropy_node.sh in eine neue Datei in Home DIR (erneut mit dem Editor).