Como executar o modelo de reconhecimento automático de fala (ASR, na sigla em inglês)

Neste tutorial, você verá como treinar um modelo de reconhecimento automático de fala (ASR, na sigla em inglês) usando o conjunto de dados docorpus Librispeech ASR disponível publicamente com o Tensor2Tensor em uma Cloud TPU (links em inglês).

Descrição do modelo

O modelo de reconhecimento de fala é apenas um dos modelos da biblioteca Tensor2Tensor (em inglês). Tensor2Tensor ( T2T ) é uma biblioteca de modelos de aprendizado profundo e conjuntos de dados, além de um conjunto de scripts que permite treinar os modelos, fazer o download e preparar os dados. Com esse modelo, é feita a conversão de fala para texto.

Antes de começar

Antes de começar o tutorial, siga as etapas abaixo para verificar se o projeto do Google Cloud Platform foi configurado corretamente.

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do GCP, na página do seletor de projetos, selecione ou crie um projeto do GCP.

    Acesse a página do seletor de projetos

  3. Verifique se o faturamento foi ativado no projeto do Google Cloud Platform. Saiba como confirmar que o faturamento está ativado para seu projeto.

  4. Este tutorial inclui componentes faturáveis do Google Cloud Platform. Consulte a página de preços do 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 os recursos

Nesta seção, você verá como configurar os recursos da Cloud TPU, VM e armazenamento do Cloud Storage para tutoriais.

Criar um intervalo do Cloud Storage

É preciso um intervalo do Cloud Storage para armazenar os dados usados para treinar o modelo e os resultados do treinamento. A ferramenta ctpu up usada neste tutorial configura permissões padrão para a conta de serviço da Cloud TPU. Caso queira permissões mais específicas, consulte as permissões de nível de acesso.

O local do intervalo precisa estar na mesma região da máquina virtual (VM, na sigla em inglês) e do nó da TPU. As VMs e os nós da TPU estão localizados em zonas específicas, que são subdivisões dentro de uma região.

  1. Acesse a página do Cloud Storage no Console do GCP.

    Acessar a página do Cloud Storage

  2. Crie um novo intervalo especificando as opções a seguir:

    • Um nome exclusivo à sua escolha
    • Classe de armazenamento padrão: Standard
    • Local: especifique um local para o intervalo na mesma região em que você planeja criar seu nó da TPU. Consulte tipos e zonas de TPU para saber onde vários tipos de TPU estão disponíveis.

Usar a ferramenta ctpu

Nesta seção, você verá como usar a ferramenta de provisionamento da Cloud TPU (em inglês), ctpu, para criar e gerenciar recursos de projeto da Cloud TPU. Esse recursos são compostos por uma máquina virtual (VM, na sigla em inglês) e um recurso da Cloud TPU com o mesmo nome. Eles precisam residir na mesma região/zona que o intervalo recém-criado.

Também é possível configurar a VM e os recursos da TPU usando comandos gcloud ou por meio do Console do Cloud. Consulte a página Como criar e excluir TPUs para aprender todas as maneiras de configurar e gerenciar a VM do Compute Engine e os recursos da Cloud TPU.

