Como treinar no Transformer no Cloud TPU (TF 2.x)

Se você não conhece muito bem o Cloud TPU, é altamente recomendável consultar o guia de início rápido para saber como criar uma TPU e uma VM do Compute Engine.

Neste tutorial, mostramos como treinar um modelo do Transformer no Cloud TPU. O Transformer é uma arquitetura de rede neural que resolve problemas de sequência usando mecanismos de atenção. Ao contrário dos modelos neurais tradicionais seq2seq, o Transformer não envolve conexões recorrentes. O mecanismo de atenção aprende as dependências entre tokens em duas sequências. Como os pesos de atenção se aplicam a todos os tokens nas sequências, o modelo Transformer pode facilmente capturar dependências de longa distância.

A estrutura geral do Transformer segue o padrão de codificador-decodificador. O codificador usa a atenção própria para calcular uma representação da sequência de entrada. O decodificador gera a sequência de saída um token por vez, usando a saída do codificador e os tokens de saída decodificados anteriores como entradas.

O modelo também aplica embeddings aos tokens de entrada e saída e adiciona uma codificação posicional constante. A codificação posicional adiciona informações sobre a posição de cada token.

Objetivos

  • Criar um bucket do Cloud Storage para armazenar o conjunto de dados e a saída do modelo.
  • Faça o download e pré-processe o conjunto de dados usado para treinar o modelo.
  • Executar o job de treinamento.
  • Verificar os resultados da saída.

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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

Antes de começar o tutorial, verifique se o projeto do Google Cloud foi configurado corretamente.

  1. 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.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  6. 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.

Treinamento de dispositivo único do Cloud TPU

Nesta seção, você verá informações sobre como configurar recursos de bucket, VM e Cloud TPU do Cloud Storage para treinamento em dispositivos únicos.

  1. Abra uma janela do Cloud Shell.

    Abra o Cloud Shell

  2. Crie uma variável para o ID do seu projeto.

    export PROJECT_ID=project-id
  3. Configure a CLI do Google Cloud para usar o projeto em que você quer criar uma Cloud TPU.

    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 em Authorize na parte inferior da página para permitir que gcloud faça chamadas de API do GCP com suas credenciais.

  4. Crie uma conta de serviço para o projeto da Cloud TPU.

    As contas de serviço permitem que o serviço do Cloud TPU acesse outros serviços do Google Cloud Platform.

    $ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    O comando retorna uma conta de serviço do Cloud TPU com o formato a seguir:

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. Crie um bucket do Cloud Storage usando o seguinte comando:

    $ gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    

    Esse bucket do Cloud Storage armazena os dados usados para treinar o modelo e os resultados do treinamento. O comando gcloud usado neste tutorial para configurar a TPU também configura permissões padrão para a conta de serviço do Cloud TPU configurada na etapa anterior. Caso queira permissões mais específicas, consulte as permissões de nível de acesso.

Preparar o conjunto de dados

