Primeiros passos com o algoritmo XGBoost integrado

Com os algoritmos integrados no AI Platform Training, é possível enviar dados de treinamento, selecionar um algoritmo e deixar que o AI Platform Training realize o pré-processamento e o treinamento para você, sem a necessidade de escrever qualquer código para um aplicativo de treinamento.

Informações gerais

Neste tutorial, você treina um modelo XGBoost sem escrever código. Você envia o conjunto de dados de renda do censo ao AI Platform Training para fins de pré-processamento e treinamento, depois implanta o modelo na plataforma para receber previsões. O modelo resultante prevê a probabilidade da renda anual de um indivíduo ser maior que US$ 50.000.

Antes de começar

Para concluir este tutorial na linha de comando, use o Cloud Shell ou qualquer ambiente em que o SDK do Cloud esteja instalado.

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

Instalação

Para usar algoritmos integrados tabulares, remova a linha de cabeçalho do arquivo CSV e mova os valores de destino para a primeira coluna. O conjunto de dados do censo original foi modificado para ser usado neste tutorial e está hospedado em um bucket público do Cloud Storage, gs://cloud-samples-data/ai-platform/census/algorithms/data/.

Console

Para iniciar o job de treinamento, você precisa copiar os dados do nosso bucket público do Cloud Storage para seu bucket do Cloud Storage.

Copiar os dados de amostra para seu bucket do Cloud Storage

  1. Primeiro, faça o download dos dados de treinamento e teste do bucket público do Cloud Storage.

    1. Acesse o bucket público do Cloud Storage:

      Acessar os dados de amostra

    2. Faça o download de test.csv e train.csv:

      1. Clique no nome do arquivo.

      2. Na página Detalhes do objeto, clique em Fazer o download. Esses arquivos são salvos no ambiente local como ai-platform_census_algorithms_data_test.csv e ai-platform_census_algorithms_data_train.csv, respectivamente.

  2. Em seguida, faça upload dos dados de treinamento e teste para seu bucket do Cloud Storage.

    1. Acesse a página "Navegador" do bucket do Cloud Storage. Selecione o projeto na lista suspensa Selecione um projeto ou o abra em uma nova guia:

      Página "Navegador" do Cloud Storage

    2. Clique no nome do bucket que será usado ou crie um novo, caso não tenha um. Se você criar um novo bucket, garanta que ele seja regional e selecione a mesma região em que o job de treinamento do AI Platform Training é executado.

    3. (Opcional) Clique em Criar pasta para criar uma pasta dos arquivos enviados por upload. Digite um nome para a pasta (por exemplo, "dados") e clique em Criar. Em seguida, acesse a nova pasta clicando no nome.

    4. Clique em Fazer upload de arquivos para fazer upload dos arquivos de treinamento e teste, ai-platform_census_algorithms_data_train.csv e ai-platform_census_algorithms_data_test.csv, para o bucket.

Agora que os dados foram copiados para o bucket, inicie um job de treinamento selecionando o tipo de algoritmo a ser usado.

Selecionar o algoritmo

  1. Acesse a página "Jobs" do AI Platform Training no console do Google Cloud:

    Página "Jobs" do AI Platform Training

  2. Clique no botão Novo job de treinamento. Nas opções exibidas abaixo, clique em Treinamento de algoritmo integrado. A página Criar um novo job de treinamento é exibida.

  3. A criação do job de treinamento é dividida em quatro passos. A primeira é o algoritmo de treinamento. Selecione XGBoost e clique em Avançar.

gcloud

Configure as variáveis de ambiente para o ID do projeto, seu bucket do Cloud Storage, o caminho do Cloud Storage para os dados de treinamento e o algoritmo que você escolheu.

Os algoritmos integrados do AI Platform Training estão em contêineres do Docker hospedados no Container Registry.

PROJECT_ID=YOUR_PROJECT_ID
BUCKET_NAME=YOUR_BUCKET_NAME
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE=gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv
TRAINING_DATA_PATH=gs://$BUCKET_NAME/algorithms-demo/data/train.csv
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/boosted_trees:latest"

Enviar um job de treinamento

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

Estes são os 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 XGBoost definido anteriormente como IMAGE_URI.
region Especifique a região disponível em que será executado o job de treinamento. Neste tutorial, use a região us-central1.

Argumentos específicos do algoritmo XGBoost integrado:

Argumentos do algoritmo
Argumento Descrição
preprocess Argumento booleano que indica se o AI Platform Training precisa pré-processar os dados.
objective Indica a tarefa de aprendizado e o objetivo correspondente. Neste exemplo, "binary:logistic".
training_data_path Local do Cloud Storage com os dados de treinamento, que precisam ser um arquivo CSV.

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

