Primeiros passos com o algoritmo de aprendizado linear integrado

Com algoritmos integrados no AI Platform, é possível enviar seus dados de treinamento, selecionar um algoritmo e permitir que o AI Platform Training gerencie o pré-processamento e o treinamento para você sem escrever códigos para um aplicativo de treinamento.

Visão geral

Neste tutorial, você verá como treinar um modelo de aprendizagem linear sem escrever códigos. Você enviará o conjunto de dados de renda do censo ao AI Platform para o pré-processamento e treinamento, e implantará o modelo no AI Platform para receber prediçõ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 os passos a seguir para configurar uma conta do GCP, ativar as APIs obrigatórias, instalar o SDK do Cloud e ativá-lo.

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

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

  2. No Console do GCP, acesse a página Gerenciar recursos e selecione ou crie um projeto.

    Acessar a página Gerenciar recursos

  3. Verifique se o faturamento foi ativado no projeto do Google Cloud Platform.

    Saiba como ativar o faturamento

  4. Ativar AI Platform ("Cloud Machine Learning Engine") e Compute Engine APIs.

    Ativar as APIs

  5. Instale e inicialize o SDK do Cloud.

Configuração

Para usar algoritmos integrados, remova a linha de cabeçalho do arquivo CSV e mova os valores de destino para a primeira coluna. Modificamos o conjunto de dados original do Censo para uso com este tutorial e o hospedamos em um intervalo 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 intervalo público do Cloud Storage para seu intervalo do Cloud Storage.

Copiar os dados de amostra para seu intervalo do Cloud Storage

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

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

      Receber 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 Download. Esses arquivos são transferidos para o 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 intervalo do Cloud Storage.

    1. Acesse a página "Navegador" do intervalo 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 intervalo a ser usado ou crie um novo caso não tenha um. Se você criar um novo intervalo, verifique se ele é regional e selecione a mesma região em que estiver executando o job de treinamento do AI Platform.

    3. (Opcional) Clique em Criar pasta a fim de criar uma pasta para os 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 seu intervalo.

Agora que os dados estão copiados para o intervalo, inicie um job de treinamento selecionando o tipo de algoritmo que você quer usar.

Selecionar o algoritmo

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

    Página "Jobs" do AI Platform

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

  3. A criação do job de treinamento é dividida em quatro passos. O primeiro passo é Algoritmo de treinamento. Selecione Aprendizado linear integrado e clique em Avançar.

gcloud

Configure variáveis de ambiente para o ID do projeto, o intervalo do Cloud Storage, o caminho do Cloud Storage para os dados de treinamento e a seleção de algoritmo.

Os algoritmos integrados do AI Platform 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/linear_learner_cpu:latest"

Enviar um job de treinamento

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

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 salva arquivos de treinamento após a conclusão de um job de treinamento.
scale-tier Especifica os tipos de máquina para treinamento. Use o 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 de aprendizado linear integrado definido anteriormente como IMAGE_URI.
region Especifique a região disponível onde será executado o job de treinamento. Para este tutorial, é possível usar a região us-central1.

Argumentos específicos do algoritmo de aprendizado linear integrado:

Argumentos do algoritmo
Argumento Descrição
preprocess Argumento booleano que indica se o AI Platform precisa pré-processar os dados.
model_type Indica o tipo de modelo a ser treinado: classificação ou regressão.
training_data_path Local do Cloud Storage com os dados de treinamento, que precisam ser um arquivo CSV.
learning_rate A taxa de aprendizado usada pelo otimizador linear.
max_steps Número de passos para gerar o treinamento.
batch_size Número de exemplos que serão usados por passo de treinamento.