Para reduzir seus custos gerais, recomendamos usar uma VM do Compute Engine para realizar qualquer download ou pré-processamento de dados de longa duração.

  1. Abra uma janela do Cloud Shell.

    Abra o Cloud Shell

  2. Crie uma VM do Compute Engine para fazer o download e o pré-processamento dos seus dados.

    gcloud compute tpus execution-groups create --name=transformer-tutorial \
      --disk-size=300 \
      --machine-type=n1-standard-8 \
      --zone=europe-west4-a \
      --tf-version=2.8.0 \
      --vm-only
  3. Se você não for conectado automaticamente à instância do Compute Engine, faça login executando o seguinte comando ssh. Quando você está conectado à VM, o prompt do shell muda de username@projectname para username@vm-name:

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a

    Ao continuar essas instruções, execute cada comando que começa com (vm)$ na instância do Compute Engine.

  4. Exportar variáveis de configuração da TPU

    Exporte o ID do projeto, o nome que você quer usar para os recursos da TPU e a zona em que você treinará o modelo e armazenará todos os dados relacionados ao treinamento.

    $ export TPU_NAME=transformer-tutorial
    $ export ZONE=europe-west4-a

  5. Exporte as variáveis do bucket do Cloud Storage. Substitua bucket-name pelo nome do seu bucket:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    
  6. Instale os requisitos do TensorFlow e defina a variável de ambiente PYTHONPATH.

    (vm)$ pip3 install -r /usr/share/models/official/requirements.txt
    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    
  7. Mude para o diretório que armazena o modelo:

    (vm)$ cd /usr/share/models/official/legacy/transformer
  8. Fazer o download e pré-processar os conjuntos de dados

    (vm)$ python3 data_download.py --data_dir=${DATA_DIR}
    (vm)$ gsutil cp -r ${DATA_DIR} ${GCS_DATA_DIR}
    

    data_download.py faz o download e pré-processa os conjuntos de dados WMT de treinamento e avaliação. Depois que são feitos o download e a extração dos dados, os dados de treinamento são usados para gerar um vocabulário de subtokens. As strings de avaliação e treinamento são tokenizadas, e os dados resultantes são fragmentados, embaralhados e salvos como TFRecords.

    Download de 1,75 GB de dados compactados. No total, os arquivos brutos (compactados, extraídos e combinados) ocupam 8,4 GB de espaço em disco. O TFRecord e os arquivos de vocabulário resultantes têm 722 MB. O script economiza 460.000 casos e leva aproximadamente 40 minutos para ser executado.

  9. Limpar os recursos da VM

    Depois que o conjunto de dados tiver sido convertido em TFRecords e copiado para o DATA_DIR no bucket do Cloud Storage, será possível excluir a instância do Compute Engine.

    Desconecte-se da instância do Compute Engine:

    (vm)$ exit
    

    Agora o prompt será username@projectname, mostrando que você está de volta ao Cloud Shell.

  10. Exclua a instância do Compute Engine.

    $ gcloud compute instances delete transformer-tutorial \
        --zone=europe-west4-a