Executar ctpu up para criar recursos

  1. Abra uma janela do Cloud Shell.

    Abrir o Cloud Shell

  2. Execute gcloud config set project <Your-Project> para usar o projeto em que a Cloud TPU será criada.

  3. Execute ctpu up especificando as sinalizações mostradas para um dispositivo Cloud TPU ou fração do pod. Consulte a Referência da CTPU para ver as opções de sinalização e descrições.

  4. Configure um dispositivo do Cloud TPU:

    $ ctpu up 

    A seguinte mensagem de configuração será exibida:

    ctpu will use the following configuration:
    
    Name: [your TPU's name]
    Zone: [your project's zone]
    GCP Project: [your project's name]
    TensorFlow Version: 1.14
    VM:
     Machine Type: [your machine type]
     Disk Size: [your disk size]
     Preemptible: [true or false]
    Cloud TPU:
     Size: [your TPU size]
     Preemptible: [true or false]
    
    OK to create your Cloud TPU resources with the above configuration? [Yn]:
    

    Pressione y para criar os recursos da Cloud TPU.

O comando ctpu up cria uma máquina virtual (VM, na sigla em inglês) e serviços da Cloud TPU.

Daqui em diante, o prefixo (vm)$ significa que é preciso executar o comando na instância de VM do Compute Engine.

Verificar a VM do Compute Engine

Quando o comando ctpu up terminar a execução, verifique se o prompt do shell foi alterado de username@project para username@tpuname. Essa alteração mostra que você fez login na VM do Compute Engine.

Adicionar espaço em disco à VM

Por questões práticas, o T2T empacota a geração de dados de muitos conjuntos comuns de código aberto no script t2t-datagen. Ele faz o download e o pré-processamento dos dados, além de prepará-los para o treinamento. Para isso, é necessário espaço no disco local.

É possível ignorar este passo se você tiver usado ctpu up para criar a VM do Compute Engine, já que ele fornece 250 GB de espaço em disco para a VM. Se você configurou a VM do Compute Engine usando os comandos do gcloud ou o Console do Cloud e não especificou o tamanho do disco da VM com pelo menos 200 GB, siga as instruções abaixo.

  • Siga o guia do Compute Engine para adicionar um disco à VM do Compute Engine.
  • Defina o tamanho do disco como 200 GB (mínimo recomendado).
  • Defina Ao excluir uma instância como Excluir disco para garantir que o disco seja removido quando você excluir a VM.

Anote o caminho do novo disco. Por exemplo, /mnt/disks/mnt-dir.

Gerar os conjuntos de dados de treinamento e avaliação

Na VM do Compute Engine:

  1. Crie as seguintes variáveis de ambiente para diretórios:

    (vm)$ STORAGE_BUCKET=gs://YOUR-BUCKET-NAME
    (vm)$ DATA_DIR=$STORAGE_BUCKET/data/
    (vm)$ OUT_DIR=$STORAGE_BUCKET/OUT_DIR
    (vm)$ export TMP_DIR=YOUR-TMP-DIRECTORY

    em que:

    • YOUR-BUCKET-NAME é o nome do intervalo do Cloud Storage.
    • DATA_DIR é um local no Cloud Storage que contém os dados de treinamento e avaliação.
    • OUT_DIR especifica o diretório em que os checkpoints e os resumos são armazenados durante o treinamento do modelo. Se a pasta não existir, o programa criará uma. Ao usar uma Cloud TPU, o output_dir precisa ser um caminho do Cloud Storage (gs://...). Reutilize uma pasta atual para carregar os dados do checkpoint atual e armazenar os novos.
    • YOUR-TMP_DIRECTORY é um local usado para armazenar dados temporários. Se você adicionou um disco à VM do Compute Engine, ele será um local no disco adicionado, por exemplo, /mnt/disks/mnt-dir/t2t_tmp. Caso contrário, ele será um diretório temporário na VM, por exemplo, /tmp/t2t_tmp.
  2. Se você adicionou um novo disco à VM do Compute Engine, crie um diretório temporário no disco adicionado.

    (vm)$ mkdir $TMP_DIR
  3. Use o script t2t-datagen (em inglês) para gerar o conjunto de dados completo e a versão reduzida limpa a ser usada para avaliação.

    A importação de áudio em t2t-datagen usa sox para gerar formas de onda normalizadas. Instale-o na VM do Compute Engine e execute os comandos t2t-datagen a seguir.

    (vm)$  sudo apt-get install sox
    (vm)$  t2t-datagen --problem=librispeech --data_dir=$DATA_DIR --tmp_dir=$TMP_DIR
    (vm)$  t2t-datagen --problem=librispeech_clean --data_dir=$DATA_DIR --tmp_dir=$TMP_DIR

O problema librispeech_train_full_test_clean é treinado no conjunto de dados completo, mas é avaliado no conjunto de dados limpo.

Também é possível usar librispeech_clean_small, que é uma versão pequena do conjunto de dados limpo.

Para ver os dados no Cloud Storage, acesse o Console do Google Cloud Platform e selecione Armazenamento no menu à esquerda. Clique no nome do intervalo que você criou para este tutorial.

Como treinar o modelo

Para treinar um modelo no Cloud TPU, execute o treinador com lotes grandes e sequências truncadas:

(vm)$ t2t-trainer \
  --model=transformer \
  --hparams_set=transformer_librispeech_tpu \
  --problem=librispeech_train_full_test_clean \
  --train_steps=210000 \
  --eval_steps=3 \
  --local_eval_frequency=100 \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --use_tpu \
  --cloud_tpu_name=$TPU_NAME

Após esse passo, execute o treinamento mais uma vez para conseguir mais passos com tamanho de lote menor e sequências completas: O treinamento leva aproximadamente 11 horas em um nó de TPU v3-8.

(vm)$ t2t-trainer \
  --model=transformer \
  --hparams_set=transformer_librispeech_tpu \
  --hparams=max_length=295650,max_input_seq_length=3650,max_target_seq_length=650,batch_size=6 \
  --problem=librispeech_train_full_test_clean \
  --train_steps=230000 \
  --eval_steps=3 \
  --local_eval_frequency=100 \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --use_tpu \
  --cloud_tpu_name=$TPU_NAME

Realizar a limpeza

As etapas abaixo mostram como evitar cobranças na sua conta do GCP pelo uso de recursos.

  1. Encerre a conexão com a VM do Compute Engine:

    (vm)$ exit
    

    Agora, o prompt será user@projectname, mostrando que você está no Cloud Shell.

  2. No Cloud Shell, execute ctpu delete com a sinalização --zone usada ao configurar a Cloud TPU para excluir a VM do Compute Engine e a Cloud TPU:

    $ ctpu delete [optional: --zone]
    
  3. Execute ctpu status para garantir que não haja instâncias alocadas e evitar cobranças desnecessárias no uso da TPU. A exclusão pode levar vários minutos. Uma resposta como esta indica que não há mais instâncias alocadas:

    2018/04/28 16:16:23 WARNING: Setting zone to "us-central1-b"
    No instances currently exist.
            Compute Engine VM:     --
            Cloud TPU:             --
    
  4. Execute gsutil conforme mostrado. Substitua YOUR-BUCKET-NAME pelo nome do intervalo do Cloud Storage criado para este tutorial:

    $ gsutil rm -r gs://YOUR-BUCKET-NAME
    

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.