Neste tutorial, mostramos como exportar um modelo do BigQuery ML
e implantá-lo na Vertex AI 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, usamos componentes faturáveis do Google Cloud, incluindo:
- BigQuery ML
- Cloud Storage
- Vertex AI (opcional, usada 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 da Vertex AI, consulte Modelos treinados de maneira personalizada.
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Enable the AI Platform Training and Prediction API and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Instale a Google Cloud CLI e a Google Cloud CLI.
Criar seu conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
No console do Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em Ver 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).
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
bq
Para criar um novo conjunto de dados, utilize o
comando bq mk
com a sinalização --location. Para obter uma lista completa de parâmetros, consulte a
referência
comando bq mk --dataset.
Crie um conjunto de dados chamado
bqml_tutorialcom o local dos dados definido comoUSe uma descrição deBigQuery ML tutorial dataset:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Em vez de usar a flag
--dataset, o comando usa o atalho-d. Se você omitir-de--dataset, o comando vai criar um conjunto de dados por padrão.Confirme se o conjunto de dados foi criado:
bq ls
API
Chame o método datasets.insert com um recurso de conjunto de dados definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Treinar e implantar um modelo de regressão logística
Use as seções a seguir para aprender a 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 informações sobre como implantar um modelo na Vertex AI para previsões on-line ou em lote, consulte Implantar um modelo em um endpoint.
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
Para mais informações sobre como executar previsões on-line em um modelo implantado, consulte Receber inferências on-line de um modelo treinado personalizado.
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
Use as seções a seguir para aprender a treinar e implantar um modelo de classificador de árvore otimizado.
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 no modelo exportado. Para mais informações, consulte Receber inferências on-line de um modelo treinado personalizado.
Para mais informações sobre como implantar um modelo na Vertex AI para previsões on-line ou em lote usando rotinas personalizadas, consulte Implantar um modelo em um endpoint.
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 informações sobre como executar previsões on-line em um modelo implantado, consulte Receber inferências on-line de um modelo treinado personalizado.
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
Use as seções a seguir para saber como 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 Vertex AI.
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 Vertex AI
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 consoleGoogle 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). Em seguida, clique em Excluir.
Exclua 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 Google 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.