Primeiros passos com o algoritmo BERT integrado

Neste tutorial, você verá como treinar as representações de codificador bidirecional do modelo Transformers (BERT) no AI Platform Training.

O BERT é um método de representação de linguagem pré-treinamento. Pré-treinamento refere-se a como o BERT é primeiro treinado com base em uma grande fonte de texto, como a Wikipedia. Os resultados do treinamento podem ser aplicados a outras tarefas de processamento de linguagem natural (PLN), como sistema de perguntas e respostas e análise de sentimento. Com o BERT e o AI Platform Training, é possível treinar vários modelos de PLN em cerca de 30 minutos.

Para mais informações sobre o BERT, consulte os seguintes recursos:

Objetivos

  • Crie um bucket do Cloud Storage para armazenar a saída do modelo.
  • Executar o job de treinamento.
  • Verificar os resultados da saída.

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

Conclua as etapas a seguir para configurar uma conta do GCP, ativar as APIs necessárias e instalar e ativar a Google Cloud CLI:

  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 a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs AI Platform Training & Prediction and Compute Engine.

    Ative as APIs

  5. Instale a CLI do Google Cloud.
  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. 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

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Ative as APIs AI Platform Training & Prediction and Compute Engine.

    Ative as APIs

  10. Instale a CLI do Google Cloud.
  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Prepare os dados

Este tutorial não requer nenhum pré-processamento ou download de dados. Todos os pontos de verificação de dados e modelos necessários estão disponíveis em buckets de armazenamento público. Caso tenha interesse nesse processo, confira o tutorial do Cloud TPU, que aborda a criação do conjunto de dados a partir da linha de comando.

Enviar um job de treinamento

Para enviar um job, especifique alguns argumentos básicos de treinamento e outros relacionados ao algoritmo BERT.

Argumentos gerais do job de treinamento:

Argumentos do job de treinamento
Argumento Descrição
job-id Código exclusivo do job de treinamento. Use-o para encontrar registros de status do job de treinamento depois de enviá-lo.
job-dir Caminho do Cloud Storage em que o AI Platform Training salva arquivos de treinamento após a conclusão de um job de treinamento bem-sucedido.
scale-tier Especifica os tipos de máquina para treinamento. Use BASIC para selecionar uma configuração de apenas uma máquina.
master-image-uri URI do Container Registry usado para especificar qual contêiner do Docker usar no job de treinamento. Use o contêiner no algoritmo integrado BERT definido anteriormente como IMAGE_URI.
region Especifique a região disponível onde será executado o job de treinamento. Neste tutorial, use a região us-central1.

Argumentos específicos para o treinamento do algoritmo BERT integrado com o conjunto de dados fornecido:

Argumentos do algoritmo
Argumento Valor Descrição
mode train_and_eval Indique se fará ou não o treinamento ou a exportação do modelo.
train_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_train.tf_record Caminho do Cloud Storage em que os dados de treinamento estão armazenados.
eval_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_eval.tf_record Caminho do Cloud Storage em que os dados de avaliação são armazenados.
input_meta_data_path gs://cloud-tpu-checkpoints/bert/classification/mnli_meta_data Caminho do Cloud Storage em que o esquema de entrada está armazenado.
bert_config_file gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_config.json Caminho do Cloud Storage em que o arquivo de configuração BERT é armazenado.
init_checkpoint gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_model.ckpt Iniciando o checkpoint para ajustar (geralmente um modelo do BERT pré-treinado).
train_batch_size 32 Tamanho do lote para treinamento.
eval_batch_size 32 Tamanho do lote para avaliação.
learning_rate 2e-5 Taxa de aprendizado usada pelo otimizador Adam.
num_train_epochs 1 Número de períodos de treinamento a serem executados (disponível apenas no modo train_and_eval).
steps_per_loop 1000 O número de etapas por loop no modo de gráfico.

Para ver uma lista detalhada de todas as outras sinalizações do algoritmo BERT, consulte a referência integrada.

