Effectuer des prédictions à l'aide des modèles TensorFlow importés

Dans ce tutoriel, vous allez importer des modèles TensorFlow dans un ensemble de données BigQuery ML. Vous utilisez ensuite une requête SQL pour générer des prédictions à partir des modèles importés.

Créer un ensemble de données

Créez un ensemble de données BigQuery pour stocker votre modèle de ML.

Console

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à la page "BigQuery"

  2. Dans le volet Explorateur, cliquez sur le nom de votre projet.

  3. Cliquez sur Afficher les actions > Créer un ensemble de données.

  4. Sur la page Créer un ensemble de données, procédez comme suit :

    • Dans le champ ID de l'ensemble de données, saisissez bqml_tutorial.

    • Pour Type d'emplacement, sélectionnez Multirégional, puis sélectionnez US (plusieurs régions aux États-Unis).

    • Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.

bq

Pour créer un ensemble de données, exécutez la commande bq mk en spécifiant l'option --location. Pour obtenir la liste complète des paramètres possibles, consultez la documentation de référence sur la commande bq mk --dataset.

  1. Créez un ensemble de données nommé bqml_tutorial avec l'emplacement des données défini sur US et une description de BigQuery ML tutorial dataset :

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    Au lieu d'utiliser l'option --dataset, la commande utilise le raccourci -d. Si vous omettez -d et --dataset, la commande crée un ensemble de données par défaut.

  2. Vérifiez que l'ensemble de données a été créé :

    bq ls

API

Appelez la méthode datasets.insert avec une ressource d'ensemble de données définie.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Importer un modèle TensorFlow

Les étapes suivantes vous expliquent comment importer un modèle depuis Cloud Storage. Le chemin d'accès au modèle est gs://cloud-training-demos/txtclass/export/exporter/1549825580/*. Le nom du modèle importé est imported_tf_model.

Notez que l'URI Cloud Storage se termine par un caractère générique (*). Ce caractère indique que BigQuery ML doit importer tous les éléments associés au modèle.

Le modèle importé est un modèle de classificateur de texte TensorFlow capable d'identifier le site Web ayant publié un titre d'article donné.

Pour importer le modèle TensorFlow dans votre ensemble de données, procédez comme suit.

Console

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à la page "BigQuery"

  2. Sous Créer, cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez l'instruction CREATE MODEL, puis cliquez sur Exécuter.

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

    Une fois l'opération terminée, un message tel que Successfully created model named imported_tf_model doit s'afficher.

  4. Votre nouveau modèle apparaît dans le panneau Ressources. Les modèles sont indiqués par l'icône model
icon.

  5. Si vous sélectionnez le nouveau modèle dans le panneau Ressources, les informations relatives au modèle s'affichent sous l'éditeur de requête.

    Informations sur le modèle TensorFlow

bq

  1. Importez le modèle TensorFlow depuis Cloud Storage en saisissant l'instruction CREATE MODEL suivante.

    bq query --use_legacy_sql=false \
    "CREATE OR REPLACE MODEL
      `bqml_tutorial.imported_tf_model`
    OPTIONS
      (MODEL_TYPE='TENSORFLOW',
        MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
  2. Une fois le modèle importé, vérifiez qu'il apparaît dans l'ensemble de données.

    bq ls -m bqml_tutorial

    Le résultat ressemble à ce qui suit :

    tableId             Type
    ------------------- -------
    imported_tf_model   MODEL

API

Insérez une nouvelle tâche et renseignez la propriété jobs#configuration.query dans le corps de la requête.

{
  "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
}

Remplacez PROJECT_ID par le nom de votre projet et de votre ensemble de données.

BigQuery DataFrames

Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local.

Importez le modèle à l'aide de l'objet 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/*"
)

Pour en savoir plus sur l'importation de modèles TensorFlow dans BigQuery ML, y compris sur les exigences de format et de stockage, consultez la section Instruction CREATE MODEL pour l'importation de modèles TensorFlow.

Effectuer des prédictions à l'aide du modèle TensorFlow importé

Après avoir importé le modèle TensorFlow, vous utilisez la fonction ML.PREDICT pour effectuer des prédictions avec le modèle.

La requête suivante utilise imported_tf_model pour effectuer des prédictions à l'aide des données d'entrée de la table full dans l'ensemble de données public hacker_news. Dans la requête, la fonction serving_input_fn du modèle TensorFlow indique que le modèle s'attend à une seule chaîne d'entrée nommée input. La sous-requête attribue l'alias input à la colonne title dans l'instruction SELECT de la sous-requête.

Pour effectuer des prédictions avec le modèle TensorFlow importé, suivez ces étapes.

Console

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à la page "BigQuery"

  2. Sous Créer, cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez la requête qui utilise la fonction ML.PREDICT.

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

    Les résultats de la requête devraient se présenter comme suit :

    Résultats de la requête

bq

Saisissez cette commande pour exécuter la requête qui utilise ML.PREDICT.

bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
  MODEL `bqml_tutorial.imported_tf_model`,
  (SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'

Les résultats doivent se présenter sous la forme suivante :

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

Insérez une nouvelle tâche et renseignez la propriété jobs#configuration.query comme dans le corps de la requête. Remplacez project_id par le nom de votre projet.

{
  "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))"
}

BigQuery DataFrames

Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local.

Utilisez la fonction predict pour exécuter le modèle TensorFlow :

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)

Les résultats doivent se présenter sous la forme suivante :

Result_visualization

Dans les résultats de la requête, la colonne dense_1 contient un tableau de valeurs de probabilité, et la colonne input contient les valeurs de chaîne correspondantes de la table d'entrée. Chaque valeur d'élément du tableau représente la probabilité que la chaîne d'entrée correspondante soit un titre d'article issu d'une publication spécifique.