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.
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.