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. Os algoritmos integrados de imagem permitem que você treine em TPUs com configuração mínima. O SavedModel do TensorFlow resultante é compatível para exibição em CPUs e GPUs.
Visão geral
Neste tutorial, você treina um modelo de classificação de imagem sem escrever nenhum código. Você enviará o conjunto de dados de flores ao AI Platform Training para treinamento, depois implantará o modelo no AI Platform Prediction para receber previsões. O modelo resultante classifica imagens de flores com base em espécies (margarida, tulipa, rosa, girassol ou dente de leão).
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
Autorize o acesso da Cloud TPU ao projeto
Siga estas etapas para autorizar o nome da conta de serviço do Cloud TPU associada ao seu projeto do Google Cloud:
Chame
projects.getConfig
para receber o nome da conta de serviço do Cloud TPU. Exemplo:PROJECT_ID=PROJECT_ID curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID:getConfig
Salve os valores dos campos
serviceAccountProject
etpuServiceAccount
retornados pela API.Inicialize a conta de serviço do Cloud TPU:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{}' \ https://serviceusage.googleapis.com/v1beta1/projects/<serviceAccountProject>/services/tpu.googleapis.com:generateServiceIdentity
Agora adicione a conta de serviço da Cloud TPU como membro do seu projeto, com o papel Agente de serviço do Cloud ML. Conclua as etapas a seguir no
Console do Google Cloud ou usando o comando gcloud
:
Console
- Faça login no Console do Google Cloud e escolha o projeto em que você usa a TPU.
- Escolha IAM e Admin > IAM.
- Clique no botão Adicionar para adicionar um membro ao projeto.
- Digite a conta de serviço de TPU na caixa de texto Membros.
- Clique na lista suspensa Papéis.
- Ative o papel Agente de serviço do Cloud ML (Agentes de serviço > Agente de serviço do Cloud ML).
gcloud
Defina as variáveis de ambiente que contêm o ID do projeto e a conta de serviço da Cloud TPU:
PROJECT_ID=PROJECT_ID SVC_ACCOUNT=your-tpu-sa-123@your-tpu-sa.google.com.iam.gserviceaccount.com
Atribua o papel
ml.serviceAgent
à conta de serviço do Cloud TPU.gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SVC_ACCOUNT --role roles/ml.serviceAgent
Para mais detalhes sobre a concessão de papéis a contas de serviço, consulte a documentação do IAM.
Configuração
Modificamos o conjunto de dados Flowers do TensorFlow, para uso neste tutorial, e
o hospedamos em um intervalo público do Cloud Storage:
gs://cloud-samples-data/ai-platform/built-in/image/flowers/
.
Console
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. A primeira é o algoritmo de treinamento. Selecione Classificação de imagens e clique em Avançar.
Dados de treinamento
Na seção Dados de treinamento, selecione os dados de treinamento do conjunto de dados de amostra que está hospedado no nosso intervalo público do Cloud Storage:
Selecione Usar vários arquivos armazenados em um diretório do Cloud Storage.
Em Caminho do diretório, preencha: "cloud-samples-data/ai-platform/built-in/image/flowers/"
Em Nome do caractere curinga, preencha “flowers_train*” para selecionar todos os arquivos de treinamento no diretório.
O Caminho completo do GCS é exibido abaixo: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
Na seção Dados de validação, selecione os dados de validação do conjunto de dados de amostra que está hospedado no nosso intervalo público do Cloud Storage:
Selecione Usar vários arquivos armazenados em um diretório do Cloud Storage.
Em Caminho do diretório, preencha: "cloud-samples-data/ai-platform/built-in/image/flowers/"
Em Nome do caractere curinga, preencha “flowers_validation*” para selecionar todos os arquivos de validação no diretório.
O caminho completo do GCS é exibido abaixo: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
Especifique o Diretório de saída como seu intervalo do Cloud Storage em que você quer que o AI Platform Training armazene o modelo treinado, os checkpoints e outros resultados do job de treinamento. Insira o caminho exato no seu intervalo ou use o botão Procurar para selecioná-lo.
gcloud
Configure as variáveis de ambiente para o ID do projeto, seu intervalo 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
# Set paths to the training and validation data.
TRAINING_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
VALIDATION_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
# Specify the Docker container for your built-in algorithm selection.
IMAGE_URI="gcr.io/cloud-ml-algos/image_classification:latest"
Enviar um job de treinamento
Para enviar um job, é preciso especificar alguns argumentos básicos de treinamento e alguns argumentos básicos relacionados ao algoritmo de classificação de imagem.
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 para o algoritmo integrado
de classificação de imagem 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 algoritmo integrado de classificação de imagens:
Argumentos do algoritmo | |
---|---|
Argumento | Descrição |
training_data_path |
Caminho para um padrão de caminhos TFRecord usado no treinamento. |
validation_data_path |
Caminho para um padrão de caminho TFRecord usado na validação. |
pretrained_checkpoint_path |
O caminho de checkpoints pré-treinados. Se quiser, use alguns checkpoints publicados. |
num_classes |
O número de classes nos dados de treinamento/validação. |
max_steps |
O número de etapas que o job de treinamento executará. |
train_batch_size |
O número de imagens a serem usadas por etapa de treinamento. |
num_eval_images |
O número total de imagens usadas na avaliação. Se for 0, todas as imagens em validation_data_path serão
usadas na avaliação.
|
learning_rate_decay_type |
O método de declínio da taxa de aprendizado durante o treinamento. |
warmup_learning_rate |
A taxa de aprendizado no início da fase de aquecimento. |
warmup_steps |
O número de etapas a serem executadas durante a fase de aquecimento ou a duração
dessa fase em etapas.
O job de treinamento usa warmup_learning_rate durante a
fase de aquecimento. Quando a fase de aquecimento termina, o job de treinamento usa
initial_learning_rate .
|
initial_learning_rate |
A taxa de aprendizado inicial após a conclusão da fase de aquecimento. |
stepwise_learning_rate_steps |
As etapas para diminuir/mudar as taxas de aprendizado para o tipo de declínio
progressivo da taxa de aprendizado. Por exemplo, "100,200" significa que a taxa de aprendizado mudará (em relação a stepwise_learning_rate_levels ) nas etapas 100
e 200. Observe que ele será respeitado somente quando
learning_rate_decay_type for definido como progressivo.
|
stepwise_learning_rate_levels |
O valor da taxa de aprendizado de cada etapa para o tipo de declínio progressivo
da taxa de aprendizagem. Observe que ele será respeitado somente quando
learning_rate_decay_type for definido como progressivo.
|
image_size |
O tamanho da imagem (largura e altura) usado no treinamento. |
optimizer_type |
O otimizador usado no treinamento. Precisa ser um dos seguintes valores: {momentum, adam, rmsprop}
|
optimizer_arguments |
Os argumentos do otimizador. É uma lista separada por vírgulas de
pares nome=valor. Precisa ser compatível com
optimizer_type . Exemplos:
|
model_type |
O tipo de arquitetura de modelo usado para treinar modelos. Pode ser um dos seguintes:
|
label_smoothing |
Parâmetro de suavização de rótulos usado em
softmax_cross_entropy .
|
weight_decay |
Coeficiente de redução de peso para regularização de L2.
loss = cross_entropy + params['weight_decay'] * l2_loss
|
Para uma lista detalhada de todas as outras sinalizações de algoritmo de classificação de imagens, consulte a referência de classificação de imagem integrada.
Console
Argumentos do algoritmo
Na primeira parte da guia Argumentos do algoritmo, preencha os seguintes valores:
- Número de classes: 5
- Máximo de etapas: 15.000
- Treinar tamanho do lote: 128
- Número de imagens de avaliação: 1
Na seção Modelo da guia Argumentos do algoritmo:
- Em Tipo de modelo, selecione Efficientnet-b4.
- Deixe em branco o Caminho de checkpoint pré-treinado.
- Deixe os valores padrão em Suavização de rótulo e Redução de peso.
Configurações de job
Na guia Configurações do job:
- Insira um Código do job exclusivo, como "image_classification_example".
- insira uma região disponível, como "us-central1".
- Para escolher tipos de máquina, selecione "CUSTOM" em nível de escalonamento.
Será exibida uma seção para que você forneça sua
Especificação de cluster personalizada.
- Para o tipo Mestre, selecione complex_model_m.
- Em Tipo de worker, selecione cloud_tpu. A contagem de workers automaticamente usa o valor padrão "1".
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 a
gcloud
para enviar o job:DATASET_NAME="flowers" ALGORITHM="image_classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_model" # 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 \ --region=$REGION \ --config=config.yaml \ --master-image-uri=$IMAGE_URI \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --job-dir=$JOB_DIR \ --max_steps=30000 \ --train_batch_size=128 \ --num_classes=5 \ --num_eval_images=100 \ --initial_learning_rate=0.128 \ --warmup_steps=1000 \ --model_type='efficientnet-b4'
Depois que o job for enviado com êxito, será possível ver 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
:
- model/ (um diretório SavedModel do
TensorFlow
que também contém um arquivo
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- eval/
- events.out.tfevents.[timestamp].cmle-training-[timestamp]
- events.out.tfevents...
- …
- variables/
- variables.data-00000-of-00001
- variables.index
O diretório do job também contém vários arquivos de checkpoints do modelo.
Confirme se a estrutura de diretórios no seu JOB_DIR
coincide com:
gcloud storage ls $JOB_DIR/* --all-versions
Implantar o modelo treinado
O AI Platform Training organiza os modelos treinados usando os recursos modelo e versão. Um modelo do AI Platform Training é um contêiner das versões do modelo de aprendizado de máquina.
Para implantar um modelo, crie um recurso e uma versão desse modelo no AI Platform Training, depois use-os para solicitar previsões on-line.
Para mais informações sobre como implantar modelos no AI Platform Training, consulte Como implantar um modelo do TensorFlow.
Console
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 ("image_classification" ou o nome do job que você usou).
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 "algorithms_image_classification_model". Depois, 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.
gcloud
O processo de treinamento com o algoritmo integrado de classificação de imagens produz um
arquivo, deployment_config.yaml
, que facilita a implantação de seu modelo
no AI Platform Training para previsões.
Copie o arquivo para o diretório local e veja o conteúdo:
gcloud storage cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
O arquivo
deployment_config.yaml
será assim:deploymentUri: gs://BUCKET_NAME/algorithms_training/flowers_image_classification/model framework: TENSORFLOW labels: global_step: '1000' job_id: flowers_image_classification_20190227060114 runtimeVersion: '1.14'
Crie o modelo e a versão no AI Platform Training:
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 previsões on-line
Ao solicitar previsões, você precisa verificar se os dados de entrada estão no formato JSON.
Faça o download dos arquivos de artefatos de treinamento:
gcloud storage cp $JOB_DIR/artifacts/* .
Prepare a entrada de previsão de uma imagem.
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:
Com o script em Python a seguir, uma única imagem é codificada com
base64
e formatada para previsão, uma chave de instância é adicionada e o resultado é gravado em um arquivo denominadoprediction_instances.json
:import json import base64 import tensorflow as tf IMAGE_URI='gs://cloud-samples-data/ai-platform/built-in/image/tutorial_examples/daisy.jpg' with tf.gfile.Open(IMAGE_URI, 'rb') as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') image_bytes = {'b64': str(encoded_string)} instances = {'image_bytes': image_bytes, 'key': '1'} with open("prediction_instances.json","w") as f: f.write(json.dumps(instances))
Envie a solicitação de previsão:
gcloud ai-platform predict --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances prediction_instances.json
Provavelmente, a saída de previsão inclui a classe daisy
, indicando que o
modelo implantado classificou a imagem de entrada como uma margarida. Como o treinamento não é
determinístico, o modelo pode ser diferente.
Sobre os dados
O conjunto de dados de flores que este exemplo usa para treinamento é fornecido pela equipe do TensorFlow.
A seguir
- Saiba mais sobre como usar o algoritmo integrado de classificação de imagens.