Prédiction des notes de films avec Vertex AI AutoML

1. Introduction

Dans cet atelier de programmation, nous allons créer un modèle de prédiction de notes de films à l'aide de Vertex AI AutoML et déclencher le point de terminaison du modèle déployé à partir de fonctions Cloud Java. Le modèle est entraîné avec des données stockées dans BigQuery et enregistrées dans Vertex AI. La liste des services peut être divisée en deux sections :

  1. Création et déploiement de modèles de ML
  2. Déclencheur pour effectuer des prédictions à l'aide de l'API ML

Création de modèles de ML :

  1. Données provenant d'un fichier CSV vers BigQuery
  2. Données BigQuery intégrées à Vertex AI pour la création de modèles AutoML
  3. Modèle déployé dans Vertex AI Model Registry pour générer l'API de point de terminaison

Déclencheur de prédiction à l'aide de l'API ML :

  1. Fonctions Cloud Java pour déclencher l'appel du point de terminaison du modèle AutoML déployé qui prend en compte les détails du film en tant que requête de l'UI et renvoie le SCORE de film prédit

Vous trouverez ci-dessous une présentation générale de l'architecture de l'application :

5ae50607c0f2db20.png

L'application de l'architecture ci-dessus ne fait pas partie de cet atelier de programmation. Toutefois, si vous souhaitez également développer l'application cliente, veuillez consulter le blog.

Passons aux étapes d'implémentation.

Ce que vous allez faire

Vous allez créer un

  • un ensemble de données BigQuery qui contiendra les composants de table et de modèle ;
  • Modèle Vertex AI AutoML (créer et déployer)
  • Déclencheur Java Cloud Functions pour effectuer des prédictions à l'aide de l'API ML

2. Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée

Voici les conditions préalables :

Créer votre projet

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Accédez à BigQuery pour activer l'API. Vous pouvez également ouvrir l'UI Web de BigQuery directement en saisissant l'URL suivante dans votre navigateur : https://console.cloud.google.com/bigquery.

Activer Cloud Shell

  1. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud et fourni avec bq : dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite : 6757b2fb50ddcc2d.png.
  2. Une fois connecté à Cloud Shell, vous êtes en principe authentifié, et le projet est déjà défini avec votre ID de projet. Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud reconnaît votre projet
gcloud config list project
  1. Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <PROJECT_ID>

Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.

3. Préparer des données d'entraînement

Il s'agit d'une étape majeure dans tous les projets, produits et applications liés aux données. Elle nécessite une grande expertise du domaine en plus de la technologie pour préparer un ensemble de données optimal et le rendre prêt pour votre projet de ML. Pour cet atelier de programmation, nous allons partir du principe que les données sont déjà préparées et utiliser ce fichier de données déjà traité.

4. Créer et charger l'ensemble de données

Un ensemble de données BigQuery est une collection de tables. Toutes les tables d'un ensemble de données sont stockées au même emplacement. Vous pouvez également associer des contrôles d'accès personnalisés pour limiter l'accès à un ensemble de données et à ses tables.

  1. Dans Cloud Shell, utilisez la commande bq mk pour créer un ensemble de données appelé "movies".
bq mk --location=<<LOCATION>> movies

Définissez l'emplacement sur une région (asia-south1). N'oubliez pas de la définir également comme région pour l'étape VERTEX AI (les deux instances doivent se trouver dans la même région).

  1. Assurez-vous que le fichier de données (.csv) est prêt. Exécutez les commandes suivantes dans Cloud Shell pour cloner le dépôt et accéder au projet :
git clone <<repository link>>

cd movie-score
  1. Utilisez la commande bq load pour charger votre fichier CSV dans une table BigQuery (notez que vous pouvez également l'importer directement depuis l'interface utilisateur BigQuery) :
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. Effectuez une requête de l'une des trois manières suivantes :

Nous pouvons interagir avec BigQuery de trois manières. Nous allons en essayer deux : UI Web BigQuery b. La commande bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

J'ai utilisé l'espace de travail BigQuery SQL Web pour exécuter des requêtes. Voici à quoi ressemble l'espace de travail SQL :

109a0b2c7155e9b3.png

À l'aide de la commande bq :

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. Utiliser des données BigQuery dans Vertex AI AutoML

Utilisez vos données BigQuery pour créer directement un modèle AutoML avec Vertex AI. N'oubliez pas que nous pouvons également effectuer AutoML à partir de BigQuery, enregistrer le modèle avec Vertex AI et exposer le point de terminaison. Consultez la documentation BigQuery AutoML. Dans cet exemple, nous allons toutefois utiliser Vertex AI AutoML pour créer notre modèle.

Créer un ensemble de données Vertex AI

Accédez à Vertex AI depuis la console Google Cloud, activez l'API Vertex AI si ce n'est pas déjà fait, développez les données et sélectionnez "Ensembles de données", cliquez sur "Créer un ensemble de données", sélectionnez le type de données TABULAIRES et l'option "Régression / Classification", puis cliquez sur "Créer" :

4104c75c34cbd2d9.png

Sélectionner la source de données

