Neste tutorial, mostramos como treinar previamente o modelo Wav2Vec2 de FairSeq em um dispositivo do Cloud TPU com o PyTorch. É possível aplicar o mesmo padrão a outros modelos de classificação de imagem otimizados para TPU que usam o PyTorch e o conjunto de dados do ImageNet.
O modelo deste tutorial é baseado no documento wav2vec 2.0: A Framework for Self-supervisioned Learning of Speech Representations (em inglês).
Objetivos
- Crie e configure o ambiente PyTorch
- Faça o download dos dados do LibriSpeech de código aberto.
- Executar o job de treinamento.
Custos
Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:
- Compute Engine
- Cloud TPU
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
Antes de começar o tutorial, verifique se o projeto do Google Cloud foi configurado corretamente.
- No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud. Observação: se você não pretende manter os recursos criados neste procedimento, crie um projeto em vez de selecionar um que já existe. Depois de concluir essas etapas, é possível excluir o projeto. Para fazer isso, basta remover todos os recursos associados a ele.
- Acesse a página do seletor de projetos e verifique se o faturamento está ativado para o projeto do Cloud. Saiba como confirmar se o faturamento está ativado para o projeto.
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
Este tutorial usa componentes faturáveis do Google Cloud. Consulte a página de preços da Cloud TPU para fazer uma estimativa dos custos. Para evitar cobranças desnecessárias, não se esqueça de apagar os recursos criados ao terminar de usá-los.
Configurar uma instância do Compute Engine
Abra uma janela do Cloud Shell.
Crie uma variável para o ID do seu projeto.
export PROJECT_ID=project-id
Configure a Google Cloud CLI para usar o projeto em que a Cloud TPU será criada.
gcloud config set project ${PROJECT_ID}
Na primeira vez que você executar esse comando em uma nova VM do Cloud Shell, será exibida uma página
Authorize Cloud Shell
. Clique emAuthorize
na parte inferior da página para permitir quegcloud
faça chamadas de API com suas credenciais.No Cloud Shell, inicie o recurso do Compute Engine necessário para este tutorial.
gcloud compute instances create wav2vec2-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-64 \ --image-family=torch-xla \ --image-project=ml-images \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
Conecte-se à nova instância do Compute Engine.
gcloud compute ssh wav2vec2-tutorial --zone=us-central1-a
Iniciar um recurso da Cloud TPU
Na máquina virtual do Compute Engine, defina a versão do PyTorch.
(vm) $ export PYTORCH_VERSION=2.0
Inicie um recurso do Cloud TPU usando o seguinte comando:
(vm) $ gcloud compute tpus create wav2vec2-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-2.0 \ --accelerator-type=v3-8
Identifique o endereço IP para o recurso do Cloud TPU executando o comando a seguir:
(vm) $ gcloud compute tpus describe wav2vec2-tutorial --zone=us-central1-a
Esse comando exibirá informações sobre a TPU. Procure a linha marcada como
ipAddress
. Substituaip-address
pelo endereço IP no seguinte comando:(vm) $ export TPU_IP_ADDRESS=ip-address (vm) $ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
Crie e configure o ambiente PyTorch
Inicie um ambiente
conda
.(vm) $ conda activate torch-xla-2.0
Configure variáveis de ambiente para o recurso Cloud TPU.
Fazer o download e preparar dados
Acesse o site do OpenSLR para ver os conjuntos de dados alternativos que podem ser usados nesta
tarefa. Neste tutorial, usaremos dev-clean.tar.gz
porque ele tem o menor tempo de
pré-processamento.
O Wav2Vec2 requer algumas dependências, instale-as agora.
(vm) $ pip install omegaconf hydra-core soundfile (vm) $ sudo apt-get install libsndfile-dev
Faça o download do conjunto de dados.
(vm) $ curl https://www.openslr.org/resources/12/dev-clean.tar.gz --output dev-clean.tar.gz
Extraia os arquivos compactados. Seus arquivos estão armazenados na pasta
LibriSpeech
.(vm) $ tar xf dev-clean.tar.gz
Faça o download e instale o modelo Fairseq mais recente.
(vm) $ git clone --recursive https://github.com/pytorch/fairseq.git (vm) $ cd fairseq (vm) $ pip install --editable . (vm) $ cd -
Preparar o conjunto de dados. Esse script cria uma pasta chamada
manifest/
com o ponteiro para os dados brutos (emLibriSpeech/
).(vm) $ python fairseq/examples/wav2vec/wav2vec_manifest.py LibriSpeech/ --dest manifest/
Executar o job de treinamento
Execute o modelo nos dados do LibriSpeech. O script leva cerca de duas horas para ser executado.
(vm) $ fairseq-hydra-train \ task.data=${HOME}/manifest \ optimization.max_update=400000 \ dataset.batch_size=4 \ common.log_format=simple \ --config-dir fairseq/examples/wav2vec/config/pretraining \ --config-name wav2vec2_large_librivox_tpu.yaml
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Desconecte-se da instância do Compute Engine, caso ainda não tenha feito isso:
(vm)$ exit
Agora, o prompt será
user@projectname
, mostrando que você está no Cloud Shell.No Cloud Shell, use a Google Cloud CLI para excluir a instância de VM e a TPU do Compute Engine:
$ gcloud compute tpus delete wav2vec2-tutorial --zone=us-central1-a
A seguir
Como escalonar para pods do Cloud TPU
Consulte o tutorial Como treinar modelos PyTorch em pods do Cloud TPU para escalonar a tarefa de pré-treinamento deste tutorial para os poderosos pods do Cloud TPU.
Teste as colabs do PyTorch:
- Primeiros passos com o PyTorch em Cloud TPUs
- Como treinar MNIST em TPUs (em inglês)
- Como treinar o ResNet18 em TPUs com o conjunto de dados Cifar10 (em inglês)
- Inferência com modelo ResNet50 pré-treinado (em inglês)
- Transferência rápida de estilo neural
- Treinamento de vários núcleos da AlexNet no Fashion MNIST
- Treinamento de núcleo único da AlexNet no Fashion MNIST