Treinar um modelo de tradução inglês-alemão em uma única TPU

  1. Use o comando gcloud para iniciar uma VM do Compute Engine e a Cloud TPU. O comando usado depende se você usa VMs ou nós de TPU. Para mais informações sobre a arquitetura de duas VMs, consulte Arquitetura do sistema.

    VM de TPU

    $ gcloud alpha compute tpus tpu-vm create transformer-tutorial \
     --zone=europe-west4-a \
     --accelerator-type=v3-8 \
     --version=tpu-vm-tf-2.8.0
    

    Descrições de sinalizações de comando

    zone
    A zona em que você planeja criar a Cloud TPU.
    accelerator-type
    O tipo da Cloud TPU a ser criada.
    version
    A versão do software do Cloud TPU.

    Nó da TPU

    $ gcloud compute tpus execution-groups create \
    --name=transformer-tutorial \
    --disk-size=300 \
    --machine-type=n1-standard-8 \
    --zone=europe-west4-a \
    --tf-version=2.8.0
    

    Descrições de sinalizações de comando

    disk-size
    O tamanho do disco para a VM em GB.
    machine_type
    O tipo de máquina da VM que o comando gcloud cria.
    tf-version
    A versão do TensorFlow gcloud compute tpus execution-groups é instalada na VM.
  2. Se você não for conectado automaticamente à instância do Compute Engine, faça login executando o seguinte comando ssh.

    VM de TPU

    gcloud alpha compute tpus tpu-vm ssh transformer-tutorial --zone=europe-west4-a
    

    Nó de TPU

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a
    
  3. Exporte as variáveis de armazenamento de dados.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    (vm)$ export PARAM_SET=big
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/transformer/model_${PARAM_SET}
    
  4. Instale os requisitos do TensorFlow.

    VM de TPU

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    (vm)$  export PYTHONPATH="/usr/share/tpu/models:$PYTHONPATH"
    

    Nó da TPU

    (vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
    (vm)$ export PYTHONPATH="/usr/share/models:$PYTHONPATH"
    
  5. Exporte uma variável do Cloud TPU.

    VM de TPU

    (vm)$ export TPU_NAME=local

    Nó da TPU

    (vm)$ export TPU_NAME=transformer-tutorial

  6. Mude para o diretório de treinamento.

    VM de TPU

    (vm)$ cd /usr/share/tpu/models/official/legacy/transformer

    Nó de TPU

    (vm)$ cd /usr/share/models/official/legacy/transformer
  7. Execute o script de treinamento:

    (vm)$ python3 transformer_main.py \
        --tpu=${TPU_NAME} \
        --model_dir=${MODEL_DIR} \
        --data_dir=${GCS_DATA_DIR} \
        --vocab_file=${GCS_DATA_DIR}/vocab.ende.32768 \
        --bleu_source=${GCS_DATA_DIR}/newstest2014.en \
        --bleu_ref=${GCS_DATA_DIR}/newstest2014.de \
        --batch_size=6144 \
        --train_steps=2000 \
        --static_batch=true \
        --use_ctl=true \
        --param_set=big \
        --max_length=64 \
        --decode_batch_size=32 \
        --decode_max_length=97 \
        --padded_decode=true \
        --distribution_strategy=tpu
    

    Descrições de sinalizações de comando

    tpu
    O nome da Cloud TPU. Para isso, especifique a variável de ambiente (TPU_NAME).
    model_dir
    O bucket do Cloud Storage em que os checkpoints e os resumos são armazenados durante o treinamento. Use uma pasta atual para carregar os checkpoints gerados anteriormente criados em uma TPU do mesmo tamanho e versão do TensorFlow.
    data_dir
    O caminho do Cloud Storage da entrada de treinamento. Neste exemplo, ele está definido com o conjunto de dados fake_imagenet.
    vocab_file
    Um arquivo que contém o vocabulário da tradução.
    bleu_source
    Um arquivo que contém frases de origem para tradução.
    bleu_ref
    Um arquivo que contém a referência das frases de tradução.
    train_steps
    O número de etapas para treinar o modelo. Uma etapa processa um lote de dados. Isso inclui um encaminhamento e a retropropagação.
    batch_size
    O tamanho do lote de treinamento.
    static_batch
    Especifica se os lotes no conjunto de dados têm formas estáticas.
    use_ctl
    Especifica se o script é executado com um loop de treinamento personalizado.
    param_set
    O conjunto de parâmetros a ser usado ao criar e treinar o modelo. Os parâmetros definem a forma de entrada, a configuração do modelo e outras configurações.
    max_length
    O tamanho máximo de um exemplo no conjunto de dados.
    decode_batch_size
    O tamanho global do lote usado para decodificação automática regressiva do Transformer em um Cloud TPU.
    decode_max_length
    O tamanho máximo da sequência dos dados de decodificação/avaliação. Isso é usado pela decodificação de regressão automática do Transformer em uma Cloud TPU para minimizar a quantidade de padding de dados exigida.
    padded_decode
    Especifica se a decodificação de regressão automática é executada com dados de entrada com padding para decode_max_length. Para que TPU/XLA-GPU seja executado, esta sinalização precisa estar definida por causa do requisito de forma estática.
    distribution_strategy
    Para treinar o modelo ResNet em um Cloud TPU, defina distribution_strategy como tpu.

    Por padrão, o modelo será avaliado após cada 2.000 etapas. Para treinar para a conversão, altere train_steps para 200.000. Você pode aumentar o número de etapas de treinamento ou especificar com que frequência executar avaliações definindo estes parâmetros:

    • --train_steps: define o número total de etapas de treinamento a serem executadas.
    • --steps_between_evals: número de etapas de treinamento a serem executadas entre as avaliações.

    O treinamento e a avaliação levam aproximadamente sete minutos em um Cloud TPU v3-8. Quando o treinamento e a avaliação forem concluídos, uma mensagem semelhante a esta será exibida:

    INFO:tensorflow:Writing to file /tmp/tmpej76vasn
    I0218 20:07:26.020797 140707963950912 translate.py:184] Writing to file /tmp/tmpej76vasn
    I0218 20:07:35.099256 140707963950912 transformer_main.py:118] Bleu score (uncased): 0.99971704185009
    I0218 20:07:35.099616 140707963950912 transformer_main.py:119] Bleu score (cased): 0.9768599644303322
    

    Você concluiu o treinamento para dispositivos únicos. Use as etapas a seguir para excluir os recursos da TPU de dispositivo único.

  8. Desconecte-se da instância do Compute Engine:

    (vm)$ exit
    

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

  9. Exclua o recurso da TPU.

    VM de TPU

    $ gcloud alpha compute tpus tpu-vm delete transformer-tutorial \
    --zone=europe-west4-a
    

    Descrições de sinalizações de comando

    zone
    A zona onde o Cloud TPU residiu.

    Nó de TPU

    $ gcloud compute tpus execution-groups delete transformer-tutorial \
    --zone=europe-west4-a
    

    Descrições de sinalizações de comando

    tpu-only
    Exclui apenas o Cloud TPU. A VM continua disponível.
    zone
    A zona que contém a TPU a ser excluída.

