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 score de film à l'aide de Vertex AI AutoML 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é dans Vertex AI. La liste des services se compose de deux sections:

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

Création du modèle de ML:

  1. Source des données 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 des points de terminaison

Déclencheur pour effectuer des prédictions à l'aide de l'API de ML:

  1. Java Cloud Functions 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'interface utilisateur, puis renvoie le SCORE de film prédit

Voici une vue d'ensemble de l'architecture de l'application:

5ae50607c0f2db20.png

L'application de l'architecture ci-dessus n'est pas abordée dans cet atelier de programmation. Toutefois, si vous souhaitez également développer l'application cliente, veuillez consulter le blog.

Explorons 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 AutoML Vertex AI (création et déploiement)
  • Déclencheur Cloud Functions Java 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'interface utilisateur 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 qui s'exécute dans Google Cloud et qui est préchargé 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 dans le domaine, en plus de la technologie, pour préparer un ensemble de données optimal et le préparer pour votre projet de ML. Pour les besoins de 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 un ensemble de tables. Toutes les tables d'un ensemble de données sont stockées dans le 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, créez un ensemble de données intitulé "movies" à l'aide de la commande bq mk.
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. Vérifiez que le fichier de données (.csv) est à portée de main. 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 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. Effectuez une requête de l'une des trois manières suivantes:

Nous pouvons interagir avec BigQuery de trois manières, que nous allons tester en deux temps: a. Interface utilisateur Web de 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 Web SQL pour exécuter des requêtes. L'espace de travail SQL se présente comme suit:

109a0b2c7155e9b3.png

Avec 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 exécuter AutoML à partir de BigQuery, enregistrer le modèle auprès de Vertex AI et exposer le point de terminaison. Reportez-vous à la documentation sur 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 TABULAIRE et "Régression / Classification". puis cliquez sur Créer:

4104c75c34cbd2d9.png

Sélectionnez une 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 le chemin d'accès BigQuery. Cliquez sur "Continuer".

Rappel:L'instance BigQuery et les ensembles de données Vertex AI doivent avoir 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, n'oubliez pas de cliquer sur la case d'option dans la liste de navigation pour passer aux étapes ci-dessous. Si vous cliquez accidentellement sur le nom de la table/vue, vous êtes redirigé vers Dataplex. Il vous suffit de revenir à Vertex AI si cela vous arrive.

Entraîner le modèle

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

bf095263d57106de.png

  1. Laissez l'objectif "Classification", sélectionnez l'option "AutoML" sur la première page, puis cliquez sur "Continuer" : e50597bc3f29894c.png
  2. Attribuez un nom à 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 la case "Exporter l'ensemble de données de test vers BigQuery" qui permet d'afficher facilement et efficacement l'ensemble de test ainsi que 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 avez la possibilité de sélectionner les options d'entraînement avancées dont vous avez besoin et les heures pendant lesquelles vous souhaitez que le modèle soit entraîné. Sachez que vous pouvez être attentif à la tarification avant d'augmenter le nombre de nœud-heures que vous souhaitez utiliser pour l'entraînement.

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

e72b004a17849bd.png

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

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

  1. Affichez et évaluez les résultats de l'entraînement 4767b4bbd7cf93fa.png
  2. Déployer et tester le modèle avec le point de terminaison de votre 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 à cette section, veillez à prendre note de l'ID du point de terminaison du modèle déployé, de son emplacement et d'autres détails dans la section dédiée aux points de terminaison Vertex AI.

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

Vous vous souvenez que nous disposons du point de terminaison et des autres détails de l'étape de déploiement du ML ? Nous allons l'utiliser ici et, comme nous utilisons des fonctions Cloud Java, nous allons utiliser le fichier pom.xml pour gérer les dépendances. Nous utilisons la bibliothèque google-cloud-aiplatform pour utiliser 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, tels que l'environnement, le nom de la fonction, la région, le déclencheur (dans ce cas, HTTPS), l'authentification de votre choix, puis activez l'option "Exiger le protocole HTTPS". puis cliquez sur "Suivant/Enregistrer".

a68272022df062f2.png

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

13df616369ca5951.png

  1. Copiez les fichiers java et pom.xml du dépôt et collez-les dans l'éditeur intégré. Si vous utilisez votre éditeur local (recommandé), clonez la source à partir du 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, mais sachez qu'il est recommandé d'utiliser Secret Manager pour stocker les identifiants.
  3. Pour le champ d'application de cet atelier de programmation, mettez en commentaire les parties MongoDB de la classe .java dans le code source copié.

Vous pouvez maintenant déployer la fonction une fois que toutes les modifications sont terminées. 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 le score 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 score de film dans Vertex AI AutoML et vous l'avez déclenché à partir de Cloud Functions.