O treinamento com algoritmos integrados no AI Platform Training permite enviar o conjunto de dados e treinar um modelo sem a necessidade de escrever código de treinamento. Nesta página, você aprenderá como o algoritmo integrado de amplitude e profundidade funciona e como usá-lo.
Visão geral
Esse algoritmo integrado realiza trabalhos de pré-processamento e treinamento:
- Pré-processamento: o AI Platform Training processa a combinação de dados categóricos e numéricos em um conjunto de dados numéricos para prepará-lo para o treinamento.
- Treinamento: usando o conjunto de dados e os parâmetros de modelo fornecidos, o AI Platform Training executa o treinamento usando o Estimator de amplitude e profundidade (em inglês) do TensorFlow.
Limitações
Os recursos a seguir não são compatíveis com o treinamento que utiliza o algoritmo integrado de amplitude e profundidade:
- Treinamento com várias GPUs: Os algoritmos integrados apenas usam uma GPU por vez. Para aproveitar ao máximo o treinamento com várias GPUs em uma só máquina, você precisa criar um aplicativo de treinamento. Encontre mais informações sobre os tipos de máquinas.
- Treinamento com TPUs. Para treinar com TPUs, crie um aplicativo de treinamento. Aprenda como gerar um job de treinamento com TPUs.
- Treinamento distribuído: Para executar um job de treinamento distribuído no AI Platform Training, crie um aplicativo de treinamento.
Tipos de máquina compatíveis
Os níveis de escalonamento e tipos de máquina do AI Platform Training a seguir são compatíveis:
- ScaleTier
BASIC
CUSTOM
Nível de escalonamento PERSONALIZADO com qualquer um dos tipos de máquina do Compute Engine compatíveis com o AI Platform Training.CUSTOM
Nível de escalonamento PERSONALIZADO com qualquer um dos tipos de máquina legados a seguir:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
Formatar dados de entrada
Cada linha de um conjunto de dados representa uma instância, e cada coluna de um conjunto de dados representa um valor de atributo. A coluna de destino representa o valor que você quer prever.
Preparar arquivo CSV
Os dados de entrada precisam estar em um arquivo CSV com codificação UTF-8. Se os dados de treinamento consistirem apenas em valores categóricos e numéricos, será possível usar o módulo de pré-processamento para preencher valores numéricos não encontrados, dividir o conjunto de dados e remover linhas com mais de 10% dos valores não encontrados. Do contrário, será possível gerar o treinamento sem pré-processamento automático ativado.
Prepare o arquivo CSV de entrada para atender aos seguintes requisitos:
- Remova a linha do cabeçalho. A linha do cabeçalho contém os rótulos de cada coluna. Remova a linha do cabeçalho para evitar enviá-la com o restante das instâncias de dados como parte dos dados de treinamento.
- Verifique se a coluna de destino é a primeira. A coluna de destino contém o valor que você está tentando prever. Para um algoritmo de classificação, todos os valores na coluna de destino são uma classe ou uma categoria. Para um algoritmo de regressão, todos os valores na coluna de destino são um valor numérico.
Processar valores inteiros
O significado de valores inteiros pode ser ambíguo, o que torna as colunas de valores inteiros problemáticas no pré-processamento automático. O AI Platform Training determina automaticamente como lidar com valores inteiros. Por padrão:
- Se cada valor inteiro for único, a coluna será tratada como chaves de instância.
- Se houver apenas alguns valores inteiros únicos, a coluna será tratada como categórica.
- Caso contrário, os valores na coluna serão convertidos em flutuantes e tratados como numéricos.
Para substituir essas determinações padrão:
- Se os dados precisarem ser tratados como numéricos, converta todos os valores inteiros na coluna para ponto flutuante. Por exemplo, {101.0, 102.0, 103.0}
- Se os dados precisarem ser tratados como categóricos, adicione um prefixo não numérico a todos os valores inteiros na coluna. Por exemplo, {code_101, code_102, code_103}
Verificar as permissões do bucket do Cloud Storage
Para armazenar seus dados, use um bucket do Cloud Storage no mesmo projeto do Google Cloud usado para executar jobs do AI Platform Training. Caso contrário, conceda acesso de treinamento do AI Platform ao intervalo do Cloud Storage em que os dados estão armazenados.
Enviar um job de treinamento de amplitude e profundidade
Nesta seção, você aprende a enviar um job de treinamento usando o algoritmo integrado de amplitude e profundidade.
Você encontra explicações resumidas de cada hiperparâmetro no Console do Google Cloud e outra mais completa na referência do algoritmo integrado de amplitude e profundidade.
Console
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.
Na página Criar um novo job de treinamento, selecione Amplitude e profundidade integradas e clique em Avançar.
Para mais informações sobre todos os parâmetros disponíveis, use os links no Console do Google Cloud e consulte a Referência da amplitude e profundidade integradas.
gcloud
Defina variáveis de ambiente para o job, preenchendo o
[VALUES-IN-BRACKETS]
com seus próprios valores:# Specify the name of the Cloud Storage bucket where you want your # training outputs to be stored, and the Docker container for # your built-in algorithm selection. BUCKET_NAME='[YOUR-BUCKET-NAME]' IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest' # Specify the Cloud Storage path to your training input data. TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv' DATASET_NAME='census' ALGORITHM='wide_deep' MODEL_TYPE='classification' DATE='date '+%Y%m%d_%H%M%S'' MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" JOB_ID="${MODEL_NAME}_${DATE}" JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
Envie o job de treinamento usando
gcloud ai-platform jobs training submit
: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
Monitore o status do job de treinamento exibindo os registros com
gcloud
. Consultegcloud ai-platform jobs describe
egcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Como funciona o pré-processamento
O pré-processamento automático funciona para dados categóricos e numéricos. A rotina de pré-processamento primeiro analisa e, depois, transforma os dados.
Análise
Primeiro, o AI Platform Training detecta automaticamente o tipo de dados de cada coluna, identifica como tratar cada uma delas e calcula algumas estatísticas dos dados nelas. Essas informações são capturadas no arquivo metadata.json
.
O AI Platform Training analisa o tipo da coluna de destino para identificar se o conjunto de dados fornecido é de regressão ou classificação. Se essa análise entrar em conflito com a seleção do model_type
, resultará em erro. Formate os dados com clareza em casos ambíguos para deixar explícito como a coluna de destino precisará ser tratada.
Tipo: a coluna pode ser numérica ou categórica.
Tratamento: o AI Platform Training identifica como tratar cada coluna da seguinte maneira:
- Se a coluna incluir um único valor em todas as linhas, ela será tratada como uma constante.
- Se for categórica e incluir valores exclusivos em todas as linhas, a coluna será tratada como um row_identifier.
- Se for numérica com valores flutuantes ou se for numérica com valores inteiros e contiver muitos valores exclusivos, a coluna será tratada como numérica.
- Se for numérica com valores inteiros e contiver alguns valores exclusivos suficientes, a coluna será tratada como uma coluna categórica em que os valores inteiros serão a identidade ou o vocabulário.
- Uma coluna terá poucos valores exclusivos se o número de valores exclusivos na coluna for menor que 20% do número de linhas no conjunto de dados de entrada.
- Se for categórica com cardinalidade alta, a coluna será tratada com hash, em que o número de buckets de hash será igual à raiz quadrada do número de valores exclusivos na coluna.
- Uma coluna categórica terá cardinalidade alta se o número de valores exclusivos for maior que a raiz quadrada do número de linhas no conjunto de dados.
- Se for categórica e o número de valores exclusivos for menor que ou igual à raiz quadrada do número de linhas no conjunto de dados, a coluna será tratada como categórica normal com vocabulário.
Estatísticas: com base no tipo de coluna e tratamento identificados, o AI Platform Training calcula as seguintes estatísticas, que serão usadas para transformar a coluna em um estágio posterior.
- Se a coluna for numérica, os valores médios e de variância serão calculados.
- Se a coluna for categórica e o tratamento for de identidade ou vocabulário, os valores distintos serão extraídos da coluna.
- Se a coluna for categórica e o tratamento for hash, o número de buckets de hash será computado em relação à cardinalidade da coluna.
Transformação
Após a conclusão da análise inicial do conjunto de dados, o AI Platform Training transforma os dados com base nos tipos, tratamentos e estatísticas aplicados ao conjunto de dados. O AI Platform Training faz transformações na ordem a seguir:
- Divide o conjunto de dados de treinamento em conjuntos de dados de validação e teste se você especificar as porcentagens divididas.
- Remove linhas que não tenham mais de 10% dos atributos.
- Preenche valores numéricos não encontrados usando a média da coluna.
Transformações de exemplo
As linhas sem 10% dos valores são removidas. Nos exemplos a seguir, suponhamos que a linha tenha 10 valores. Para simplificar, as linhas de exemplo estão truncadas.
Problema da linha | Valores originais | Valores transformados | Explicação |
---|---|---|---|
Linha de exemplo com todos os valores | [3, 0.45, ..., 'fruits', 0, 1] |
[3, 0.45, ..., 1, 0, 0, 0, 1] |
A string 'fruits' é transformada nos valores "1, 0, 0" em codificação one-hot. Isso acontecerá depois no gráfico do TensorFlow. |
Muitos valores não encontrados | [3, 0.45, ..., 'fruits', __, __] |
A linha é removida | Mais de 10% dos valores na linha não foram encontrados. |
Valor numérico não encontrado | [3, 0.45, ..., 'fruits', 0, __] |
[3, 0.45, ..., 1, 0, 0, 0, 0.54] |
|
Valor categórico não encontrado | [3, 0.45, ..., __, 0, 1] |
[3, 0.45, ..., 0, 0, 0, 0, 1] |
|
Colunas de atributos
Durante a transformação, as colunas não são processadas. Em vez disso, os metadados produzidos durante a análise são transmitidos ao AI Platform Training para criar as colunas de atributo adequadamente:
Tipo de coluna | Tratamento de coluna | Coluna de atributo resultante |
---|---|---|
Numérico | Todos os tipos de tratamento de colunas |
tf.feature_column.numeric_column
Os valores de média e variância são usados para padronizar os valores: |
Categórico | Identidade |
tf.feature_column.categorical_column_with_identity
|
Categórico | Vocabulário |
tf.feature_column.categorical_column_with_vocabulary_list
|
Categórico | Hash |
tf.feature_column.categorical_column_with_hash_bucket
|
Categórico | Constante ou identificador de linha | Ignorado. Nenhuma coluna de atributos criada. |
Colunas de atributos complementares
Você tem a opção de usar colunas categóricas na parte ampla do modelo de DNN (use_wide
) ou incorporá-las à parte profunda do modelo (embed_categories
). Dependendo das suas seleções, as seguintes colunas de atributos complementares serão adicionadas:
use_wide ativado |
embed_categories ativado |
Resultado |
---|---|---|
True | True ou false | O recurso é transferido para a parte ampla do modelo. |
True ou false | True | Uma coluna de atributos de incorporação é criada para a categórica. Nela, a dimensão de incorporação é definida como o teto da raiz quadrada do número de categorias na coluna. Ela é transferida para a parte profunda do modelo. |
False | False | Uma coluna de indicadores é criada para a categórica. Ela é transferida para a parte profunda do modelo. |
Após a conclusão do pré-processamento automático, o AI Platform Training faz o upload do conjunto de dados processado para o bucket do Cloud Storage no diretório especificado na solicitação do job.
A seguir
- Saiba mais sobre como o algoritmo integrado de amplitude e profundidade funciona.
- Saiba mais sobre colunas de atributos do TensorFlow (em inglês).