Neste ponto, é possível concluir este tutorial e limpar ou continuar executando o modelo nos Pods do Cloud TPU.

Escalonar seu modelo com os pods da Cloud TPU

O treinamento do modelo nos pods da Cloud TPU pode exigir algumas alterações no script de treinamento. Para saber mais, consulte Como treinar em pods da TPU.

As instruções a seguir pressupõem que você já abriu um Cloud Shell, configurou o projeto da TPU e criou um bucket do Cloud Storage, conforme explicado no início deste tutorial.

Treinamento do Pod de TPU

  1. Abra uma janela do Cloud Shell.

    Abra o Cloud Shell

  2. Crie uma variável para o ID do seu projeto.

    export PROJECT_ID=project-id
    
  3. Configure a CLI do Google Cloud para usar o projeto em que você quer criar uma Cloud TPU.

    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 em Authorize na parte inferior da página para permitir que gcloud faça chamadas de API do GCP com suas credenciais.

  4. Crie uma conta de serviço para o projeto da Cloud TPU.

    gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    O comando retorna uma conta de serviço do Cloud TPU com o formato a seguir:

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. Crie um bucket do Cloud Storage usando o comando a seguir ou use um bucket criado anteriormente para o projeto:

    gsutil mb -p ${PROJECT_ID} -c standard -l us-central1 gs://bucket-name
    

    Esse bucket do Cloud Storage armazena os dados usados para treinar o modelo e os resultados do treinamento. O comando gcloud usado neste tutorial configura permissões padrão para a conta de serviço do Cloud TPU configurada na etapa anterior. Caso queira permissões mais específicas, consulte as permissões de nível de acesso.

Iniciar os recursos de VM da TPU

  1. Inicie um pod de VM da TPU usando o comando gcloud. Neste tutorial, especificamos um pod v3-32. Para outras opções de pod, consulte a página de tipos de TPU disponíveis.

    VM de TPU

    $ gcloud alpha compute tpus tpu-vm create transformer-tutorial \
    --zone=europe-west4-a \
    --accelerator-type=v3-32 \
    --version=tpu-vm-tf-2.8.0-pod
    

    Descrições de sinalizações de comando

    zone
    A zona em que você planeja criar a Cloud TPU.
    accelerator-type
    O tipo da Cloud TPU a ser criada.
    version
    A versão do software do Cloud TPU.

    Nó da TPU

    (vm)$ gcloud compute tpus execution-groups create \
    --name=transformer-tutorial \
    --accelerator-type=v3-32 \
    --zone=europe-west4-a \
    --tf-version=2.8.0
    

    Descrições de sinalizações de comando

    tpu-only
    Crie apenas uma Cloud TPU. Por padrão, o comando gcloud compute tpus execution-groups cria uma VM e um Cloud TPU.
    accelerator-type
    O tipo da Cloud TPU a ser criada.
    zone
    A zona em que você planeja criar a Cloud TPU. Ela precisa ser a mesma zona usada para a VM do Compute Engine. Por exemplo, europe-west4-a.
    tf-version
    A versão do TensorFlow gcloud é instalada na VM.
    name
    O nome do Cloud TPU a ser criado.
  2. Se você não for conectado automaticamente à instância do Compute Engine, faça login executando o seguinte comando ssh. Quando você faz login na VM, o prompt do shell muda de username@projectname para username@vm-name:

    VM de TPU

    gcloud alpha compute tpus tpu-vm ssh transformer-tutorial --zone=europe-west4-a
    

    Nó da TPU

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a
    