Para uma lista detalhada de todas as outras sinalizações de algoritmo de aprendizado linear, consulte a referência de aprendizado linear integrado.

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 intervalo 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 intervalo do Cloud Storage em que o AI Platform armazenará as saídas do job de treinamento. É possível preencher o caminho do intervalo do Cloud Storage diretamente ou clicando no botão Procurar para selecioná-lo.

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

    Clique em Avançar.

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

  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 um ID do job exclusivo (como "exemplo_linear").
    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 o algoritmo antes de usar gcloud para enviar o job:

    DATASET_NAME="census"
    ALGORITHM="linear"
    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 --model_type=$MODEL_TYPE --batch_size=250 \
      --learning_rate=0.1 --max_steps=1000 --training_data_path=$TRAINING_DATA_PATH
    

  3. Depois que o job for enviado, você poderá visualizar os registros usando os seguintes comandos gcloud:

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

Compreender o diretório do job

Após a conclusão de um job de treinamento, o AI Platform cria um modelo treinado no intervalo do Cloud Storage, além de outros artefatos. É possível encontrar a seguinte estrutura de diretórios no JOB_DIR:

  • model/ (um diretório SavedModel do TensorFlow que também contém um arquivo deployment_config.yaml)
    • saved_model.pb
    • deployment_config.yaml
  • artifacts/
    • metadata.json
  • processed_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 organiza os modelos treinados usando recursos de modelo e versão. Um modelo do AI Platform é um contêiner das versões do modelo de machine learning.

Para implantar um modelo, crie um recurso de modelo no AI Platform, gere uma versão dele e use o modelo e a versão para solicitar predições on-line.

Para mais informações sobre como implantar modelos no AI Platform, consulte como implantar um modelo do TensorFlow.

Console

  1. Na página Jobs é possível encontrar uma lista de todos os jobs de treinamento. Clique no nome do job de treinamento que você acabou de enviar ("linear_example" ou o nome do job que você usou).

  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 de modelo, como "modelo_linear_algoritmos". 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.

gcloud

O processo de treinamento com o algoritmo de aprendizagem linear integrado produz um arquivo deployment_config.yaml, que facilita a implantação do seu modelo no AI Platform para prediçõ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á semelhante ao mostrado a seguir:

    deploymentUri: gs://BUCKET_NAME/algorithms_training/census_linear_classification/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_linear_classification_20190227060114
    runtimeVersion: '1.12'
    
  2. Crie o modelo e a versão no AI Platform:

    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 demora alguns minutos.

Receber previsõ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 pré-processa seus dados transformando-os no corpus mostrado em metadata.json.

O modelo do TensorFlow Estimator aplica um pré-processamento semelhante aos dados de entrada antes de fazer previsões.

  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. Prepare a entrada de previsão para uma instância de dados: Observe que é necessário fornecer cada instância de dados como um objeto JSON com os seguintes campos:

    • csv_row, uma string que contém uma linha de recursos separada por vírgulas no mesmo formato das instâncias usadas durante o treinamento.
    • key, um identificador de string exclusivo para cada instância. Isso age como uma chave de instância que aparece como parte da saída de previsão, para que seja possível corresponder cada previsão à instância de entrada correspondente.

      Isso é necessário para previsão em lote, porque a previsão em lote processa a entrada e salva a saída em uma ordem imprevisível.

      Para a previsão on-line, que produz saída na mesma ordem que a entrada fornecida, as chaves de instância são menos cruciais. Este exemplo só executa a previsão em uma única instância, de modo que o valor da chave da instância não importa.

    Para enviar uma solicitação de previsão on-line usando a ferramenta de linha de comando gcloud, como neste exemplo, grave cada instância em uma linha em um arquivo JSON delimitado por nova linha.

    Execute os comandos a seguir no terminal para criar uma entrada de uma única instância que é possível enviar para o AI Platform Prediction:

     # A sample record from census dataset. 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'
    
     # Create a prediction request file
    echo "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json
    
    # Check 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
    

Provavelmente, a saída de previsão inclui a classe >50K', indicando que o modelo implantado prevê que o indivíduo cujas informações você recebeu ganha um salário maior que US $50.000. (Como o treinamento não é determinístico, o modelo pode ser diferente)

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.

Dados do censo por cortesia de: Lichman, M. (2013). Repositório de machine learning da UCI http://archive.ics.uci.edu/ml. Irvine, CA: Universidade da Califórnia, Escola de Informação e Ciência da Computação.

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.