Ce tutoriel explique comment exporter un modèle BigQuery ML, puis le déployer sur Vertex AI ou sur une machine locale. Vous allez utiliser la table iris
des ensembles de données publics BigQuery et effectuer les trois scénarios de bout en bout suivants :
- Entraîner et déployer un modèle de régression logistique (s'applique également aux modèles de classificateur DNN, de régresseur DNN, de k-moyennes, de régression linéaire et de factorisation matricielle)
- Entraîner et déployer un modèle de classificateur d'arbre de décision à boosting (s'applique également au modèle de régresseur d'arbre de décision à boosting)
- Entraîner et déployer un modèle de classificateur AutoML (s'applique également au modèle de régresseur AutoML)
Coûts
Ce tutoriel utilise des composants facturables de Trusted Cloud by S3NS, y compris :
- BigQuery ML
- Cloud Storage
- Vertex AI (facultatif, utilisé pour la prédiction en ligne)
Pour en savoir plus sur les coûts associés à BigQuery ML, consultez la page Tarifs de BigQuery ML.
Pour en savoir plus sur le coût de Cloud Storage, consultez la page Tarifs de Cloud Storage.
Pour en savoir plus sur les coûts de Vertex AI, consultez Modèles entraînés personnalisés.
Avant de commencer
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
- BigQuery est automatiquement activé dans les nouveaux projets.
Pour activer BigQuery dans un projet préexistant, accédez à
Enable the BigQuery API.
-
Enable the AI Platform Training and Prediction API and Compute Engine APIs.
- Installez Google Cloud CLI et Google Cloud CLI.
Créer votre ensemble de données
Créez un ensemble de données BigQuery pour stocker votre modèle de ML.
Console
Dans la console Trusted Cloud , accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur le nom de votre projet.
Cliquez sur
Afficher les actions > Créer un ensemble de données.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
.
Créez un ensemble de données nommé
bqml_tutorial
avec l'emplacement des données défini surUS
et une description deBigQuery 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.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.
Entraîner et déployer un modèle de régression logistique
Utilisez les sections suivantes pour apprendre à entraîner et à déployer un modèle de régression logistique.
Entraîner le modèle
Entraînez un modèle de régression logistique qui prédit le type d'iris à l'aide de l'instruction BigQuery ML CREATE MODEL
. Ce job d'entraînement devrait prendre environ une minute.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.iris_model` OPTIONS (model_type="logistic_reg", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Exporter le modèle
Exportez le modèle vers un bucket Cloud Storage à l'aide de l'outil de ligne de commande bq. Pour découvrir d'autres méthodes d'exportation de modèles, consultez la section Exporter des modèles BigQuery ML. L'exécution de cette tâche d'extraction devrait prendre moins d'une minute.
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
Déploiement et mise en service en local
Vous pouvez déployer des modèles TensorFlow exportés à l'aide du conteneur Docker de TensorFlow Serving. Les étapes suivantes nécessitent l'installation de Docker.
Télécharger les fichiers de modèle exportés dans un répertoire temporaire
mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive
Créer un sous-répertoire de version
Cette étape définit un numéro de version (1 dans ce cas) pour le modèle.
mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir
Extraire l'image Docker
docker pull tensorflow/serving
Exécuter le conteneur Docker
docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &
Exécuter la prédiction
curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict
Déploiement et diffusion en ligne
Dans cette section, les prédictions sont déployées et exécutées sur le modèle exporté à l'aide de Google Cloud CLI.
Pour en savoir plus sur le déploiement d'un modèle dans Vertex AI pour les prédictions en ligne ou par lot, consultez Déployer un modèle sur un point de terminaison.
Créer une ressource de modèle
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Créer une version de modèle
1. Définissez les variables d'environnement :
MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"
2. Créez la version :
gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK
Cette étape peut prendre quelques minutes. Le message Creating version (this might take a few minutes)......
doit s'afficher.
3. (Facultatif) Récupérez des informations sur votre nouvelle version
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Le résultat doit ressembler à ce qui suit :
createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Prédiction en ligne
Pour en savoir plus sur l'exécution de prédictions en ligne sur un modèle déployé, consultez Obtenir des inférences en ligne à partir d'un modèle entraîné personnalisé.
1. Créez un fichier JSON délimité par un retour à la ligne pour les entrées, par exemple un fichier instances.json
avec le contenu ci-dessous :
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2. Configurez des variables d'environnement pour la prédiction :
INPUT_DATA_FILE="instances.json"
3. Exécutez la prédiction :
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Entraîner et déployer un modèle boosté de classification par arbre de décision
Consultez les sections suivantes pour apprendre à entraîner et à déployer un modèle de classification d'arbre de décision à boosting de gradient.
Entraîner le modèle
Entraînez un modèle de classificateur d'arbre de décision à boosting qui prédit le type d'iris à l'aide de l'instruction CREATE MODEL
. L'exécution de ce job d'entraînement doit prendre environ sept minutes.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model` OPTIONS (model_type="boosted_tree_classifier", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Exporter le modèle
Exportez le modèle vers un bucket Cloud Storage à l'aide de l'outil de ligne de commande bq. Pour découvrir d'autres méthodes d'exportation de modèles, consultez la section Exporter des modèles BigQuery ML.
bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model
Déploiement et mise en service en local
Dans les fichiers exportés, il existe un fichier main.py
pour exécution locale.
Télécharger les fichiers de modèle exportés dans un répertoire local
mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive
Extraire le prédicteur
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
Installer la bibliothèque XGBoost
Installez la bibliothèque XGBoost (version 0.82 ou ultérieure).
Exécuter la prédiction
cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'
Déploiement et diffusion en ligne
Dans cette section, les prédictions sont déployées et exécutées sur le modèle exporté à l'aide de Google Cloud CLI. Pour en savoir plus, consultez Obtenir des inférences en ligne à partir d'un modèle entraîné personnalisé.
Pour en savoir plus sur le déploiement d'un modèle sur Vertex AI pour les prédictions en ligne ou par lot à l'aide de routines personnalisées, consultez Déployer un modèle sur un point de terminaison.
Créer une ressource de modèle
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Créer une version de modèle
1. Définissez les variables d'environnement :
MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"
2. Créez la version :
gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15
Cette étape peut prendre quelques minutes. Le message Creating version (this might take a few minutes)......
doit s'afficher.
3. (Facultatif) Récupérez des informations sur votre nouvelle version
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Le résultat doit ressembler à ce qui suit :
createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Prédiction en ligne
Pour en savoir plus sur l'exécution de prédictions en ligne sur un modèle déployé, consultez Obtenir des inférences en ligne à partir d'un modèle entraîné personnalisé.
1. Créez un fichier JSON délimité par un retour à la ligne pour les entrées, par exemple un fichier instances.json
avec le contenu ci-dessous :
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2. Configurez des variables d'environnement pour la prédiction.
INPUT_DATA_FILE="instances.json"
3. Exécutez la prédiction :
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Entraîner et déployer un modèle de classification AutoML
Consultez les sections suivantes pour découvrir comment entraîner et déployer un modèle de classification AutoML.
Entraîner le modèle
Entraînez un modèle de classificateur AutoML qui prédit le type d'iris à l'aide de l'instruction CREATE MODEL
. Les modèles AutoML ont besoin d'au moins 1 000 lignes de données d'entrée. Comme ml_datasets.iris
ne comporte que 150 lignes, nous dupliquons les données 10 fois. L'exécution de cette tâche d'entraînement doit prendre environ deux heures.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.automl_iris_model` OPTIONS (model_type="automl_classifier", budget_hours=1, input_label_cols=["species"]) AS SELECT * EXCEPT(multiplier) FROM `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'
Exporter le modèle
Exportez le modèle vers un bucket Cloud Storage à l'aide de l'outil de ligne de commande bq. Pour découvrir d'autres méthodes d'exportation de modèles, consultez la section Exporter des modèles BigQuery ML.
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
Déploiement et mise en service en local
Pour en savoir plus sur la création de conteneurs AutoML, consultez la page Exporter des modèles. Les étapes suivantes nécessitent l'installation de Docker.
Copier les fichiers de modèle exportés dans un répertoire local
mkdir automl_serving_dir
gcloud storage cp gs://some/gcs/path/automl_iris_model/* automl_serving_dir/ --recursive
Extraire l'image Docker AutoML
docker pull gcr.io/cloud-automl-tables-public/model_server
Démarrer le conteneur Docker
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
Exécuter la prédiction
1. Créez un fichier JSON délimité par un retour à la ligne pour les entrées, par exemple un fichier input.json
avec le contenu ci-dessous :
{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}
2. Effectuez l'appel de prédiction :
curl -X POST --data @input.json http://localhost:8080/predict
Déploiement et mise en service en ligne
La prédiction en ligne pour les modèles de régresseur et de classificateur AutoML n'est pas compatible avec Vertex AI.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
- Supprimez le projet que vous avez créé.
- Vous pouvez également conserver le projet, et supprimer l'ensemble de données et le bucket Cloud Storage.
Arrêter le conteneur Docker
1. Répertoriez tous les conteneurs Docker en cours d'exécution.
docker ps
2. Arrêtez le conteneur portant l'ID de conteneur approprié dans la liste des conteneurs.
docker stop container_id
Supprimer les ressources Vertex AI
1. Supprimez la version du modèle.
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2. Supprimez le modèle.
gcloud ai-platform models delete $MODEL_NAME
Supprimer l'ensemble de données
Si vous supprimez votre projet, tous les ensembles de données et toutes les tables qui lui sont associés sont également supprimés. Si vous préférez réutiliser le projet, vous pouvez supprimer l'ensemble de données que vous avez créé dans ce tutoriel :
Si nécessaire, ouvrez la page BigQuery dans la consoleTrusted Cloud .
Dans le panneau de navigation, cliquez sur l'ensemble de données bqml_tutorial que vous avez créé.
Cliquez sur Delete dataset (Supprimer l'ensemble de données) dans la partie droite de la fenêtre. Cette action supprime l'ensemble de données, la table et toutes les données.
Dans la boîte de dialogue Supprimer l'ensemble de données, confirmez la commande de suppression en saisissant le nom de votre ensemble de données (
bqml_tutorial
), puis cliquez sur Supprimer.
Supprimer votre bucket Cloud Storage
La suppression de votre projet entraîne celle de tous les buckets Cloud Storage du projet. Si vous préférez réutiliser le projet, vous pouvez supprimer le bucket que vous avez créé dans ce tutoriel.
- Dans la console Trusted Cloud , accédez à la page Buckets de Cloud Storage.
Cochez la case correspondant au bucket que vous souhaitez supprimer.
Cliquez sur Supprimer.
Dans la fenêtre qui apparaît en superposition, cliquez sur Supprimer pour confirmer que vous souhaitez supprimer le bucket et son contenu.
Supprimer votre projet
Pour supprimer le projet :
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étapes suivantes
- Pour obtenir plus d'informations sur BigQuery ML, consultez la page Présentation de BigQuery ML.
- Pour plus d'informations sur l'exportation de modèles, consultez la page Exporter des modèles.
- Pour plus d'informations sur la création de modèles, consultez la page sur la syntaxe de
CREATE MODEL
.