Neste tutorial, mostramos como exportar um modelo do BigQuery ML
e implantá-lo no AI Platform ou em uma máquina local. Você usará
a tabela iris
dos conjuntos de dados públicos do BigQuery e trabalhará nos três cenários completos a seguir:
- Treine e implante um modelo de regressão logística que também se aplica a regressor e modelos de classificador DNN, k-means, regressão linear e fatoração de matriz.
- Treine e implante um modelo de classificador de árvore otimizada que também se aplica ao modelo de regressor de árvore otimizada.
- Treine e implante um modelo de classificador do AutoML que também se aplica ao modelo de regressor do AutoML.
Custos
Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:
- BigQuery ML
- Cloud Storage
- AI Platform (opcional, usado para previsão on-line)
Para mais informações sobre os custos do BigQuery ML, consulte os preços do BigQuery ML.
Para mais informações sobre os custos do Cloud Storage, consulte a página Preços do Cloud Storage.
Para mais informações sobre os custos do AI Platform, consulte a página nós de previsão e alocação de recursos.
Antes de começar
- 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.
-
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.
- O BigQuery é ativado automaticamente em novos projetos.
Para ativar o BigQuery em um projeto preexistente, acesse
Enable the BigQuery API.
-
Enable the AI Platform Training and Prediction API and Compute Engine APIs.
- Instale a Google Cloud CLI e a Google Cloud CLI.
Criar seu conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar o modelo de ML:
No console do Google Cloud, acesse a página do BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em
Conferir ações > Criar conjunto de dados.Na página Criar conjunto de dados, faça o seguinte:
Para o código do conjunto de dados, insira
bqml_tutorial
.Em Tipo de local, selecione Multirregião e EUA (várias regiões nos Estados Unidos).
Os conjuntos de dados públicos são armazenados na multirregião
US
. Para simplificar, armazene seus conjuntos de dados no mesmo local.Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
Treinar e implantar um modelo de regressão logística
Treine o modelo
Treine um modelo de regressão logística que prevê o tipo de íris usando a
instrução CREATE MODEL
do BigQuery ML. Esse job de treinamento leva aproximadamente um minuto para ser concluído.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.iris_model` OPTIONS (model_type="logistic_reg", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Exportar o modelo
Exporte o modelo para um bucket do Cloud Storage usando a ferramenta de linha de comando bq. Para outras maneiras de exportar modelos, consulte Como exportar modelos do BigQuery ML. Esse job de extração leva menos de um minuto para ser concluído.
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
Implantação e exibição local
É possível implantar modelos exportados do TensorFlow usando o contêiner do Docker do TensorFlow Serving. As etapas a seguir exigem a instalação do Docker (em inglês).
Fazer o download dos arquivos de modelo exportados para um diretório temporário
mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive
Criar um subdiretório de versão
Esta etapa define um número de versão (neste caso, 1) para o modelo.
mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir
Extrair a imagem do Docker
docker pull tensorflow/serving
Executar o contêiner do Docker
docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &
Executar a previsão
curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict
Implantação e exibição on-line
Nesta seção, usamos a Google Cloud CLI para implantar e executar previsões no modelo exportado.
Para mais detalhes sobre como implantar um modelo no AI Platform para previsões on-line/em lote, consulte Como implantar modelos.
Criar um recurso de modelo
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Criar uma versão do modelo
1) Defina as variáveis de ambiente.
MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"
2) Crie a versão:
gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK
Esta etapa leva alguns minutos para ser concluída. Será exibida a mensagem Creating version (this might take a few minutes)......
.
3) (opcional) Consulte informações sobre sua nova versão:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
A resposta será parecida com esta:
createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Previsão on-line
Os detalhes sobre como executar previsões on-line em um modelo implantado estão disponíveis em Como solicitar previsões.
1) Crie um arquivo JSON delimitado por nova linha para entradas, por exemplo, o arquivo instances.json
com o seguinte conteúdo:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) Configure variáveis de ambiente para previsão:
INPUT_DATA_FILE="instances.json"
3) Execute a previsão:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Treinar e implantar um modelo de classificador de árvore otimizada
Treine o modelo
Treine um modelo de classificador de árvore otimizada que preveja o tipo de íris usando a
instrução
CREATE MODEL
. Esse job de treinamento leva aproximadamente sete minutos para ser concluído.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model` OPTIONS (model_type="boosted_tree_classifier", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Exportar o modelo
Exporte o modelo para um bucket do Cloud Storage com a ferramenta de linha de comando bq. Para encontrar outras maneiras de exportar modelos, consulte Como exportar modelos do BigQuery ML.
bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model
Implantação e exibição local
Nos arquivos exportados, há um arquivo main.py
para execução local.
Fazer o download dos arquivos de modelo exportados para um diretório local
mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive
Extrair Preditor
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
Instalar a biblioteca XGBoost
Instale a biblioteca XGBoost (em inglês) para versão 0.82 ou posterior.
Executar a previsão
cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'
Implantação e exibição on-line
Nesta seção, usamos a Google Cloud CLI para implantar e executar previsões do modelo exportado na previsão on-line do AI Platform.
Para mais detalhes sobre como implantar um modelo na AI Platform para previsões on-line/em lote por meio de rotinas personalizadas, consulte Como implantar modelos.
Criar um recurso de modelo
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Criar uma versão do modelo
1) Defina as variáveis de ambiente.
MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"
2) Crie a versão:
gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15
Esta etapa leva alguns minutos para ser concluída. Será exibida a mensagem Creating version (this might take a few minutes)......
.
3) (opcional) Consulte informações sobre sua nova versão:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
A resposta será parecida com esta:
createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Previsão on-line
Para mais detalhes sobre como executar previsões on-line em um modelo implantado, consulte Como solicitar previsões.
1) Crie um arquivo JSON delimitado por nova linha para entradas, por exemplo, o arquivo instances.json
com o seguinte conteúdo:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) Configure variáveis de ambiente para previsão
INPUT_DATA_FILE="instances.json"
3) Execute a previsão:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Treinar e implantar um modelo de classificador do AutoML
Treine o modelo
Treine um modelo de classificador do AutoML que prevê o tipo de íris usando a
instrução
CREATE MODEL
. Os modelos do AutoML precisam de pelo menos 1.000 linhas de dados de entrada. Como
ml_datasets.iris
tem apenas 150 linhas, duplicamos os dados 10 vezes. Esse
job de treinamento leva cerca de duas horas para ser concluído.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.automl_iris_model` OPTIONS (model_type="automl_classifier", budget_hours=1, input_label_cols=["species"]) AS SELECT * EXCEPT(multiplier) FROM `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'
Exportar o modelo
Exporte o modelo para um bucket do Cloud Storage com a ferramenta de linha de comando bq. Para encontrar outras maneiras de exportar modelos, consulte Como exportar modelos do BigQuery ML.
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
Implantação e exibição local
Para conferir detalhes sobre como criar contêineres do AutoML, consulte Como exportar modelos. As etapas a seguir exigem a instalação do Docker (em inglês).
Copiar arquivos de modelo exportados para um diretório local
mkdir automl_serving_dir
gcloud storage cp gs://some/gcs/path/automl_iris_model/* automl_serving_dir/ --recursive
Extrair imagem do Docker do AutoML
docker pull gcr.io/cloud-automl-tables-public/model_server
Iniciar contêiner do Docker
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
Executar a previsão
1) Crie um arquivo JSON delimitado por nova linha para entradas. Por exemplo, o arquivo input.json
com este conteúdo:
{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}
2) Faça a chamada de previs��o:
curl -X POST --data @input.json http://localhost:8080/predict
Implantação e exibição on-line
A previsão on-line para modelos de regressor e de classificador do AutoML não é compatível com a AI Platform.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
- exclua o projeto que você criou; ou
- Se preferir, mantenha-o e exclua o conjunto de dados e o bucket do Cloud Storage.
Interromper contêiner do Docker
1) Liste todos os contêineres do Docker em execução.
docker ps
2) Pare o contêiner com o ID aplicável a partir da lista de contêineres.
docker stop container_id
Excluir recursos do AI Platform
1) Exclua a versão do modelo.
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2) Exclua o modelo.
gcloud ai-platform models delete $MODEL_NAME
Excluir o conjunto de dados
A exclusão do seu projeto removerá todos os conjuntos de dados e tabelas no projeto. Caso prefira reutilizá-lo, exclua o conjunto de dados criado neste tutorial:
Se necessário, abra a página do BigQuery no console do Google Cloud.
Na navegação, clique no conjunto de dados bqml_tutorial criado.
Clique em Excluir conjunto de dados no lado direito da janela. Essa ação exclui o conjunto, a tabela e todos os dados.
Na caixa de diálogo Excluir conjunto de dados, confirme o comando de exclusão digitando o nome do seu conjunto de dados (
bqml_tutorial
) e clique em Excluir.
Excluir o bucket do Cloud Storage
A exclusão do projeto remove todos os buckets do Cloud Storage no projeto. Se você preferir reutilizar o projeto, exclua o bucket criado neste tutorial:
- No Console do Cloud, acesse a página Buckets do Cloud Storage.
Marque a caixa de seleção do bucket que pretende excluir.
Clique em Excluir.
Na janela de sobreposição que aparece, clique em Excluir e confirme a exclusão do bucket e do respectivo conteúdo.
Excluir o projeto
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
A seguir
- Para uma visão geral sobre ML do BigQuery, consulte Introdução ao ML do BigQuery.
- Para informações sobre como exportar modelos, consulte a página Export models.
- Para mais informações sobre como criar modelos, consulte a página de sintaxe
CREATE MODEL
.