Sur la page suivante, sélectionnez une source de données. Choisissez l'option "Sélectionner une table ou une vue à partir de BigQuery", puis sélectionnez la table BigQuery dans le champ "PARCOURIR" du chemin d'accès BigQuery. Cliquez sur "Continuer".

Rappel : L'instance BigQuery et les ensembles de données Vertex AI doivent se trouver dans la même région pour que la table BigQuery s'affiche dans Vertex AI.

b787ef18dbca4cff.png

Lorsque vous sélectionnez votre table/vue source dans la liste de navigation, n'oubliez pas de cliquer sur la case d'option pour continuer avec les étapes ci-dessous. Si vous cliquez accidentellement sur le nom de la table ou de la vue, vous serez redirigé vers Dataplex. Si cela vous arrive, il vous suffit de revenir à Vertex AI.

Entraîner le modèle

  1. Une fois l'ensemble de données créé, la page "Analyser" s'affiche et vous propose d'entraîner un nouveau modèle. Cliquez sur :

bf095263d57106de.png

  1. Laissez l'objectif défini sur "Classification", sélectionnez l'option AutoML sur la première page, puis cliquez sur "Continuer" : e50597bc3f29894c.png
  2. Nommez votre modèle, puis sélectionnez "Score" comme nom de la colonne cible dans le menu déroulant qui s'affiche, puis cliquez sur "Continuer".
  3. Notez également que vous pouvez cocher l'option "Exporter l'ensemble de données de test vers BigQuery". Vous pourrez ainsi consulter facilement l'ensemble de test avec les résultats dans la base de données, sans couche d'intégration supplémentaire ni avoir à déplacer les données entre les services.
  4. Sur la page suivante, vous pouvez sélectionner les options d'entraînement avancées dont vous avez besoin et les heures pendant lesquelles vous souhaitez que le modèle s'entraîne. Veuillez noter que vous devez tenir compte des tarifs avant d'augmenter le nombre d'heures de nœud que vous souhaitez utiliser pour l'entraînement.

Cliquez sur "Démarrer l'entraînement" pour commencer à entraîner votre nouveau modèle.

e72b004a17849bd.png

Évaluer, déployer et tester le modèle

Une fois l'entraînement terminé, vous devriez pouvoir cliquer sur "Entraînement" (sous l'en-tête "Développement de modèle" dans le menu de gauche) et voir votre entraînement listé dans la section "Pipelines d'entraînement". Cliquez dessus pour accéder à la page "Model Registry". Vous devez être en mesure d'effectuer les actions suivantes :

  1. Afficher et évaluer les résultats de l'entraînement 4767b4bbd7cf93fa.png
  2. Déployer et tester le modèle avec votre point de terminaison d'API

Une fois votre modèle déployé, un point de terminaison d'API est créé. Vous pouvez l'utiliser dans votre application pour envoyer des requêtes et obtenir les résultats de prédiction du modèle dans la réponse.

95fb4495618174f0.png

Avant de passer à la section suivante, assurez-vous de noter l'ID, l'emplacement et d'autres détails du point de terminaison du modèle déployé dans la section "Points de terminaison Vertex AI".

6. Fonction Cloud Java pour déclencher l'appel ML

Vous vous souvenez que nous avons le point de terminaison et d'autres détails de l'étape de déploiement du ML ? Nous allons l'utiliser ici. Comme nous utilisons les fonctions Cloud Java, nous allons utiliser pom.xml pour gérer les dépendances. Nous utilisons la bibliothèque google-cloud-aiplatform pour consommer l'API de point de terminaison Vertex AI AutoML.

  1. Recherchez Cloud Functions dans la console Google Cloud, puis cliquez sur "Créer une fonction".
  2. Saisissez les détails de la configuration, comme l'environnement, le nom de la fonction, la région, le déclencheur (HTTPS dans ce cas), l'authentification de votre choix, activez "Require HTTPS" (Exiger HTTPS), puis cliquez sur "Next" (Suivant) ou "Save" (Enregistrer).

a68272022df062f2.png

  1. Sur la page suivante, sélectionnez "Environnement d'exécution (Java 11)", "Code source (intégré ou importé)", puis commencez à modifier le code.

13df616369ca5951.png

  1. Copiez les fichiers java et pom.xml depuis le dépôt et collez-les dans les fichiers correspondants de l'éditeur intégré. Si vous utilisez votre éditeur local (recommandé), clonez la source depuis le dépôt.
  2. Modifiez l'ID du projet, l'ID du point de terminaison, l'emplacement et le point de terminaison dans le fichier source .java pour cet exemple. Toutefois, veuillez noter que la bonne pratique consiste à utiliser Secret Manager pour stocker les identifiants.
  3. Pour cet atelier de programmation, mettez en commentaire les parties MongoDB dans la classe .java de votre code source copié.

Une fois toutes les modifications apportées, déployez la fonction. Vous devriez voir l'URL du point de terminaison qui peut être utilisée dans votre application cliente pour envoyer des requêtes à cette fonction Cloud et recevoir une note de film en réponse.

7. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur "Supprimer".
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.

8. Félicitations

Félicitations ! Vous avez créé et déployé un modèle de prédiction de notes de films dans Vertex AI AutoML, puis déclenché le modèle déployé à partir de Cloud Functions.