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

Présentation

Cette page explique comment importer des modèles TensorFlow dans un ensemble de données BigQuery ML, puis comment s'en servir pour effectuer des prédictions à partir d'une requête SQL. Vous pouvez importer des modèles TensorFlow à l'aide des interfaces suivantes :

  • Google Cloud Console
  • La commande bq query de l'outil de ligne de commande bq
  • L'API BigQuery

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.

Importer des modèles TensorFlow

Pour importer des modèles TensorFlow dans un ensemble de données, procédez comme suit :

Console

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

    Accéder à BigQuery

  2. Dans l'éditeur de requêtes, saisissez l'instruction CREATE MODEL suivante :

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

    La requête précédente importe un modèle situé à l'emplacement gs://cloud-training-demos/txtclass/export/exporter/1549825580/* en tant que modèle BigQuery ML nommé imported_tf_model. L'URI Cloud Storage se termine par un caractère générique (*), qui permet à BigQuery ML d'importer également 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é.

  3. Votre nouveau modèle devrait désormais s'afficher dans le panneau Ressources. À mesure que vous développez chacun des ensembles de données d'un projet, les modèles sont répertoriés avec les autres ressources BigQuery des ensembles de données. Les modèles sont indiqués par l'icône icône de modèle.

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

Pour importer un modèle TensorFlow à partir de Cloud Storage, exécutez une requête par lot en saisissant une commande semblable à celle-ci :

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

Exemple :

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

Une fois le modèle importé, il doit apparaître dans le résultat de la requête bq ls [dataset_name] :

$ bq ls example_dataset

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

API

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

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

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

Pour effectuer des prédictions à l'aide des modèles TensorFlow importés, procédez comme suit : Les exemples suivants supposent que vous avez importé le modèle TensorFlow comme vous l'avez fait dans l'exemple précédent.

Console

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

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez une requête à l'aide de ML.PREDICT comme ceci :

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

    La requête précédente utilise le modèle nommé imported_tf_model dans l'ensemble de données example_dataset du projet en cours pour effectuer des prédictions à partir des données d'entrée de la table publique stories de l'ensemble de données hacker_news du projet bigquery-public-data. Dans ce cas, la fonction serving_input_fn du modèle TensorFlow spécifie que le modèle s'attend à une seule chaîne d'entrée nommée input. Par conséquent, la sous-requête attribue l'alias input à la colonne dans l'instruction SELECT de la sous-requête.

    Cette requête renvoie les résultats ci-dessous. Dans cet exemple, le modèle génère la colonne dense_1, qui contient un tableau de valeurs de probabilité, ainsi qu'une colonne input qui affiche les valeurs de chaîne correspondantes de la table d'entrée. Chaque valeur d'élément dans le tableau représente la probabilité que la chaîne d'entrée correspondante soit un titre d'article issu d'une publication spécifique.

    Résultats de la requête

bq

Pour effectuer des prédictions à partir des données d'entrée de la table input_data, saisissez une commande comme suit, à l'aide du modèle TensorFlow importé my_model :

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

Exemple :

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

Cet exemple renvoie ce type de résultats :

+----------------------------------------------------------------------+------------------------------------------------------------------------------------+
|                               dense_1                                |                                       input                                        |
+----------------------------------------------------------------------+------------------------------------------------------------------------------------+
|   ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Appshare                                                                           |
|    ["0.6251608729362488","0.2989124357700348","0.07592673599720001"] | A Handfull of Gold.                                                                |
|   ["0.014276246540248394","0.972910463809967","0.01281337533146143"] | Fastest Growing Skin Care Supplement for Increased Hair, Skin and Nail Nourishment |
| ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | R4 3ds sdhc                                                                        |
|   ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Empréstimo Com Nome Sujo                                                           |
+----------------------------------------------------------------------+------------------------------------------------------------------------------------+

API

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

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

Étape suivante