Instalar o TensorFlow e as dependências

  1. Instale os requisitos do TensorFlow.

      (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
      (vm)$  export PYTHONPATH="/usr/share/tpu/models:$PYTHONPATH"
      

  2. Exporte a variável PYTHONPATH.

    VM de TPU

    
    (vm)$ PYTHONPATH="/usr/share/tpu/models:$PYTHONPATH"

    Nó da TPU

    (vm)$ export PYTHONPATH="/usr/share/models:$PYTHONPATH"

Configurar e iniciar o treinamento do pod

  1. Exporte as variáveis de configuração do Cloud TPU:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    (vm)$ export PARAM_SET=big
    (vm)$ export TPU_LOAD_LIBRARY=0
    (vm)$ export RESNET_PRETRAIN_DIR=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07
    (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-*
    (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-*
    (vm)$ export VAL_JSON_FILE=${DATA_DIR}/instances_val2017.json
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/transformer/model_${PARAM_SET}_pod
    (vm)$ export TPU_NAME=transformer-tutorial
    
  2. Mude para o diretório de treinamento:

    VM de TPU

    (vm)$ cd /usr/share/tpu/models/official/legacy/transformer

    Nó de TPU

    (vm)$ cd /usr/share/models/official/legacy/transformer
  3. Execute o script de treinamento:

    (vm)$ python3 transformer_main.py \
        --tpu=${TPU_NAME} \
        --model_dir=${MODEL_DIR} \
        --data_dir=${GCS_DATA_DIR} \
        --vocab_file=${GCS_DATA_DIR}/vocab.ende.32768 \
        --bleu_source=${GCS_DATA_DIR}/newstest2014.en \
        --bleu_ref=${GCS_DATA_DIR}/newstest2014.de \
        --batch_size=6144 \
        --train_steps=2000 \
        --static_batch=true \
        --use_ctl=true \
        --param_set=big \
        --max_length=64 \
        --decode_batch_size=32 \
        --decode_max_length=97 \
        --padded_decode=true \
        --distribution_strategy=tpu

    Descrições de sinalizações de comando

    tpu
    O nome da Cloud TPU. Para isso, especifique a variável de ambiente (TPU_NAME).

     <dt><code>model_dir</code></dt>
     <dd>The Cloud Storage bucket where checkpoints and summaries are
       stored during training. You can use an existing folder to load previously
       generated checkpoints created on a TPU of the same size and
       TensorFlow version.</dd>
    
     <dt><code>data_dir</code></dt>
     <dd>The Cloud Storage path of training input. It is set to the
       fake_imagenet dataset in this example.</dd>
    
     <dt><code>vocab_file</code></dt>
     <dd>A file that contains the vocabulary for translation.</dd>
    
     <dt><code>bleu_source</code></dt>
     <dd>A file that contains source sentences for translation.</dd>
    
     <dt><code>bleu_ref</code></dt>
     <dd>A file that contains the reference for the translation sentences.</dd>
    
     <dt><code>train_steps</code></dt>
     <dd>The number of steps to train the model. One step processes one batch
       of data. This includes both a forward pass and back propagation.</dd>
    
     <dt><code>batch_size</code></dt>
     <dd>The training batch size.</dd>
    
     <dt><code>static_batch</code></dt>
     <dd>Specifies whether the batches in the dataset has static shapes.</dd>
    
     <dt><code>use_ctl</code></dt>
     <dd>Specifies whether the script runs with a custom training loop.</dd>
    
     <dt><code>param_set</code></dt>
     <dd>The parameter set to use when creating and training the model. The
      parameters define the input shape, model configuration, and other
      settings.</dd>
    
     <dt><code>max_length</code></dt>
     <dd>The maximum length of an example in the dataset.</dd>
    
     <dt><code>decode_batch_size</code></dt>
     <dd>The global batch size used for Transformer auto-regressive decoding
       on a Cloud TPU.</dd>
    
     <dt><code>decode_max_length</code></dt>
     <dd>The maximum sequence length of the decode/eval data. This is used by
       the Transformer auto-regressive decoding on a Cloud TPU to minimize
       the amount of required data padding.</dd>
    
     <dt><code>padded_decode</code></dt>
     <dd>Specifies whether the auto-regressive decoding runs with input data
       padded to the decode_max_length. Tor TPU/XLA-GPU runs, this flag must
       be set due to the static shape requirement.</dd>
    
     <dt><code>distribution_strategy</code></dt>
     <dd>To train the ResNet model on a Cloud TPU, set <code>distribution_strategy</code>
       to <code>tpu</code>.</dd>
    </dl>
    

Por padrão, o modelo será avaliado após cada 2.000 etapas. Para treinar para a conversão, altere train_steps para 200.000. Você pode aumentar o número de etapas de treinamento ou especificar com que frequência executar avaliações definindo estes parâmetros:

  • --train_steps: define o número total de etapas de treinamento a serem executadas.
  • --steps_between_evals: número de etapas de treinamento a serem executadas entre as avaliações.

O treinamento e a avaliação levam aproximadamente sete minutos em um Cloud TPU v3-32. Quando o treinamento e a avaliação forem concluídos, mensagens semelhantes às seguintes serão exibidas:

I0415 00:28:33.108577 140097002981184 transformer_main.py:311] Train Step: 2000/2000 / loss = 5.139615058898926
I0415 00:28:33.108953 140097002981184 keras_utils.py:148] TimeHistory: 120.39 seconds, 102065.86 examples/second between steps 0 and 2000
.
.
.
I0415 00:32:01.785520 140097002981184 transformer_main.py:116] Bleu score (uncased): 0.8316259831190109
I0415 00:32:01.786150 140097002981184 transformer_main.py:117] Bleu score (cased): 0.7945530116558075

