1. Présentation
Dans cet atelier, vous allez entraîner un modèle avec BigQuery Machine Learning, puis l'exporter et le déployer sur 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 modèle BQML 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. Configurez 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 allons utiliser 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 des données stockées dans BigQuery. Vous pouvez entraîner des modèles et obtenir des prédictions à partir de ceux-ci, le tout en SQL. Pour cet atelier, nous allons utiliser un ensemble de données public dans BigQuery afin de prédire la probabilité de défaut de paiement d'une carte de crédit.
Étape 1 : Créer 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 pour 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 valeurs par défaut des autres champs et cliquez sur Créer un 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`
Cela créera un modèle de régression logistique qui génère une valeur numérique comprise entre 0 et 1. 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. Nous allons maintenant exporter notre modèle afin de pouvoir le déployer sur Vertex AI pour le diffuser 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 Exporter le modèle :

Vous serez alors invité à saisir l'emplacement Google Cloud Storage (GCS) où vous souhaitez exporter les composants de votre modèle. Si vous n'avez pas encore de bucket GCS, ne vous inquiétez pas. Nous allons en créer un. Commencez par cliquer 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, puis choisissez l'une des régions dans le menu déroulant :

Utilisez la classe de stockage par défaut et assurez-vous que l'option Uniforme est sélectionnée sous "Contrôle des accès" :

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 votre bucket créé, saisissez model-assets (ou le nom de votre choix) dans le champ Nom, puis cliquez sur Sélectionner :

Cliquez ensuite sur Exporter. Cela créera un job dans BigQuery pour exporter votre modèle au format SavedModel de TensorFlow vers le bucket GCS que vous venez de créer. L'exportation prendra 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
Dans cette étape, nous allons faire référence à l'emplacement de stockage GCS où nous venons d'exporter les ressources de notre modèle pour créer et importer le modèle dans Vertex AI.
Étape 1 : Importer le modèle
Dans la console Cloud, accédez à la section Modèles de Vertex AI. Sélectionnez ensuite Importer :

À la première étape, donnez à votre modèle le nom 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 des artefacts de 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, puis sur le bucket GCS que vous venez de créer, et enfin sur le répertoire model-assets :

Cliquez ensuite sur Importer. L'importation de votre modèle prendra quelques minutes. Une fois créé, il s'affiche dans la section des 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. Dans Vertex, une ressource de modèle peut être associée à plusieurs points de terminaison, qui permettent alors de répartir le trafic.
É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, par exemple default_pred_v1, conservez les paramètres de répartition du trafic et 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 de votre choix.
Sélectionnez ensuite "OK", puis cliquez sur Continuer. Conservez les paramètres d'emplacement et 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é :

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 vous montrer 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 de cette façon, 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 enverrons cet exemple à notre modèle pour obtenir 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 Vertex, cliquez sur Exemple de requête pour le point de terminaison que vous venez de déployer :

Copiez le code de l'étape 4 de l'onglet "REST" dans votre notebook, puis exécutez la cellule :

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 demande 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 obtenu devrait ressembler à ce qui suit (les valeurs de prédiction exactes peuvent varier légèrement) :
{
"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é de chaque classe. Dans cet exemple, notre modèle prédit qu'il y a 81 % de chances que cette personne ne manque pas son prochain paiement. La valeur .819 correspond à la classe 0 (et non à la classe 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 Vertex Notebooks 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 la console Cloud, sélectionnez le notebook et 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, puis 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" :