Console

  1. Deixe a opção Ativar pré-processamento automático de dados marcada.

  2. Em Caminho de dados de treinamento, clique em Procurar. No painel à direita, clique no nome do bucket em que você fez upload dos dados de treinamento e navegue até o arquivo ai-platform_census_algorithms_data_train.csv.

  3. Deixe as configurações padrão dos campos Dados de validação e Dados de teste.

  4. No Diretório de saída, insira o caminho para seu bucket do Cloud Storage em que o AI Platform Training armazenará as saídas do job de treinamento. Preencha o caminho do bucket do Cloud Storage diretamente ou clique no botão Procurar para selecioná-lo.

    Para manter a organização, crie um novo diretório no bucket do Cloud Storage para esse job de treinamento. Faça isso no painel Procurar.

    Clique em Avançar.

  5. Em Objetivo, selecione "binary:LOG", que indica uma tarefa de aprendizado binária e um objetivo de regressão logística.

  6. Em Tipo de modelo, selecione Classificação.

  7. Deixe as configurações padrão de todos os outros campos e clique em Avançar.

  8. Na página Configurações do job:

    1. Digite o ID do job exclusivo como "xgboost_exemplo".
    2. Digite uma região disponível como "us-central1".
    3. Selecione "BÁSICO" para o nível de escalonamento.

    Clique em Concluído para enviar o job de treinamento.

gcloud

  1. Configure todos os argumentos do job de treinamento e do algoritmo antes de usar gcloud para enviar o job:

    DATASET_NAME="census"
    ALGORITHM="xgboost"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. Envie o job:

    gcloud ai-platform jobs submit training $JOB_ID \
      --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
      -- \
      --preprocess --objective=binary:logistic \
      --training_data_path=$TRAINING_DATA_PATH
    

  3. Depois que o job for enviado, será possível visualizar os registros usando os comandos gcloud a seguir:

    gcloud ai-platform jobs describe $JOB_ID
    gcloud ai-platform jobs stream-logs $JOB_ID
    

Noções básicas sobre 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ê encontra a estrutura de diretórios a seguir no JOB_DIR:

  • modelo/
    • model.pkl
    • deployment_config.yaml
  • artefatos/
    • instance_generator.py
    • metadata.json
  • process_data/
    • training.csv
    • validation.csv
    • test.csv

Confirme se a estrutura de diretórios no JOB_DIR corresponde a:

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 recém-enviado ("xgboost_exemplo" ou o nome do job usado).

  2. Na página Detalhes do job, você pode ver o progresso geral do job ou clicar em Visualizar registros para ter 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, como "xgboost_modelo". Em seguida, clique em Confirmar.

  5. Na página Criar versão, digite o nome de uma versão, como "v1", e deixe 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

gcloud

O processo de treinamento com o algoritmo XGBoost integrado produz um arquivo, deployment_config.yaml, que facilita a implantação do modelo no AI Platform Prediction para previsões.

  1. Copie o arquivo para o diretório local e veja o conteúdo:

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    O arquivo deployment_config.yaml será assim:

    deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_xgboost_classification/20190227060114/model
    framework: XGBOOST
    labels:
      job_id: census_xgboost_classification_20190227060114
      error_percentage: '14'
    runtimeVersion: '0.81'
    pythonVersion: '2.7'
    
  2. Crie o modelo e a versão no AI Platform Training:

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    A criação da versão leva alguns minutos.

Receber predições on-line

Ao solicitar previsões, é preciso garantir que os dados de entrada sejam formatados da mesma maneira que os de treinamento. Antes do treinamento, o AI Platform Training pré-processa os dados, transformando-os no corpus mostrado em metadata.json.

Use instance_generator.py para adotar as mesmas transformações de pré-processamento nas instâncias de entrada que o AI Platform Training aplica aos dados de treinamento. Esse arquivo lê as informações de mapeamento armazenadas no arquivo metadata.json. É possível usar a função transform_string_instance no módulo para transformar a string bruta em um formato aceito pelo modelo.

  1. Faça o download dos arquivos de artefatos de treinamento e revise metadata.json:

    gsutil cp $JOB_DIR/artifacts/* .
    
    # Let's look at the metadata.json file
    head metadata.json
    
  2. Use instance_generator.py para preparar a entrada da previsão de uma instância de dados:

     # ground truth is >50K
    RAW_DATA_POINT="44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States"
    
     # Now let's create a JSON prediction request
    python instance_generator.py --raw_data_string="${RAW_DATA_POINT}" > sample_input.json
    
    # Let's look at the prediction request file.
    cat sample_input.json
    
  3. Envie a solicitação de previsão:

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json
    

A predição resultante precisa ser um número acima de 0,5, o que indica que o indivíduo provavelmente ganha um salário maior que US$ 50.000.

Sobre os dados

O conjunto de dados de renda do censo, usado para treinamento neste exemplo, está hospedado no repositório de machine learning da UC Irvine (links em inglês).

Dados do Censo por cortesia de: Lichman, M. (2013). Repositório de machine learning da UCI http://archive.ics.uci.edu/ml (em inglês). Irvine, CA: University of California, School of Information and Computer Science.

A seguir