Haz predicciones con modelos de TensorFlow importados
En esta página, se muestra cómo importar modelos de TensorFlow a un conjunto de datos de BigQuery ML y utilizarlos para realizar predicciones a partir de una consulta de SQL. Puedes importar modelos de TensorFlow con estas interfaces:
- La consola de Google Cloud
- El comando
bq query
en la herramienta de línea de comandos de bq - La API de BigQuery
Para obtener más información sobre cómo importar modelos de TensorFlow a BigQuery ML, incluidos los requisitos de formato y almacenamiento, consulta la declaración CREATE
MODEL
para importar modelos de TensorFlow.
Importa modelos de TensorFlow
Para importar modelos de TensorFlow a un conjunto de datos, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, ingresa una declaración
CREATE MODEL
como la siguiente.CREATE OR REPLACE MODEL `example_dataset.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
La consulta anterior importa un modelo ubicado en
gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
como un modelo de BigQuery ML llamadoimported_tf_model
. El URI de Cloud Storage termina en un carácter comodín (*
) para que BigQuery ML también importe los activos asociados con el modelo. El modelo importado es un modelo clasificador de texto de TensorFlow que predice qué sitio web publicó el título de un artículo determinado.Tu nuevo modelo ahora debería aparecer en el panel Recursos. A medida que expandes cada uno de los conjuntos de datos en un proyecto, se enumeran los modelos junto con los otros recursos de BigQuery en los conjuntos de datos. Los modelos se indican con el ícono del modelo: .
Si seleccionas el modelo nuevo en el panel Recursos, la información sobre el modelo aparece debajo del Editor de consultas.
bq
Para importar un modelo de TensorFlow desde Cloud Storage, ejecuta una consulta por lotes. Para ello, ingresa un comando como el siguiente:
bq query \
--use_legacy_sql=false \
"CREATE MODEL
`mydataset.mymodel`
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://bucket/path/to/saved_model/*')"
Por ejemplo:
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/*')"
Después de importar el modelo, debe aparecer en el resultado de bq ls [dataset_name]
:
$ bq ls example_dataset
tableId Type Labels Time Partitioning
------------------- ------- -------- -------------------
imported_tf_model MODEL
API
Inserta un nuevo trabajo y propaga la propiedad jobs#configuration.query como en el cuerpo de la solicitud siguiente:
{
"query": "CREATE MODEL `project_id:mydataset.mymodel` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Importa el modelo con el objeto TensorFlowModel
.
Haz predicciones con modelos de TensorFlow importados
Para realizar predicciones con modelos importados de TensorFlow, sigue estos pasos. En los siguientes ejemplos, se da por sentado que importaste el modelo de TensorFlow como lo hiciste en el ejemplo anterior.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, ingresa una consulta con
ML.PREDICT
como la que se muestra a continuación.SELECT * FROM ML.PREDICT(MODEL
example_dataset.imported_tf_model
, ( SELECT title AS input FROMbigquery-public-data.hacker_news.full
) )La consulta anterior usa el modelo llamado
imported_tf_model
en el conjunto de datosexample_dataset
en el proyecto actual para realizar predicciones a partir de datos de entrada en la tabla públicafull
del conjunto de datoshacker_news
en el proyectobigquery-public-data
. En este caso, la funciónserving_input_fn
del modelo de TensorFlow especifica que el modelo espera una sola string de entrada llamadainput
, por lo que la subconsulta asigna el aliasinput
a la columna en la sentenciaSELECT
de la subconsulta.Esta consulta genera resultados como los siguientes. En este ejemplo, el modelo genera la columna
dense_1
, que contiene un arreglo de valores de probabilidad, así como una columnainput
, que contiene los valores de string correspondientes de la tabla de entrada. Cada valor del elemento del arreglo representa la probabilidad de que la string de entrada correspondiente sea el título de un artículo de una publicación en particular.
bq
Para realizar predicciones a partir de datos de entrada en la tabla input_data
, ingresa un comando como el siguiente con el modelo de TensorFlow importado my_model
:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `my_project.my_dataset.my_model`,
(SELECT * FROM input_data))'
Por ejemplo:
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`))'
Este ejemplo muestra resultados como el siguiente:
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | 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
Inserta un nuevo trabajo y propaga la propiedad jobs#configuration.query como en el cuerpo de la solicitud siguiente:
{
"query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_model`, (SELECT * FROM input_data))"
}
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Usa la función predict
para ejecutar el modelo remoto:
El resultado es similar al siguiente:
¿Qué sigue?
- Para obtener más información sobre la importación de modelos de TensorFlow, consulta la declaración
CREATE MODEL
para importar modelos de TensorFlow. - Para obtener una descripción general de BigQuery ML, consulta Introducción a BigQuery ML.
- Para comenzar a usar BigQuery ML, consulta Crea modelos de aprendizaje automático en BigQuery ML.
- Para obtener más información sobre cómo trabajar con modelos, consulta estos recursos: