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 commandebq
- 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
Dans la console Google Cloud, accédez à la page "BigQuery".
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é.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
.
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.
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
Dans la console Google Cloud, accédez à la page "BigQuery".
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éesexample_dataset
du projet en cours pour effectuer des prédictions à partir des données d'entrée de la table publiquestories
de l'ensemble de donnéeshacker_news
du projetbigquery-public-data
. Dans ce cas, la fonctionserving_input_fn
du modèle TensorFlow spécifie que le modèle s'attend à une seule chaîne d'entrée nomméeinput
. Par conséquent, la sous-requête attribue l'aliasinput
à la colonne dans l'instructionSELECT
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 colonneinput
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.
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))"
}
Étapes suivantes
- Pour en savoir plus sur l'importation de modèles TensorFlow, consultez la section Instruction
CREATE MODEL
d'importation des modèles TensorFlow. - Pour obtenir plus d'informations sur BigQuery ML, consultez la page Présentation de BigQuery ML.
- Pour commencer à utiliser BigQuery ML, consultez la page Premiers pas avec BigQuery ML à l'aide de la console Google Cloud.
- Pour en savoir plus sur l'utilisation des modèles, consultez les ressources suivantes :