Este tutorial mostra como exportar um modelo do BigQuery ML
e, em seguida, implementar o modelo no Vertex AI ou numa máquina local. Vai usar a tabela iris
dos conjuntos de dados públicos do BigQuery e trabalhar nos três cenários completos seguintes:
- Prepare e implemente um modelo de regressão logística. Também se aplica ao classificador de RND, ao regressor de RND, ao k-means, à regressão linear e aos modelos de fatorização de matrizes.
- Prepare e implemente um modelo de classificador de árvore reforçada. Também se aplica ao modelo de regressor de árvore reforçada.
- Prepare e implemente um modelo de classificador do AutoML. Também se aplica ao modelo de regressão do AutoML.
Custos
Este tutorial usa componentes faturáveis do Google Cloud, incluindo:
- BigQuery ML
- Cloud Storage
- Vertex AI (opcional, usado para previsão online)
Para mais informações acerca dos 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 de preços do Cloud Storage.
Para mais informações sobre os custos do Vertex AI, consulte o artigo Modelos preparados de forma 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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 num projeto pré-existente, aceda a
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.enable
permission. 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.enable
permission. Learn how to grant roles. - Instale a CLI do Google Cloud e a CLI do Google Cloud.
Crie o seu conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar o seu modelo de ML.
Consola
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, clique no nome do projeto.
Clique em
Ver ações > Criar conjunto de dadosNa página Criar conjunto de dados, faça o seguinte:
Para o ID do conjunto de dados, introduza
bqml_tutorial
.Em Tipo de localização, selecione Várias regiões e, de seguida, selecione EUA (várias regiões nos Estados Unidos).
Deixe as restantes predefinições como estão e clique em Criar conjunto de dados.
bq
Para criar um novo conjunto de dados, use o comando
bq mk
com a flag --location
. Para uma lista completa de parâmetros possíveis, consulte a referência do comando bq mk --dataset
.
Crie um conjunto de dados com o nome
bqml_tutorial
com a localização dos dados definida comoUS
e 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 omitir-d
e--dataset
, o comando cria um conjunto de dados por predefinição.Confirme que 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" } }
DataFrames do BigQuery
Antes de experimentar este exemplo, siga as instruções de configuração dos DataFrames do BigQuery no início rápido do BigQuery com os DataFrames do BigQuery. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure o ADC para um ambiente de desenvolvimento local.
Prepare e implemente um modelo de regressão logística
Use as secções seguintes para saber como preparar e implementar um modelo de regressão logística.
Prepare o modelo
Prepare um modelo de regressão logística que preveja o tipo de íris usando a declaração
BigQuery ML CREATE MODEL
. Esta tarefa de preparação deve demorar aproximadamente 1 minuto a concluir.
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`;'
Exporte o modelo
Exporte o modelo para um contentor do Cloud Storage através da ferramenta de linhas de comando bq. Para ver formas adicionais de exportar modelos, consulte o artigo Exporte modelos do BigQuery ML. Esta tarefa de extração deve demorar menos de 1 minuto a concluir.
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
Implementação e publicação locais
Pode implementar modelos do TensorFlow exportados através do contentor do Docker do TensorFlow Serving. Os passos seguintes requerem a instalação do Docker.
Transfira os ficheiros do modelo exportados para um diretório temporário
mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive
Crie um subdiretório de versão
Este passo define um número de versão (1 neste caso) 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
Extraia a imagem de Docker
docker pull tensorflow/serving
Execute o contentor 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 &
Execute 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
Implementação e publicação online
Esta secção usa a CLI do Google Cloud para implementar e executar previsões com base no modelo exportado.
Para mais informações sobre a implementação de um modelo no Vertex AI para previsões online ou em lote, consulte o artigo Implemente um modelo num ponto final.
Crie um recurso de modelo
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Crie 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
Este passo pode demorar alguns minutos a ser concluído. Deverá ver a mensagem
Creating version (this might take a few minutes)......
.
3) (Opcional) Obtenha informações sobre a nova versão:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Deverá ver uma saída semelhante a 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 online
Para mais informações sobre a execução de previsões online num modelo implementado, consulte o artigo Obtenha inferências online a partir de um modelo personalizado preparado.
1) Crie um ficheiro JSON delimitado por novas linhas para as entradas, por exemplo, instances.json
um ficheiro 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 a 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
Prepare e implemente um modelo de classificador de árvore de reforço
Use as secções seguintes para saber como formar e implementar um modelo de classificador de árvores melhoradas.
Prepare o modelo
Prepare um modelo de classificador de árvore melhorado que preveja o tipo de íris através da declaração
CREATE MODEL
. Esta tarefa de preparação deve demorar aproximadamente 7 minutos a concluir.
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`;'
Exporte o modelo
Exporte o modelo para um contentor do Cloud Storage através da ferramenta de linhas de comando bq. Para ver outras formas de exportar modelos, consulte o artigo Exporte 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
Implementação e publicação locais
Nos ficheiros exportados, existe um ficheiro main.py
para execução local.
Transfira os ficheiros do modelo exportados para um diretório local
mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive
Extrato de previsão
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
Instale a biblioteca XGBoost
Instale a biblioteca XGBoost: versão 0.82 ou posterior.
Execute 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}]'
Implementação e publicação online
Esta secção usa a CLI do Google Cloud para implementar e executar previsões com base no modelo exportado. Para mais informações, consulte o artigo Obtenha inferências online a partir de um modelo personalizado preparado.
Para mais informações sobre a implementação de um modelo na Vertex AI para previsões online ou em lote através de rotinas personalizadas, consulte o artigo Implemente um modelo num ponto final.
Crie um recurso de modelo
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Crie 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
Este passo pode demorar alguns minutos a ser concluído. Deverá ver a mensagem
Creating version (this might take a few minutes)......
.
3) (Opcional) Obtenha informações sobre a nova versão:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Deverá ver uma saída semelhante a 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 online
Para mais informações sobre a execução de previsões online num modelo implementado, consulte o artigo Obtenha inferências online a partir de um modelo personalizado preparado.
1) Crie um ficheiro JSON delimitado por newline para as entradas. Por exemplo, instances.json
ficheiro 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 a 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
Prepare e implemente um modelo de classificador do AutoML
Use as secções seguintes para saber como preparar e implementar um modelo de classificador do AutoML.
Prepare o modelo
Prepare um modelo de classificador do AutoML que preveja o tipo de íris através da declaração CREATE MODEL
. Os modelos do AutoML precisam de, pelo menos, 1000 linhas de dados de entrada. Como a tabela de dados de origem tem apenas 150 linhas, duplicamos os dados 10 vezes.ml_datasets.iris
Esta tarefa de
preparação deve demorar cerca de 2 horas a ser concluída.
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;'
Exporte o modelo
Exporte o modelo para um contentor do Cloud Storage através da ferramenta de linhas de comando bq. Para ver formas adicionais de exportar modelos, consulte o artigo Exportar modelos do BigQuery ML.
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
Implementação e publicação locais
Para ver detalhes sobre a criação de contentores do AutoML, consulte o artigo Exportar modelos. Os passos seguintes requerem a instalação do Docker.
Copie os ficheiros do 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
Extraia a imagem de Docker do AutoML
docker pull gcr.io/cloud-automl-tables-public/model_server
Inicie o contentor do Docker
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
Execute a previsão
1) Crie um ficheiro JSON delimitado por newline para as entradas. Por exemplo, input.json
ficheiro com o seguinte 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 predict:
curl -X POST --data @input.json http://localhost:8080/predict
Implementação e publicação online
A previsão online para modelos de regressor do AutoML e classificador do AutoML não é suportada no Vertex AI.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
- Pode eliminar o projeto que criou.
- Em alternativa, pode manter o projeto e eliminar o conjunto de dados e o contentor do Cloud Storage.
Pare o contentor Docker
1) Apresente uma lista de todos os contentores Docker em execução.
docker ps
2) Pare o contentor com o ID do contentor aplicável na lista de contentores.
docker stop container_id
Elimine recursos do Vertex AI
1) Elimine a versão do modelo.
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2) Elimine o modelo.
gcloud ai-platform models delete $MODEL_NAME
Elimine o conjunto de dados
A eliminação do projeto remove todos os conjuntos de dados e todas as tabelas no projeto. Se preferir reutilizar o projeto, pode eliminar o conjunto de dados que criou neste tutorial:
Se necessário, abra a página do BigQuery na Google Cloud consola.
Na navegação, clique no conjunto de dados bqml_tutorial que criou.
Clique em Eliminar conjunto de dados no lado direito da janela. Esta ação elimina o conjunto de dados, a tabela e todos os dados.
Na caixa de diálogo Eliminar conjunto de dados, confirme o comando de eliminação escrevendo o nome do conjunto de dados (
bqml_tutorial
) e, de seguida, clique em Eliminar.
Elimine o seu contentor do Cloud Storage
A eliminação do projeto remove todos os contentores do Cloud Storage no projeto. Se preferir reutilizar o projeto, pode eliminar o contentor que criou neste tutorial
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Selecione a caixa de verificação do contentor que quer eliminar.
Clique em Eliminar.
Na janela de sobreposição apresentada, clique em Eliminar para confirmar que quer eliminar o contentor e o respetivo conteúdo.
Elimine o projeto
Para eliminar 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.
O que se segue?
- Para uma vista geral do BigQuery ML, consulte o artigo Introdução ao BigQuery ML.
- Para obter informações sobre a exportação de modelos, consulte o artigo Exporte modelos.
- Para obter informações sobre como criar modelos, consulte a página de sintaxe
CREATE MODEL
.