Effectuer des prédictions à l'aide des modèles TensorFlow importés
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 :
- La console Google Cloud
- La commande
bq query
dans 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
Dans Google Cloud Console, 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/*')"
}
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 la page Configurer l'authentification pour un environnement de développement local.
Importez le modèle à l'aide de l'objet TensorFlowModel
.
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 Google Cloud Console, 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 FROMbigquery-public-data.hacker_news.full
) )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 publiquefull
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.full`))'
Cet exemple renvoie ce type de résultats :
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | 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 suivante :
{
"query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_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 la page Configurer l'authentification pour un environnement de développement local.
Utilisez la fonction predict
pour exécuter le modèle distant :
Le résultat ressemble à ce qui suit :
É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 Créer des modèles de machine learning dans BigQuery ML.
- Pour en savoir plus sur l'utilisation des modèles, consultez les ressources suivantes :