Previsioni con modelli TensorFlow importati

Questa pagina mostra come importare i modelli TensorFlow in un set di dati BigQuery ML e utilizzarli per fare previsioni da una query SQL. Puoi importare i modelli TensorFlow utilizzando queste interfacce:

  • Nella console Google Cloud
  • Il comando bq query nello strumento a riga di comando bq
  • L'API BigQuery

Per ulteriori informazioni sull'importazione di modelli TensorFlow in BigQuery ML, inclusi i requisiti di formato e archiviazione, consulta l'istruzione CREATE MODEL per l'importazione dei modelli TensorFlow.

Importa modelli TensorFlow

Per importare i modelli TensorFlow in un set di dati:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina di BigQuery

  2. Nell'editor query, inserisci CREATE MODEL come la seguente.

     CREATE OR REPLACE MODEL `example_dataset.imported_tf_model`
      OPTIONS (MODEL_TYPE='TENSORFLOW',
       MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')

    La query precedente importa un modello situato in gs://cloud-training-demos/txtclass/export/exporter/1549825580/* come modello BigQuery ML denominato imported_tf_model. Lo spazio di archiviazione L'URI termina con un carattere jolly (*) in modo che BigQuery ML importa tutti gli asset associati al modello. Il modello importato è Modello classificatore di testo TensorFlow che prevede quale sito web ha pubblicato un il titolo dell'articolo.

  3. Il nuovo modello dovrebbe ora apparire nel riquadro Risorse. Man mano che espandere ciascun set di dati di un progetto, i modelli sono elencati con le altre risorse BigQuery nei set di dati. I modelli sono indicato dall'icona del modello: icona modello .

  4. Se selezioni il nuovo modello nel riquadro Risorse, vengono visualizzate le informazioni sul modello viene visualizzata sotto Editor di query.

    Informazioni sul modello TensorFlow

bq

Per importare un modello TensorFlow da Cloud Storage, esegui un inserendo un comando simile al seguente:

bq query \
--use_legacy_sql=false \
"CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  (MODEL_TYPE='TENSORFLOW',
   MODEL_PATH='gs://bucket/path/to/saved_model/*')"

Ad esempio:

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/*')"

Una volta importato, il modello dovrebbe apparire nell'output di bq ls [dataset_name]:

$ bq ls example_dataset

       tableId        Type    Labels   Time Partitioning
 ------------------- ------- -------- -------------------
  imported_tf_model   MODEL

API

Inserisci un nuovo job e compila la proprietà jobs#configuration.query come nel seguente corpo della richiesta:

{
  "query": "CREATE MODEL `project_id:mydataset.mymodel` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}

DataFrame BigQuery

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames riportate nella guida introduttiva di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.

Importa il modello utilizzando l'oggetto TensorFlowModel.

import bigframes
from bigframes.ml.imported import TensorFlowModel

bigframes.options.bigquery.project = PROJECT_ID
# You can change the location to one of the valid locations: https://cloud.google.com/bigquery/docs/locations#supported_locations
bigframes.options.bigquery.location = "US"

imported_tensorflow_model = TensorFlowModel(
    model_path="gs://cloud-training-demos/txtclass/export/exporter/1549825580/*"
)

Elaborare previsioni con i modelli TensorFlow importati

Per fare previsioni con i modelli TensorFlow importati, segui questi passaggi. Gli esempi seguenti presuppongono che tu abbia importato il modello TensorFlow come hai fatto nell'esempio precedente.

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nell'editor query, inserisci una query utilizzando ML.PREDICT. come mostrato di seguito.

     SELECT *
       FROM ML.PREDICT(MODEL example_dataset.imported_tf_model,
         (
          SELECT title AS input
          FROM bigquery-public-data.hacker_news.full
         )
     )
     

    La query precedente utilizza il modello denominato imported_tf_model nel set di dati example_dataset nel progetto corrente per fare predizioni dai dati di input nella tabella pubblica full del set di dati hacker_news nel progetto bigquery-public-data. In questo nel caso specifico, la funzione serving_input_fn del modello TensorFlow specifica che il modello si aspetta una singola stringa di input denominata input, quindi la sottoquery assegna l'alias input alla colonna nella colonna SELECT della sottoquery l'Informativa.

    Questa query restituisce risultati come il seguente. In questo esempio, il modello restituisce la colonna dense_1, che contiene un array di con probabilità più alta, nonché una colonna input contenente i i valori di stringa corrispondenti dalla tabella di input. Ogni elemento dell'array rappresenta la probabilità che la stringa di input corrispondente sia il titolo di un articolo di una determinata pubblicazione.

    Risultati delle query

bq

Per fare previsioni dai dati di input nella tabella input_data, inserisci un comando come il seguente, utilizzando il modello TensorFlow importatomy_model:

bq query \
--use_legacy_sql=false \
'SELECT *
 FROM ML.PREDICT(
   MODEL `my_project.my_dataset.my_model`,
   (SELECT * FROM input_data))'

Ad esempio:

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`))'

Questo esempio restituisce risultati come i seguenti:

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

Inserisci un nuovo job e compila la proprietà jobs#configuration.query come nel seguente corpo della richiesta:

{
  "query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_model`, (SELECT * FROM input_data))"
}

BigQuery DataFrames

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.

Utilizza la funzione predict per eseguire il modello remoto:

import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.hacker_news.full")
df_pred = df.rename(columns={"title": "input"})
predictions = imported_tensorflow_model.predict(df_pred)
predictions.head(5)

Il risultato è simile al seguente: Result_visualization

Passaggi successivi