Executar o job de treinamento

  1. Acesse a página AI Platform > Jobs:

Página AI Platform > Jobs

  1. Na parte superior da página, clique no botão "Novo job de treinamento" e selecione "Treinamento de algoritmo integrado"

  2. Selecione o BERT como seu algoritmo de treinamento

  3. Use o botão de navegação para marcar os conjuntos de dados de treinamento e avaliação no bucket do Cloud Storage e escolha o diretório de saída.

  4. Na próxima página, use os valores de argumento acima para configurar o job de treinamento.

  5. Dê um nome ao job de treinamento e use o tipo de máquina BASIC_TPU.

  6. Clique em "Enviar" para iniciar seu job.

Compreender o diretório do job

Depois que o job de treinamento é concluído com êxito, o AI Platform Training cria um modelo treinado no seu intervalo do Cloud Storage com alguns outros artefatos. Você verá a estrutura de diretório a seguir no seu JOB_DIR:

  • model/ (um diretório SavedModel do TensorFlow)
    • saved_model.pb
    • assets/
    • variables/
  • summaries/ (geração de registros com treinamento e avaliação)
    • eval/
    • train/
  • vários arquivos de checkpoints (criados e usados durante o treinamento)
    • checkpoint
    • ctl_checkpoint-1.data-00000-of-00002
    • ...
    • ctl_checkpoint-1.index

Confirme se a estrutura de diretórios no JOB_DIR corresponde à estrutura descrita na lista anterior:

gsutil ls -a $JOB_DIR/*

Implantar o modelo treinado

O AI Platform Prediction organiza seus modelos treinados usando recursos de model e model. Um modelo do AI Platform Prediction é um contêiner para as versões do seu modelo de machine learning.

Para implantar um modelo, crie um recurso no AI Platform Prediction, crie uma versão desse modelo e use o modelo e a versão para solicitar previsões on-line.

Saiba mais sobre como implantar modelos no AI Platform Prediction.

Console

  1. Na página Jobs, você encontra uma lista de todos os jobs de treinamento. Clique no nome do job de treinamento que você acabou de enviar.

  2. Na página Detalhes do job, visualize o progresso geral do job ou clique em Visualizar registros para uma visualização mais detalhada do progresso.

  3. Quando o job é bem-sucedido, o botão Implantar modelo é exibido na parte superior. Clique em Implantar modelo.

  4. Selecione "Implantar como novo modelo" e digite um nome. Em seguida, clique em Confirmar.

  5. Na página Criar versão, insira o nome de uma versão, como v1, e mantenha as configurações padrão de todos os outros campos. Clique em Salvar.

  6. Na página Detalhes do modelo, o nome da versão é exibido. A criação da versão leva alguns minutos. Quando a versão estiver pronta, um ícone de marca de seleção aparecerá ao lado do nome da versão.

  7. Clique no nome da versão (v1) para navegar até a página Detalhes da versão. Na próxima etapa deste tutorial, você enviará uma solicitação de previsão

Receber predições on-line

Ao solicitar previsões, é necessário formatar os dados de entrada como JSON de maneira que o modelo espera. Os modelos BERT atuais não pré-processam automaticamente entradas.

Console

  1. Na página Detalhes da versão de v1, que é a versão que você acabou de criar, é possível enviar uma solicitação de previsão de amostra.

    Selecione a guia Testar e usar.

  2. Copie a seguinte amostra para o campo de entrada:

      {
        "instances": [
          {
            "input_mask": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_type_ids":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_word_ids": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }
          ]
        }
    
  3. Clique em Teste.

    Aguarde um momento, e um vetor de previsão será retornado.

A seguir

Neste tutorial, você treinou o modelo BERT usando um conjunto de dados de amostra. Na maioria dos casos, os resultados deste treinamento não podem ser usados para inferência. Para usar um modelo para inferência, é possível treinar os dados em um conjunto de dados disponível publicamente ou no seu próprio conjunto de dados. Os modelos treinados nas Cloud TPUs 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 mais informações, consulte TFRecord e tf.Example