Une adaptation du réformateur: le transformateur efficace pour la tâche de texte vocale.
Ce projet contient:
Nous avons visé à créer une version beaucoup plus efficace du modèle de texte vocale de pointe, en remplaçant son architecture de transformateur par des optimisations proposées dans le document de réformateur plus récent. Nous allons l'utiliser pour générer une profondeur crédible de Donald Trump sur la base d'un ensemble de données personnalisé de ses discours, créé spécifiquement à cet effet.
Malheureusement, nous n'avons pas pu produire de résultats correspondant à ceux du papier TTS Transformer, après avoir expérimenté plus de 100 combinaisons d'hyperparamètre sur 2 mois. Nous pensons que la taille du modèle est un facteur important ici, et pour former des transformateurs pour TTS, il faut vraiment réduire le sur-ajustement pour permettre un processus de formation régulier et régulier (~ 1 semaine de formation sur RTX 2080TI).
De plus, avoir accès à la mise en œuvre originale de Transformer TTS aiderait grandement.
Bien que le réformateur ne correspondait pas à nos attentes, la mise en œuvre de Squeezewave correspond aux performances de l'original sans support FP16.
Nous incluons également la CLI pour l'exécution de la formation et de l'inférence (voir la section d'utilisation ) et toutes les données nécessaires à la reproduction des expériences (voir section de développement ).
Le projet est sous un refacteur important, cette version est laissée ici pour permettre la compatilité avec nos expeirments précédents et sera déplacée dans un avenir proche .
Ce projet est un package Python normal et peut être installé à l'aide de pip , tant que vous avez Python 3.8 ou plus .
Accédez à la page des versions pour trouver l'instruction d'installation pour la dernière version.
Après l'installation, vous pouvez voir les commandes disponibles en exécutant:
python -m reformer_tts.cli --helpToutes les commandes sont exécutées à l'aide de CLI, par exemple:
python -m reformer_tts.cli train-vocoder La plupart des paramètres (en particulier, tous les hyperparamètres de formation) sont spécifiés via un argument --config à cli (qui passe avant la commande que vous souhaitez exécuter), par exemple:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder Les valeurs par défaut peuvent être trouvées dans reformer_tts.config.Config (et ses champs).
Grâce à la communauté de Conda-Forge, nous pouvons installer tous les packages (y compris les binaires nécessaires, comme ffmpeg ) en utilisant une commande.
conda env create -f environment.ymlPython>=3.8 : which python
python --versionpip install -r requirements.txt Assurez-vous que vous avez ffmpeg>=3.4,<4.0 installé (instructions d'installation)
Pour la formation, assurez-vous que les pilotes CUDA et GPU sont installés (pour plus de détails, consultez les instructions sur le site Web de Pytorch)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonRemarque: si vous n'avez besoin que de lire les acces (pour la reproduction), vous n'avez pas besoin d'effectuer l'étape 1
dvc pullPour ce faire, vous pouvez exécuter des tests de projet:
python -m pytest --pyargs reformer_ttsTous les tests doivent fonctionner sur le processeur et le GPU, et peuvent prendre jusqu'à une minute pour terminer.
N'oubliez pas de passer --pyargs reformer_tts à pytest, sinon il recherchera les répertoires de données pour les tests
Python>=3.8requirements.txt ainsi que dans environment.ymlreformer_tts/cli.py , exécutez python reformer_tts/cli.py --help pour référence détailléeLa configuration est organisée en structures de classe de données:
config.py , où les paramètres et les valeurs par défaut sont définis - par exemple, les paramètres de configuration de données sont spécifiés dans reformer_tts.dataset.configreformer_tts.config.Config contient tous les paramètres de configuration de tous les sous-modulesDe cette façon, les valeurs par défaut sont définies près de l'endroit où elles sont utilisées, toute valeur de configuration peut être remplacée où vous le souhaitez
Pour modifier la configuration d'exécution
python reformer_tts/cli.py save-config -o config/custom.yml ou copiez manuellement l'un des fichiers de configuration existants dans config/ répertoire-c , c'est-à-dire: python reformer_tts/cli.py -c config/custom.yml [COMMAND]Pour ajouter la configuration pour un nouveau module
config.py dans votre moduledataset et squeezewave )reformer_tts.config Nous utilisons DVC pour définir des pipelines de traitement des données. Remote est configuré sur Google Cloud Storage, pour plus de détails, exécutez dvc config list .
Nœuds préparés à la course:
/scidatalgAvant de courir:
Pour exécuter la formation:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash/scidatalg/reformer-tts/reformer-tts/ assurez-vous que le référentiel est tiré et sur une branche appropriéejobs/train_entropy.sbatch - Remplissez le nom du nœud et la commande de formationsbatch your/job/script/location.sbatch Pro-pointer watch -n 1 squeue -u your_username to watch si votre travail exécute déjà pro tip2, vous pouvez regarder les mises à jour du journal en exécutant tail -f file.log ou less --follow-name +F file.log
Pour tirer de DVC, utilisez jobs/entropy_dvc_pull.sbatch .
Puisque le répertoire / Scidatasm ne se synchronise pas pendant que nous voulons nous entraîner, nous devons configurer la formation sur chaque nœud séparément à la main. Pour configurer Env sur un nouveau nœud, suivez ces instuces:
Remarque : Seuls les nœuds avec / Scidatalg sont pris en charge par ces scripts. Ces nœuds sont: ASUSGPU4, ASUSGPU3, ASUSGPU2, ASUSGPU1, ARNOLD, SYLVESTER
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (en utilisant votre éditeur préféré)scripts/setup_entropy_node.sh dans un nouveau fichier dans le Dir à domicile (à nouveau en utilisant l'éditeur)