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 note de film à l'aide d'AutoML Vertex AI et déclencher le point de terminaison du modèle déployé à partir de Java Cloud Functions. 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éclencher une prédiction à l'aide de l'API ML

Création de modèles de ML :

  1. Données provenant de fichiers CSV vers BigQuery
  2. Intégration des données BigQuery à 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éclencher une 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 reçoit les détails du film en tant que requête de l'UI et renvoie le SCORE du film prévu

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 n'entre pas dans le champ d'application de cet atelier de programmation. Toutefois, si vous souhaitez également développer l'application cliente, consultez le blog.

Voyons les é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éation et déploiement)
  • 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 importante 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 supposer 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 de données. 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 nommé "movies".
bq mk --location=<<LOCATION>> movies

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

  1. Assurez-vous d'avoir le fichier de données (.csv) 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 de 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. Vous pouvez effectuer une requête de l'une des trois manières suivantes:

Nous pouvons interagir avec BigQuery de trois manières, dont deux que nous allons tester: a. L'UI Web de BigQuery La commande bq c. API

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

J'ai utilisé l'espace de travail SQL BigQuery Web pour exécuter des requêtes. L'espace de travail SQL se présente comme suit:

109a0b2c7155e9b3.png

En exécutant 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 vous pouvez également effectuer l'AutoML à partir de BigQuery, enregistrer le modèle dans Vertex AI et exposer le point de terminaison. Consultez la documentation de 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 "Données", puis sélectionnez "Ensembles de données". Cliquez sur "Créer un ensemble de données", sélectionnez le type de données TABULAR et l'option "Régression / Classification", puis cliquez sur "Créer" :

4104c75c34cbd2d9.png

Sélectionner une source de données

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

Rappelez-vous: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/vue, vous êtes redirigé vers Dataplex. Si cela vous arrive, il vous suffit de revenir sur Vertex AI.

Entraîner le modèle

  1. Une fois l'ensemble de données créé, la page "Analyser" s'affiche, avec l'option permettant d'entraîner un nouveau modèle. Cliquez sur celle-ci:

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" dans le menu déroulant qui s'affiche comme nom de la colonne cible, puis cliquez sur "Continuer".
  3. Notez également que vous pouvez cocher l'option "Exporter l'ensemble de données de test vers BigQuery". Vous pouvez ainsi afficher 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 des 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 auxquelles vous souhaitez entraîner le modèle. Veuillez noter que vous devrez peut-être 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 "Registre de modèles". 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 quitter cette section, notez l'ID, l'emplacement et d'autres informations du point de terminaison du modèle déployé dans la section "Point de terminaison Vertex AI".

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

Vous vous souvenez que nous disposons du point de terminaison et d'autres informations de l'étape de déploiement du ML ? Nous allons l'utiliser ici. Étant donné que nous utilisons Java Cloud Functions, 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 AutoML Vertex AI.

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

a68272022df062f2.png

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

13df616369ca5951.png

  1. Copiez les fichiers java et pom.xml du dépôt, puis collez-les dans les fichiers respectifs dans l'éditeur intégré. Si vous utilisez votre éditeur local (recommandé), clonez la source à partir du dépôt.
  2. Pour cet exemple, remplacez l'ID du projet, l'ID du point de terminaison, l'emplacement et le point de terminaison dans le fichier source .java. Notez toutefois qu'il est recommandé d'utiliser Secret Manager pour stocker les identifiants.
  3. Pour les besoins de cet atelier de programmation, commentez les parties MongoDB dans la classe .java de votre code source copié.

Déployez la fonction une fois toutes les modifications effectuées. Vous devriez voir l'URL du point de terminaison que vous pouvez utiliser dans votre application cliente pour envoyer des requêtes à cette fonction Cloud et recevoir la note du 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 la note d'un film dans Vertex AI AutoML, puis déclenché le modèle déployé à partir de Cloud Functions.