Fazer previsões com os modelos importados do TensorFlow
Informações gerais
Nesta página, mostramos como importar modelos do TensorFlow em um conjunto de dados do BigQuery ML e usá-los para fazer predições com base em uma consulta do SQL. Importe modelos do TensorFlow usando estas interfaces:
- Console do Google Cloud
- O comando
bq query
na ferramenta de linha de comando bq - API BigQuery
Para mais informações sobre como importar modelos do TensorFlow no BigQuery ML, incluindo requisitos de formato e armazenamento, consulte a instrução CREATE
MODEL
para importar modelos do TensorFlow.
Importar modelos do TensorFlow
Para importar modelos do TensorFlow para um conjunto de dados, siga estas etapas:
Console
No console do Google Cloud, acesse a página do BigQuery.
No editor de consultas, insira uma instrução
CREATE MODEL
como a seguinte.CREATE OR REPLACE MODEL `example_dataset.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
A consulta anterior importa um modelo localizado em
gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
como um modelo de ML do BigQuery chamadoimported_tf_model
. O URI do Cloud Storage termina em um caractere curinga (*
) para que o BigQuery ML também importe quaisquer recursos associados ao modelo. O modelo importado é um modelo de classificador de texto do TensorFlow que prevê qual site publicou um determinado título de artigo.Agora, seu novo modelo aparecerá no painel Recursos. À medida que você expande cada um dos conjuntos de dados em um projeto, os modelos são listados junto a outros recursos do BigQuery nos conjuntos de dados. Os modelos são indicados pelo ícone do modelo: .
Se você selecionar o novo modelo no painel Recursos, as informações sobre o modelo serão exibidas abaixo do Editor de consultas.
bq
Para importar um modelo do TensorFlow do Cloud Storage, execute uma consulta em lote inserindo um comando como este:
bq query \
--use_legacy_sql=false \
"CREATE MODEL
`mydataset.mymodel`
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://bucket/path/to/saved_model/*')"
Exemplo:
bq query --use_legacy_sql=false \
"CREATE OR REPLACE MODEL
`example_dataset.imported_tf_model`
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
Depois de importar o modelo, ele deve aparecer na saída de bq ls [dataset_name]
:
$ bq ls example_dataset
tableId Type Labels Time Partitioning
------------------- ------- -------- -------------------
imported_tf_model MODEL
API
Insira um novo job e preencha a propriedade jobs#configuration.query como no corpo da solicitação a seguir:
{
"query": "CREATE MODEL `project_id:mydataset.mymodel` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}
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 a autenticação para um ambiente de desenvolvimento local.
Importe o modelo usando o objeto TensorFlowModel
.
Fazer previsões com os modelos importados do TensorFlow
Para fazer predições com modelos importados do TensorFlow, siga estas etapas. Nos exemplos a seguir, supomos que você importou o modelo do TensorFlow como fez no exemplo anterior.
Console
No console do Google Cloud, acesse a página do BigQuery.
No Editor de consultas, insira uma consulta usando
ML.PREDICT
(em inglês) da seguinte maneira.SELECT * FROM ML.PREDICT(MODEL
example_dataset.imported_tf_model
, ( SELECT title AS input FROMbigquery-public-data.hacker_news.full
) )A consulta anterior usa o modelo chamado
imported_tf_model
no conjunto de dadosexample_dataset
no projeto atual para fazer predições de dados de entrada na tabela públicafull
do conjunto de dadoshacker_news
no projetobigquery-public-data
. . Nesse caso, a funçãoserving_input_fn
do modelo do TensorFlow especifica que o modelo espera uma única string de entrada denominadainput
, de modo que a subconsulta atribui o aliasinput
à coluna em a instruçãoSELECT
da subconsulta.Esta consulta gera resultados como a seguir. Neste exemplo, o modelo gera a coluna
dense_1
, que contém uma matriz de valores de probabilidade, bem como uma colunainput
, que contém os valores de string correspondentes da tabela de entrada. Cada valor de elemento da matriz representa a probabilidade de que a string de entrada correspondente seja um título de artigo de uma publicação específica.
bq
Para fazer previsões a partir de dados de entrada na tabela input_data
, insira um
comando como este a seguir, usando o modelo importado
my_model
do TensorFlow:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `my_project.my_dataset.my_model`,
(SELECT * FROM input_data))'
Exemplo:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `tensorflow_sample.imported_tf_model`,
(SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'
Neste exemplo, recebemos resultados como os seguintes:
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | dense_1 | input | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | ["0.6251608729362488","0.2989124357700348","0.07592673599720001"] | How Red Hat Decides Which Open Source Companies t... | | ["0.014276246540248394","0.972910463809967","0.01281337533146143"] | Ask HN: Toronto/GTA mastermind around side income for big corp. dev? | | ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | Ask HN: What are good resources on strategy and decision making for your career? | | ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Forget about promises, use harvests | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+
API
Insira um novo job e preencha a propriedade jobs#configuration.query como no corpo da solicitação a seguir:
{
"query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_model`, (SELECT * FROM input_data))"
}
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 a autenticação para um ambiente de desenvolvimento local.
Use a função predict
para executar o modelo remoto:
O resultado será semelhante ao seguinte:
A seguir
- Para mais informações sobre como importar modelos do TensorFlow, consulte a instrução
CREATE MODEL
para importar modelos do TensorFlow. - Para uma visão geral sobre ML do BigQuery, consulte Introdução ao ML do BigQuery.
- Para começar a usar o BigQuery ML, consulte Criar modelos de machine learning no BigQuery ML.
- Para mais informações sobre como trabalhar com modelos, consulte estes recursos: