O serviço de treinamento AI Platform Training gerencia recursos de computação na nuvem para treinar seus modelos. Nesta página, descrevemos o processo para treinar um modelo do XGBoost usando o AI Platform Training.
Neste tutorial, você treinará um modelo simples para prever o nível de renda de uma pessoa com base no conjunto de dados de renda do Censo (em inglês). Você criará um aplicativo de treinamento no local, fará o upload dele para o Cloud Storage e enviará um job de treinamento. O serviço de treinamento do AI Platform Training grava a saída no bucket do Cloud Storage e cria registros no Logging.
Este conteúdo também está disponível no GitHub como um bloco de anotações do Jupyter.
Como treinar seu modelo no AI Platform Training
É possível treinar seu modelo no AI Platform Training em três etapas:
- Crie o arquivo de modelo em Python
- Adicione o código para fazer o download dos seus dados pelo Cloud Storage para que o AI Platform Training possa usá-los.
- Adicione código para exportar e salvar o modelo no Cloud Storage depois que o AI Platform Training terminar de treinar o modelo.
- Prepare um pacote de aplicativo de treinamento.
- Enviar o job de treinamento
Antes de começar
Conclua as etapas a seguir para configurar uma conta do GCP, ativar a API AI Platform Training e instalar e ativar o SDK do Cloud.
Configurar o projeto GCP
- 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
Configurar o ambiente
Escolha uma das opções abaixo para configurar o ambiente localmente no macOS ou em um ambiente remoto no Cloud Shell.
Para usuários do macOS, recomendamos a configuração do ambiente usando a guia MACOS abaixo. O Cloud Shell, mostrado na guia CLOUD SHELL, está disponível para macOS, Linux e Windows. Com ele, você testa rapidamente o AI Platform Training. No entanto, ele não é adequado para trabalhos de desenvolvimento contínuos.
macOS
-
Verificar a instalação do Python
Verifique se o Python (em inglês) está instalado e, se necessário, instale-o.python -V
-
Verificar a
pip
instalação do
pip
é o gerenciador de pacote do Python, incluído nas versões atuais do Python. Executepip --version
para verificar se opip
já está instalado. Caso contrário, veja como instalar opip
(em inglês).É possível fazer upgrade do
pip
usando o comando a seguir:pip install -U pip
Consulte a documentação do pip para mais detalhes.
-
Instalar
virtualenv
virtualenv
é uma ferramenta para criar ambientes Python isolados. Executevirtualenv --version
para verificar se avirtualenv
já está instalada. Caso contrário, instalevirtualenv
(em inglês):pip install --user --upgrade virtualenv
Para criar um ambiente de desenvolvimento isolado para este guia, crie um novo ambiente virtual em
virtualenv
. Por exemplo, com o comando a seguir, você ativa um ambiente chamadoaip-env
:virtualenv aip-env source aip-env/bin/activate
-
Neste tutorial, execute o restante dos comandos no ambiente virtual.
Veja mais informações sobre o uso davirtualenv
(em inglês). Para sair davirtualenv
, executedeactivate
.
Cloud Shell
-
Abra o console do Google Cloud.
-
Clique no botão Ativar o Cloud Shell na parte superior da janela do console.
Uma sessão do Cloud Shell é aberta em um novo frame na parte inferior do console e um prompt de linha de comando é exibido. A inicialização da sessão do shell pode levar alguns segundos.
A sessão do Cloud Shell está pronta para ser usada.
-
Configure a ferramenta de linha de comando
gcloud
para usar o projeto selecionado.gcloud config set project [selected-project-id]
em que
[selected-project-id]
é o ID do projeto. Retire os colchetes incluídos.
Instalar frameworks
macOS
No ambiente virtual, execute o comando a seguir para instalar as versões do scikit-learn, do XGBoost e do pandas que foram usadas na versão 2.11 do ambiente de execução do AI Platform Training:
(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5
Ao fornecer os números de versão no comando anterior, você garante que as dependências em seu ambiente virtual correspondam às dependências na versão do ambiente de execução. Isso ajuda a evitar comportamentos inesperados quando o código é executado no AI Platform Training.
Para mais detalhes, opções de instalação e solução de problemas, consulte as instruções de instalação de cada framework:
Cloud Shell
Execute o seguinte comando para instalar o scikit-learn, o XGBoost e o pandas:
pip install --user scikit-learn xgboost pandas
Para mais detalhes, opções de instalação e informações sobre solução de problemas, consulte as instruções de instalação de cada framework:
Configurar o bucket do Cloud Storage
Você precisará de um bucket do Cloud Storage para armazenar o código de treinamento e as dependências. Para este tutorial, é mais fácil usar um bucket dedicado do Cloud Storage no mesmo projeto que você está utilizando no AI Platform Training.
Se você estiver usando um bucket em outro projeto, precisará garantir que sua conta de serviço do AI Platform Training acesse seu código de treinamento e dependências no Cloud Storage. Sem as permissões apropriadas, o job de treinamento falhará. Saiba como conceder permissões para armazenamento.
Use ou configure um bucket na mesma região que está sendo usada para executar os jobs de treinamento. Veja as regiões disponíveis para os serviços do AI Platform Training.
Nesta seção, você aprende a criar um novo bucket. É possível usar um bucket atual, mas ele precisa estar na mesma região em que você planeja executar os jobs do AI Platform. Além disso, se ele não fizer parte do projeto que você está usando para executar o AI Platform Training, conceda acesso explícito às contas de serviço do AI Platform Training.
-
Especifique um nome para o novo bucket. Ele precisa ser único em todos os buckets no Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Por exemplo, use o nome do seu projeto com
-aiplatform
anexado:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
Verifique o nome do bucket que você criou.
echo $BUCKET_NAME
-
Selecione a região do bucket e defina a variável de ambiente
REGION
.Use a mesma região em que você planeja executar jobs do AI Platform Training. Veja as regiões disponíveis para os serviços do AI Platform Training.
Por exemplo, o código a seguir cria
REGION
e a define comous-central1
:REGION=us-central1
-
Crie o novo bucket:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
Sobre os dados
O conjunto de dados de renda do censo usado para treinamento nesta amostra 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. Este conjunto de dados está disponível publicamente para uso por qualquer pessoa nos seguintes termos fornecidos pela fonte do conjunto de dados (http://archive.ics.uci.edu/ml, em inglês). Ele é oferecido "NA FORMA EM QUE SE ENCONTRA", sem qualquer garantia, expressa ou implícita, do Google. O Google se isenta de qualquer responsabilidade por eventuais danos, diretos ou indiretos, decorrentes do uso do conjunto de dados.
Para sua comodidade, os dados estão hospedados em um bucket público do Cloud Storage: gs://cloud-samples-data/ai-platform/sklearn/census_data/
. É possível fazer o download dele no seu arquivo de treinamento em Python.
Crie o arquivo de modelo em Python
Você encontra todo o código de treinamento desta seção no GitHub: train.py
(em inglês).
Nesta seção, explicamos a função do código de treinamento.
Configuração
Importe as seguintes bibliotecas pelo Python, pela Google Cloud CLI, pelo XGBoost e pelo scikit-learn. Defina uma variável para o nome do seu bucket do Cloud Storage.
import xgboost as xgb
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import subprocess
from google.cloud import storage
# Fill in your Cloud Storage bucket name
BUCKET_ID = <YOUR_BUCKET_NAME>
Fazer o download de dados do Cloud Storage
Durante o processo de desenvolvimento típico, você faz o upload de seus
próprios dados para o Cloud Storage para que o AI Platform Training possa acessá-los. Os dados
deste tutorial estão hospedados em um bucket público: gs://cloud-samples-data/ai-platform/sklearn/census_data/
.
Com o código abaixo, você faz download do conjunto de dados de treinamento, adult.data
. Os dados de avaliação estão disponíveis em adult.test
, mas não são usados neste tutorial.
Adicionar o código do seu modelo
O código de treinamento do modelo realiza algumas etapas básicas:
- Definir e carregar dados
- Converter recursos categóricos em recursos numéricos
- Extrair recursos numéricos com um canal do scikit-learn
- Exportar e salvar o modelo no Cloud Storage
Definir e carregar dados
Converter recursos categóricos em recursos numéricos
Treinar, exportar e salvar o modelo no Cloud Storage
Se o bucket do Cloud Storage estiver no mesmo projeto usado no AI Platform Training, o AI Platform Training poderá ler e gravar no bucket. Caso contrário, verifique se o projeto que você está usando para executar o AI Platform Training pode acessar seu bucket do Cloud Storage. Saiba como conceder permissões de armazenamento.
Certifique-se de nomear seu arquivo de modelo model.pkl
, model.joblib
ou model.bst
, se quiser usá-lo para solicitar previsões on-line com o AI Platform Prediction.
Verificar o upload do arquivo de modelo Cloud Storage (opcional)
Na linha de comando, visualize o conteúdo da pasta de destino do modelo para verificar se o upload do arquivo de modelo para o Cloud Storage foi feito. Defina uma variável de ambiente (BUCKET_ID
) para o nome do seu bucket, se ainda não tiver feito isso.
gcloud storage ls gs://$BUCKET_ID/census_*
A saída será assim:
gs://[YOUR-PROJECT-ID]/census_[DATE]_[TIME]/model.bst
Criar um pacote de aplicativo de treinamento
A maneira mais fácil e recomendada de criar um pacote de aplicativo de treinamento é usar o gcloud
para empacotar e transferir o aplicativo quando você enviar o job de treinamento. Com esse método, você cria uma estrutura muito simples com apenas dois arquivos. Para este tutorial, a estrutura de arquivos do seu pacote de aplicativo de treinamento precisa ser similar a esta:
census_training/
__init__.py
train.py
Crie um diretório no local:
mkdir census_training
Crie um arquivo em branco chamado
__init__.py
:touch census_training/__init__.py
Salve o código de treinamento em um arquivo Python. Depois, salve esse arquivo no diretório
census_training
. Veja o código de exemplo detrain.py
(em inglês). UsecURL
para fazer o download do arquivo e salvá-lo:curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/xgboost/notebooks/census_training/train.py > census_training/train.py
Saiba mais sobre como empacotar um aplicativo de treinamento.
Enviar o job de treinamento
Nesta seção, você usa gcloud ai-platform jobs submit training
para enviar o job de treinamento.
Especificar os parâmetros do job de treinamento
Defina as variáveis de ambiente a seguir para cada parâmetro na solicitação de job de treinamento:
PROJECT_ID
: use o PROJECT_ID que corresponde ao seu projeto do Google Cloud.BUCKET_ID
: o nome do bucket do Cloud Storage.JOB_NAME
: o nome que será usado no job. Use apenas letras maiúsculas e minúsculas, números e sublinhados, começando com uma letra. Nesse caso,census_training_$(date +"%Y%m%d_%H%M%S")
.JOB_DIR
: o caminho para o local do Cloud Storage a ser usado nos arquivos de saída do job de treinamento. Por exemplo,gs://$BUCKET_ID/xgboost_job_dir
.TRAINING_PACKAGE_PATH
: o caminho local do diretório raiz do aplicativo de treinamento. Nesse caso,./census_training/
.MAIN_TRAINER_MODULE
: especifica qual arquivo o serviço de treinamento do AI Platform Training executará. Ele tem o formato[YOUR_FOLDER_NAME.YOUR_PYTHON_FILE_NAME]
. Nesse caso,census_training.train
.REGION
: o nome da região usada para executar o job de treinamento. Use uma das regiões disponíveis para o serviço de treinamento do AI Platform Training. Verifique se o bucket do Cloud Storage está na mesma região. Neste tutorial,us-central1
é usada.RUNTIME_VERSION
: é necessário especificar uma versão de ambiente de execução do AI Platform Training que seja compatível com o scikit-learn. Neste exemplo,2.11
.PYTHON_VERSION
: a versão do Python a ser usada para o job. Para este tutorial, especifique o Python 3.7.SCALE_TIER
: uma especificação de cluster predefinida de máquinas para executar o job de treinamento. Nesse caso,BASIC
. Também é possível usar níveis de dimensionamento personalizados para definir a própria configuração de clusters para o treinamento.
Para sua comodidade, as variáveis de ambiente deste tutorial estão listadas abaixo.
Substitua [VALUES-IN-BRACKETS]
pelos valores apropriados:
PROJECT_ID=[YOUR-PROJECT-ID]
BUCKET_ID=[YOUR-BUCKET-ID]
JOB_NAME=census_training_$(date +"%Y%m%d_%H%M%S")
JOB_DIR=gs://$BUCKET_ID/xgboost_job_dir
TRAINING_PACKAGE_PATH="[YOUR-LOCAL-PATH-TO-TRAINING-PACKAGE]/census_training/"
MAIN_TRAINER_MODULE=census_training.train
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
Envie a solicitação:
gcloud ai-platform jobs submit training $JOB_NAME \
--job-dir $JOB_DIR \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--region $REGION \
--runtime-version=$RUNTIME_VERSION \
--python-version=$PYTHON_VERSION \
--scale-tier $SCALE_TIER
O resultado será semelhante a:
Job [census_training_[DATE]_[TIME]] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe census_training_20180718_160825 or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs census_training_[DATE]_[TIME] jobId: census_training_[DATE]_[TIME] state: QUEUED
Como visualizar os registros de treinamento (opcional)
O AI Platform Training captura todos os streams stdout
e stderr
e as instruções
de geração de registros. Esses registros são armazenados no Logging e
permanecem visíveis durante e após a execução.
Para ver os registros do job de treinamento:
Console
Abra a página Jobs do AI Platform Training.
Selecione o nome do job de treinamento a ser inspecionado. Você será direcionado à página Detalhes do job correspondente ao job de treinamento selecionado.
Nos detalhes do job, selecione o link Ver registros. Você será direcionado à página “Registros”, em que é possível pesquisar e filtrar os registros do job de treinamento selecionado.
gcloud
Veja os registros no terminal com
gcloud ai-platform jobs stream-logs
.
gcloud ai-platform jobs stream-logs $JOB_NAME
A seguir
- Receba previsões on-line com o XGBoost no AI Platform Training.
- Saiba como usar níveis de dimensionamento personalizados para definir a própria configuração de clusters para o treinamento.