1. Présentation
Dans cet atelier, vous allez entraîner un modèle à l'aide de BigQuery Machine Learning, puis l'exporter et le déployer vers Vertex AI. Il s'agit de la toute dernière offre de produits d'IA de Google Cloud.
Objectifs
Vous allez apprendre à effectuer les opérations suivantes :
- Entraîner un modèle avec BigQuery Machine Learning (BQML)
- Exporter votre modèle BQML vers Cloud Storage
- Déployer votre BigQuery ML entraîné sur Vertex AI
- Obtenir des prédictions à partir de votre modèle déployé
Le coût total d'exécution de cet atelier sur Google Cloud est d'environ 2 $.
2. Présentation de Vertex AI
Cet atelier utilise la toute dernière offre de produits d'IA de Google Cloud. Vertex AI simplifie l'expérience de développement en intégrant toutes les offres de ML de Google Cloud. Auparavant, les modèles entraînés avec AutoML et les modèles personnalisés étaient accessibles depuis des services distincts. La nouvelle offre regroupe ces deux types de modèles mais aussi d'autres nouveaux produits en une seule API. Vous pouvez également migrer des projets existants vers Vertex AI. Pour envoyer un commentaire, consultez la page d'assistance.
Vertex AI comprend de nombreux produits différents qui permettent de gérer les workflows de ML de bout en bout. Cet atelier se concentre sur les produits mis en évidence ci-dessous: Prediction et Notebooks.
3. Configurer votre environnement
Pour suivre cet atelier de programmation, vous aurez besoin d'un projet Google Cloud Platform dans lequel la facturation est activée. Pour créer un projet, suivez ces instructions.
Étape 1 : Activez l'API Compute Engine
Accédez à Compute Engine et cliquez sur Activer si ce n'est pas déjà fait. Vous en aurez besoin pour créer votre instance de notebook.
Étape 2: Activez l'API Vertex AI
Accédez à la section Vertex AI de Cloud Console, puis cliquez sur Activer l'API Vertex AI.
Étape 3: Créez une instance Notebooks
Nous utiliserons Notebooks pour obtenir des prédictions après avoir déployé notre modèle. Dans la section Vertex AI de la console Cloud, cliquez sur "Notebooks" :
Ensuite, sélectionnez Nouvelle instance. Sélectionnez ensuite le type d'instance TensorFlow Enterprise 2.3 sans GPU:
Utilisez les options par défaut, puis cliquez sur Créer. Une fois l'instance créée, sélectionnez Ouvrir JupyterLab:
4. Entraîner un modèle BigQuery ML.
BigQuery ML vous permet d'entraîner des modèles de machine learning personnalisés à l'aide de données stockées dans BigQuery. Vous pouvez entraîner des modèles et obtenir des prédictions en langage SQL. Dans cet atelier, nous allons utiliser un ensemble de données accessible publiquement dans BigQuery pour prédire la probabilité de défaut d'un paiement par carte de crédit.
Étape 1: Créez un ensemble de données BigQuery dans votre projet
Pour entraîner un modèle dans BigQuery ML, vous devez créer un ensemble de données dans votre projet afin de stocker ce modèle. Cliquez sur votre projet dans la barre de menu de gauche, puis sélectionnez Créer un ensemble de données:
Dans le champ ID de l'ensemble de données, saisissez cc_default
. Laissez les autres champs tels quels et cliquez sur Créer l'ensemble de données.
Étape 2: Exécuter une requête CREATE MODEL
Dans l'éditeur de requête BigQuery, exécutez la requête CREATE MODEL
suivante pour créer et entraîner un modèle BigQuery ML sur l'ensemble de données public que nous allons utiliser. Veillez à remplacer your-project
par le nom de votre projet Cloud:
CREATE OR REPLACE MODEL
`your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
input_label_cols=['default_payment_next_month']) AS
SELECT
limit_balance,
sex,
education_level,
marital_status,
age,
pay_0,
pay_2,
pay_3,
pay_4,
pay_5,
pay_6,
bill_amt_1,
bill_amt_2,
bill_amt_3,
bill_amt_4,
bill_amt_5,
bill_amt_6,
pay_amt_1,
pay_amt_2,
pay_amt_3,
pay_amt_4,
pay_amt_5,
pay_amt_6,
default_payment_next_month
FROM
`bigquery-public-data.ml_datasets.credit_card_default`
Cette opération entraîne la création d'un modèle de régression logistique qui génère une valeur numérique comprise entre 0 et 1, indiquant que l'exécution prend environ une minute. Une fois l'opération terminée, le modèle s'affiche sous votre ensemble de données:
Vous pouvez cliquer sur le modèle pour consulter ses métriques d'entraînement et d'évaluation.
5. Exporter votre modèle BigQuery ML
Avec un modèle BQML entraîné, nous pouvons utiliser la syntaxe SQL BQML pour obtenir des prédictions ou exporter le modèle pour le déployer ailleurs. Ici, nous allons exporter notre modèle afin de pouvoir le déployer sur Vertex AI pour l'inférer de manière évolutive et obtenir des prédictions.
Étape 1: Créez un bucket Cloud Storage pour votre modèle
Dans les détails du modèle, cliquez sur Export Model (Exporter le modèle) :
Vous êtes alors invité à indiquer l'emplacement Google Cloud Storage (GCS) dans lequel vous souhaitez exporter les éléments de votre modèle. Si vous n'avez pas encore de bucket GCS, ne vous inquiétez pas. Nous sommes sur le point d’en créer une. Tout d'abord, cliquez sur Parcourir:
Cliquez ensuite sur l'icône + pour créer un bucket:
Attribuez-lui un nom unique (les noms des buckets de stockage doivent être uniques). Cliquez sur Continuer. À l'étape suivante, sous Type d'emplacement, sélectionnez Région et choisissez l'une des régions dans le menu déroulant:
Utilisez la classe de stockage par défaut, et sous contrôle des accès, assurez-vous que l'option Uniforme est sélectionnée:
Cliquez sur "Continuer" et utilisez les valeurs par défaut pour les autres options. Ensuite, cliquez sur Créer.
Étape 2: Exporter le modèle BQML
Une fois le bucket créé, saisissez model-assets
(ou tout autre élément de votre choix) dans le champ Nom, puis cliquez sur Sélectionner:
Cliquez ensuite sur Exporter. Un job est alors créé dans BigQuery pour exporter votre modèle au format SavedModel de TensorFlow vers le nouveau bucket GCS que vous avez spécifié. L'exportation prend environ une minute.
Pendant l'exportation de votre modèle, accédez à la section Stockage de la console Cloud. Une fois votre job terminé, les ressources de votre modèle doivent être exportées vers le bucket que vous venez de créer dans un sous-répertoire model-assets
:
6. Importer le modèle dans Vertex AI
Au cours de cette étape, nous allons faire référence à l'emplacement de stockage GCS dans lequel nous venons d'exporter les éléments du modèle pour le créer et l'importer dans Vertex AI.
Étape 1: Importez le modèle
Dans la console Cloud, accédez à la section Modèles de Vertex AI. Ensuite, sélectionnez Import (Importer) :
Lors de la première étape, nommez votre modèle predict_default
. Sélectionnez la région dans laquelle vous avez créé votre bucket (us-central1, europe-west4 ou asia-east1). Cliquez ensuite sur Continuer. Dans Paramètres du modèle, conservez l'option "Importer les artefacts du modèle dans un nouveau conteneur prédéfini". sélectionnée.
Dans le menu déroulant Framework de modèle, sélectionnez TensorFlow. Sélectionnez ensuite 2.3 comme version du framework.
Dans le champ "Emplacement de l'artefact de modèle", cliquez sur Parcourir, sélectionnez le bucket GCS que vous venez de créer, puis cliquez sur le répertoire model-assets:
Cliquez ensuite sur Importer. L'importation du modèle prend quelques minutes. Une fois le modèle créé, il apparaît dans la section "Modèles" de la console Cloud:
7. Déployer le modèle sur un point de terminaison
Maintenant que nous avons importé notre modèle, l'étape suivante consiste à créer un point de terminaison dans Vertex. Une ressource de modèle dans Vertex peut être associée à plusieurs points de terminaison, et vous pouvez répartir le trafic entre ces points de terminaison.
Étape 1: Créer un point de terminaison
Sur la page de votre modèle, accédez à l'onglet Déployer et tester, puis cliquez sur Déployer sur un point de terminaison:
Attribuez un nom à votre point de terminaison, tel que default_pred_v1
, laissez les paramètres de répartition du trafic tels quels, puis sélectionnez un type de machine pour le déploiement de votre modèle. Nous avons utilisé un n1-highcpu-2
ici, mais vous pouvez choisir le type de machine que vous souhaitez.
Sélectionnez ensuite "OK", puis cliquez sur Continuer. Laissez les paramètres d'emplacement sélectionnés tels quels, puis cliquez sur Déployer. Le déploiement de votre point de terminaison va prendre quelques minutes. Une fois l'opération terminée, une coche verte s'affiche à côté de celui-ci:
Le filet se resserre ! Vous pouvez maintenant obtenir des prédictions à partir de votre modèle déployé.
8. Obtenir des prédictions à partir du modèle déployé
Lorsque vous souhaitez obtenir des prédictions à partir d'un modèle, vous avez le choix entre les options suivantes :
- Interface utilisateur de Vertex AI
- API Vertex AI
Nous allons voir comment obtenir des prédictions via l'API
Étape 1: Obtenir des prédictions à partir d'un modèle avec l'API Vertex AI
Pour vous montrer comment obtenir des prédictions à partir d'un modèle, nous allons utiliser l'instance de notebook Vertex que vous avez créée au début de cet atelier.
Ensuite, ouvrez l'instance de notebook que vous avez créée, puis ouvrez un notebook Python 3 à partir du lanceur:
Dans votre notebook, exécutez le code suivant dans une cellule pour écrire un exemple de test dans un fichier JSON nommé default-pred.json
. Nous allons envoyer l'exemple suivant à notre modèle pour effectuer une prédiction:
%%writefile default-pred.json
{
"instances": [
{"age": 39,
"bill_amt_1": 47174,
"bill_amt_2": 47974,
"bill_amt_3": 48630,
"bill_amt_4": 50803,
"bill_amt_5": 30789,
"bill_amt_6": 15874,
"education_level": "1",
"limit_balance": 50000,
"marital_status": "2",
"pay_0": 0,
"pay_2":0,
"pay_3": 0,
"pay_4": 0,
"pay_5": "0",
"pay_6": "0",
"pay_amt_1": 1800,
"pay_amt_2": 2000,
"pay_amt_3": 3000,
"pay_amt_4": 2000,
"pay_amt_5": 2000,
"pay_amt_6": 2000,
"sex": "1"}
]
}
Ensuite, dans l'interface utilisateur de Vertex, cliquez sur Sample Request (Exemple de requête) pour le point de terminaison que vous venez de déployer:
Copiez dans votre notebook le code obtenu à l'étape 4 de l'onglet REST et exécutez la cellule suivante:
Ajoutez ensuite une variable pour la région dans laquelle vous avez créé votre bucket et votre modèle. Remplacez your-region
dans la chaîne ci-dessous:
REGION="your-region" # either us-central1, europe-west4, or asia-east1
Enfin, envoyez une requête de prédiction à votre point de terminaison avec curl
en copiant le code suivant dans votre notebook:
!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"
Le résultat doit ressembler à ce qui suit (les valeurs de prédiction exactes peuvent légèrement varier):
{
"predictions": [
{
"default_payment_next_month_values": [
"1",
"0"
],
"default_payment_next_month_probs": [
0.180815295299778,
0.819184704700222
],
"predicted_default_payment_next_month": [
"0"
]
}
],
"deployedModelId": "your-model-id"
}
Les valeurs de default_payment_next_month_probs
indiquent la probabilité pour chaque classe. Pour cet exemple, notre modèle prédit qu'il y a 81% de chances que cette personne ne soit pas en défaut de paiement lors de son prochain paiement. La valeur .819
correspond à la classe 0
(pas celle par défaut).
🎉 Félicitations ! 🎉
Vous avez appris à effectuer les tâches suivantes :
- Entraîner un modèle dans BQML
- Exporter votre modèle BQML vers Cloud Storage
- Importer le modèle BQML dans Vertex AI pour la prédiction
- Créer un modèle Vertex AI et le déployer sur un point de terminaison
- Obtenir des prédictions sur votre point de terminaison déployé via des notebooks Vertex et curl
Pour en savoir plus sur les différents composants de Vertex AI, consultez la documentation.
9. Nettoyage
Si vous souhaitez continuer à utiliser le notebook que vous avez créé dans cet atelier, nous vous recommandons de le désactiver quand vous ne vous en servez pas. À partir de l'interface utilisateur de Notebooks dans Cloud Console, sélectionnez le notebook, puis cliquez sur Arrêter:
Si vous souhaitez supprimer le notebook définitivement, il vous suffit de cliquer sur le bouton "Supprimer" en haut à droite.
Pour supprimer le point de terminaison que vous avez déployé, accédez à la section Points de terminaison de votre console Vertex AI et cliquez sur l'icône de suppression:
Pour supprimer le bucket de stockage, utilisez le menu de navigation de la console Cloud pour accéder à Stockage, sélectionnez votre bucket puis cliquez sur "Supprimer" :