Use algoritmos integrados no AI Platform Training para enviar os dados de treinamento, selecionar um algoritmo e deixar que a plataforma gerencie o pré-processamento e o treinamento sem escrever códigos de um aplicativo de treinamento.
Visão geral
Neste tutorial, você aprenderá a treinar um modelo de amplitude e profundidade sem escrever códigos. Você envia o conjunto de dados de renda do censo ao AI Platform Training para a realização do pré-processamento e treinamento e implanta o modelo na plataforma para ver as 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:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Configuraçã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
Primeiro, faça o download dos dados de treinamento e teste do bucket público do Cloud Storage.
Acesse o bucket público do Cloud Storage:
Faça o download de
test.csv
etrain.csv
:Clique no nome do arquivo.
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
eai-platform_census_algorithms_data_train.csv
, respectivamente.
Em seguida, faça upload dos dados de treinamento e teste para seu bucket do Cloud Storage.
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:
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.
(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.
Clique em Fazer upload de arquivos para fazer upload dos arquivos de treinamento e teste,
ai-platform_census_algorithms_data_train.csv
eai-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
Acesse a página "Jobs" do AI Platform Training no console do Google Cloud:
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.
A criação do job de treinamento é dividida em quatro passos. O primeiro é o Algoritmo de treinamento. Selecione amplitude e profundidade 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/wide_deep_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 amplo e profundo.
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. |
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 amplo e profundo integrado 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 do algoritmo de amplitude e profundidade integrado:
Argumentos do algoritmo | |
---|---|
Argumento | Descrição |
preprocess |
Argumento booleano que indica se o AI Platform Training precisa pré-processar os dados. |
model_type |
Indica o tipo de modelo a treinar: classificação ou regressão. |
training_data_path |
Local do Cloud Storage para 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 etapas para gerar o treinamento. |
batch_size |
Número de exemplos que serão usados por passo de treinamento. |
dnn_learning_rate |
Taxa de aprendizado que será usada pela parte DNN do modelo. |
dnn_dropout |
Probabilidade de dropout. |
hidden_units |
Uma string separada por vírgulas que representa o número de unidades ocultas em cada camada. |
use_wide |
Se definido, as colunas categóricas serão usadas na parte ampla do modelo DNN. |
embed_categories |
Se definido, as colunas categóricas serão incorporadas e utilizadas na parte profunda do modelo. |
Para uma lista detalhada de todas as outras sinalizações de algoritmo amplo e profundo, consulte a referência de aprendizado amplo e profundo integrado.
Console
Deixe a opção Ativar pré-processamento automático de dados marcada.
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
.Deixe as configurações padrão dos campos Dados de validação e Dados de teste.
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.
Em Tipo de modelo, selecione Classificação.
Deixe as configurações padrão de todos os outros campos e clique em Avançar.
Na página Configurações do job, siga estes passos:
- Digite um ID do job exclusivo (como "exemplo_amplo_profundo").
- Digite uma região disponível (como "us-central1").
- Selecione "BÁSICO" para o nível de escalonamento.
Clique em Concluído para enviar o job de treinamento.
gcloud
Configure todos os argumentos do job de treinamento e do algoritmo antes de usar
gcloud
para enviar o job:DATASET_NAME="census" ALGORITHM="wide_deep" 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}"
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 \ --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \ --use_wide --embed_categories \ --max_steps=1000 --training_data_path=$TRAINING_DATA_PATH
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
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
:
- artifacts/
- metadata.json
- model/ (um diretório SavedModel do TensorFlow que também contém um arquivo
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- processed_data/
- test.csv
- training.csv
- validation.csv
O diretório do job também contém vários arquivos de checkpoint do modelo em um diretório "experiment".
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 modelo e versão. 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
Na página Jobs, é possível encontrar uma lista de todos os jobs de treinamento. Clique no nome do job de treinamento recém-enviado ("exemplo_profundo_amplo" ou o nome do job usado).
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.
Quando o job é bem-sucedido, o botão Implantar modelo é exibido na parte superior. Clique em Implantar modelo.
Selecione "Implantar como novo modelo" e insira um nome de modelo, como "ampla_deep_model". Em seguida, clique em Confirmar.
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.
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.
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 integrado de amplitude e profundidade produz
um arquivo, deployment_config.yaml
, que facilita a implantação do modelo
no AI Platform Prediction para predições.
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_wide_deep_classification/20190227060114/model framework: TENSORFLOW labels: global_step: '1000' job_id: census_wide_deep_classification_20190227060114 accuracy: '86' runtimeVersion: '1.14' pythonVersion: '2.7'
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
.
O modelo amplo e profundo aplica um pré-processamento semelhante aos dados de entrada antes de fazer previsões.
Console
Na página Detalhes da versão da "v1" (a versão que você acabou de criar), envie uma amostra de solicitação de previsão.
Selecione a guia Testar e usar.
Copie a seguinte amostra para o campo de entrada:
{ "instances": [ {"csv_row": "44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States", "key": "dummy-key"} ] }
Clique em Test.
O resultado da previsão de amostra tem vários campos. A lista
classes
mostra a classe prevista>50K'
:{ "predictions": [ { ... "classes": [ ">50K" ], ... } ] }
Nesse caso, o modelo implantado prevê que o indivíduo cujas informações você forneceu ganha um salário superior a US$ 50.000. Como é um treinamento não determinístico, o modelo pode ser diferente.
gcloud
Revise as últimas linhas de
metadata.json
:gsutil cat $JOB_DIR/artifacts/metadata.json | tail
O objeto
target_column.mapping
mostra como as classes previstas serão exibidas nos resultados da previsão:"target_algorithm": "TensorFlow", "target_column": { "mapping": { "0": "<=50K", "1": ">50K" }, "num_category": 2, "type": "classification" } }
Prepare a entrada de previsão em uma instância de dados: É necessário fornecer cada instância de dados como um objeto JSON com os campos a seguir:
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. Ele 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.É necessário para previsão em lote, porque a previsão em lote processa a entrada e salva a saída em 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 Google Cloud CLI, 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
Envie a solicitação de predição:
gcloud ai-platform predict \ --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances sample_input.json \ --format "value(predictions[0].classes[0])" \ --signature-name "predict"
Essa saída de previsão é filtrada para mostrar apenas a classe prevista:
>50K
Provavelmente, a saída da previsão é >50K
. O modelo implantado prevê
que o indivíduo cujas informações você forneceu ganha um salário superior a
US$ 50.000. Como é um 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 (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
- Saiba mais sobre como usar o algoritmo integrado de amplitude e profundidade.