Esse script de treinamento é treinado por 2.000 etapas e executa a avaliação a cada 2.000 etapas. Esse treinamento e avaliação específicos levam aproximadamente oito minutos em um pod do Cloud TPU v3-32. Quando o treinamento e a avaliação forem concluídos, uma mensagem semelhante a esta será exibida:

INFO:tensorflow:Writing to file /tmp/tmpdmlanxcf
I0218 21:09:19.100718 140509661046592 translate.py:184] Writing to file /tmp/tmpdmlanxcf
I0218 21:09:28.043537 140509661046592 transformer_main.py:118] Bleu score (uncased): 1.799112930893898
I0218 21:09:28.043911 140509661046592 transformer_main.py:119] Bleu score (cased): 1.730366237461567

Para treinar para a convergência, altere train_steps para 200.000. Você pode aumentar o número de etapas de treinamento ou especificar com que frequência executar avaliações definindo estes parâmetros:

  • --train_steps: define o número total de etapas de treinamento a serem executadas.
  • --steps_between_evals: número de etapas de treinamento a serem executadas entre as avaliações.

Quando o treinamento e a avaliação forem concluídos, uma mensagem semelhante à seguinte será exibida:

0509 00:27:59.984464 140553148962624 translate.py:184] Writing to file /tmp/tmp_rk3m8jp
I0509 00:28:11.189308 140553148962624 transformer_main.py:119] Bleu score (uncased): 1.3239131309092045
I0509 00:28:11.189623 140553148962624 transformer_main.py:120] Bleu score (cased): 1.2855342589318752

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.

  1. Desconecte-se da instância do Compute Engine, caso ainda não tenha feito isso:

    (vm)$ exit
    

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

  2. Exclua os recursos do Cloud TPU e do Compute Engine. O comando usado para excluir os recursos depende se você está usando VMs ou nós de TPU. Para mais informações, consulte Arquitetura do sistema.

    VM de TPU

    $ gcloud alpha compute tpus tpu-vm delete transformer-tutorial \
    --zone=europe-west4-a
    

    Nó de TPU

    $ gcloud compute tpus execution-groups delete transformer-tutorial \
    --zone=europe-west4-a
    
  3. Execute gsutil conforme mostrado. Substitua bucket-name pelo nome do bucket do Cloud Storage criado para este tutorial:

    $ gsutil rm -r gs://bucket-name
    

A seguir

Geralmente, os tutoriais do Cloud TPU do TensorFlow treinam o modelo usando um conjunto de dados de amostra. Os resultados deste treinamento não podem ser usados para inferência. Para usar um modelo para inferência, treine os dados em um conjunto de dados disponível publicamente ou no seu próprio conjunto de dados. Os modelos do TensorFlow treinados em Cloud TPUs geralmente exigem que os conjuntos de dados estejam no formato TFRecord.

Use a amostra da ferramenta de conversão de conjunto de dados para converter um conjunto de dados de classificação de imagem no formato TFRecord. Se você não estiver usando um modelo de classificação de imagem, converta manualmente o conjunto de dados para o TFRecord. Para saber mais, consulte TFRecord e tf.Example.

Ajuste de hiperparâmetros

Para melhorar o desempenho do modelo com o conjunto de dados, é possível ajustar os hiperparâmetros do modelo. Encontre informações sobre hiperparâmetros comuns a todos os modelos compatíveis com a TPU no GitHub. As informações sobre hiperparâmetros específicos do modelo podem ser encontradas no código-fonte de cada modelo. Para saber mais sobre o ajuste de hiperparâmetros, consulte Visão geral do ajuste de hiperparâmetros, Como usar o serviço de ajuste de hiperparâmetros e Ajustar hiperparâmetros.

Inferência

Depois de treinar o modelo, é possível usá-lo para inferência (também chamada de previsão). O AI Platform é uma solução baseada na nuvem para desenvolver, treinar e implantar modelos de machine learning. Depois que um modelo é implantado, use o serviço do AI Platform Prediction.