Uma adaptação do reformador: o transformador eficiente para a tarefa de texto em fala.
Este projeto contém:
Nosso objetivo foi criar uma versão significativamente mais eficiente do modelo de texto para fala, substituindo sua arquitetura de transformadores por otimizações propostas no artigo de reformador mais recente. Usaremos para gerar um DeepFake crível de Donald Trump com base em um conjunto de dados personalizado de seus discursos, criado especificamente para esse fim.
Infelizmente, não fomos capazes de produzir resultados correspondentes aos do papel TTS do transformador, depois de experimentar mais de 100 combinações de hiperparâmetro em 2 meses. Acreditamos que o tamanho do modelo é um fator significativo aqui e, para treinar transformadores para o TTS, realmente precisa reduzir o excesso de ajuste para permitir um processo de treinamento longo e constante (~ 1 semana de treinamento no RTX 2080TI).
Além disso, ter acesso à implementação original do TTS do transformador ajudaria muito.
Embora o reformador não corresponda às nossas expectativas, a implementação do Squeezewave corresponde ao desempenho do original sem suporte ao FP16.
Também incluímos a CLI para executar treinamento e inferência (consulte a seção de uso ) e todos os dados necessários para a reprodução de experimentos (consulte a seção de desenvolvimento ).
O projeto está sob um refator significativo, esta versão é deixada aqui para permitir a compatibilidade com nossas expostas anteriores e será movida em um futuro próximo .
Este projeto é um pacote Python normal e pode ser instalado usando pip , desde que você tenha o Python 3.8 ou maior .
Vá para a página de lançamentos para encontrar a instrução de instalação para a versão mais recente.
Após a instalação, você pode ver os comandos disponíveis em execução:
python -m reformer_tts.cli --helpTodos os comandos são executados usando a CLI, por exemplo:
python -m reformer_tts.cli train-vocoder A maioria dos parâmetros (em particular, todos os hiperparâmetros de treinamento) são especificados via --config argumento para a cli (que vai antes do comando que você deseja executar), por exemplo:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder Os valores padrão podem ser encontrados em reformer_tts.config.Config (e seus campos).
Graças à comunidade Conde-Forge, podemos instalar todos os pacotes (incluindo os binários necessários, como ffmpeg ) usando um comando.
conda env create -f environment.ymlPython>=3.8 : which python
python --versionpip install -r requirements.txt Certifique -se de ter ffmpeg>=3.4,<4.0 instalado (Instruções de instalação)
Para treinamento, verifique se você possui drivers CUDA e GPU instalados (para obter detalhes, consulte as instruções no site da Pytorch)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonNOTA: Se você precisar apenas ler Acces (para reprodução), não precisará executar a Etapa 1
dvc pullPara fazer isso, você pode executar testes de projeto:
python -m pytest --pyargs reformer_ttsTodos os testes devem funcionar na CPU e GPU e podem levar até um minuto para ser concluído.
Lembre -se de passar --pyargs reformer_tts para Pytest, caso contrário, ele pesquisará os diretórios de dados para testes
Python>=3.8requirements.txt , bem como em environment.ymlreformer_tts/cli.py , execute python reformer_tts/cli.py --help para referência detalhadaA configuração está organizada em estruturas de dataclass:
config.py , onde os parâmetros e valores padrão são definidos - por exemplo, os parâmetros de configuração do conjunto de dados são especificados em reformer_tts.dataset.configreformer_tts.config.Config contém as configurações de configuração de todos os submódulosDessa forma, os valores padrão são definidos próximos ao local onde são usados, qualquer valor de configuração pode ser substituído onde quiser
Para alterar a configuração de tempo de execução
python reformer_tts/cli.py save-config -o config/custom.yml ou copie manualmente um dos arquivos de configuração existentes no config/ diretório-c opção, ou seja: python reformer_tts/cli.py -c config/custom.yml [COMMAND]Para adicionar configuração para novo módulo
config.py em seu módulodataset e squeezewave )reformer_tts.config Usamos o DVC para definir pipelines de processamento de dados. O controle remoto é configurado no Google Cloud Storage, para obter detalhes Execute dvc config list .
Nós preparados para correr:
/scidatalgAntes de correr:
Para executar o treinamento:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash/scidatalg/reformer-tts/reformer-tts/ Verifique se o repositório é puxado e em ramo adequadojobs/train_entropy.sbatch - Preencha o nome do nó e o comando de treinamentosbatch your/job/script/location.sbatch PRO DICA DE watch -n 1 squeue -u your_username PARA ASSISTIR SE SEU TRABALHO JÁ ESTÁ CONSULTIDO PRO TIP2 Você pode assistir às atualizações do registro executando tail -f file.log ou less --follow-name +F file.log
Para retirar do DVC, use jobs/entropy_dvc_pull.sbatch .
Como o diretório de Scidatasm não está sincronizando enquanto queremos treinar, precisamos configurar o treinamento em cada nó separadamente à mão. Para configurar Env no novo nó, siga estas Instituições:
Nota : apenas nós com /scidatalg são suportados por esses scripts. Esses nós são: asusgpu4, asusgpu3, asusgpu2, asusgpu1, Arnold, Sylvester
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (usando seu editor favorito)scripts/setup_entropy_node.sh para o novo arquivo no Dir Home (novamente usando o editor)