Vertex AI – créer un modèle de détection de fraude à l'aide d'AutoML

1. Présentation

Dans cet atelier, vous allez utiliser Vertex AI pour entraîner et servir un modèle avec des données tabulaires. Actuellement disponible en version preview, Vertex AI est la toute dernière offre de produits d'IA de Google Cloud.

Objectifs

Vous allez apprendre à effectuer les opérations suivantes :

  • Importer un ensemble de données géré dans Vertex AI
  • Entraîner un modèle avec AutoML
  • Déployer votre modèle AutoML entraîné sur un point de terminaison, et utiliser ce point de terminaison pour obtenir des prédictions

Le coût total d'exécution de cet atelier sur Google Cloud est d'environ 22$.

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 : AutoML pour les données tabulaires, Prediction et Workbench.

Présentation des produits Vertex

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.

Tableau de bord Vertex

Étape 3 : Créez une instance Vertex AI Workbench

Dans la section Vertex AI de Cloud Console, cliquez sur Workbench :

Menu Vertex AI

Dans Notebooks gérés par l'utilisateur , cliquez sur Nouveau notebook :

Créer un notebook

Sélectionnez ensuite la dernière version du type d'instance TensorFlow Enterprise (avec LTS) sans GPU :

Instance TFE

Conservez les options par défaut, puis cliquez sur Créer.

Étape 5 : Ouvrez votre notebook

Une fois l'instance créée, sélectionnez Ouvrir JupyterLab:

Ouvrir le notebook

Les données que nous allons utiliser pour entraîner notre modèle proviennent de cet ensemble de données de détection de fraude par carte de crédit . Nous allons utiliser une version de cet ensemble de données mise à disposition du public dans BigQuery.

4. Créer un ensemble de données géré

Vertex AI vous permet de créer des ensembles de données gérés pour plusieurs types de données. Vous pouvez alors générer des statistiques pour ces ensembles de données et les utiliser pour entraîner des modèles avec AutoML ou votre propre code de modèle personnalisé.

Étape 1 : Créez un ensemble de données

Dans le menu Vertex de votre console, sélectionnez Ensembles de données :

Sélectionnez "Ensembles de données".

Dans cet atelier, nous allons créer un modèle de détection de fraude afin de déterminer si une transaction de carte de crédit donnée doit être classée comme frauduleuse.

Sur la page "Ensembles de données", attribuez un nom à l'ensemble de données, puis sélectionnez Tabulaire et Régression/Classification. Cliquez ensuite sur Créer :

Créer un ensemble de données

L'ensemble de données créé propose plusieurs options pour importer des données dans les ensembles de données gérés de Vertex :

  • Importer un fichier local à partir de votre ordinateur
  • Sélectionner des fichiers à partir de Cloud Storage
  • Sélectionner des données à partir de BigQuery

Ici, nous allons importer des données à partir d'une table BigQuery publique.

Étape 2 : Importez des données depuis BigQuery

Choisissez "Sélectionner une table ou une vue à partir de BigQuery" comme méthode d'importation, puis copiez le code suivant dans la zone Table BigQuery : bigquery-public-data.ml_datasets.ulb_fraud_detection. Sélectionnez ensuite Continuer :

Importer des données BQ

Une fois l'ensemble de données importé, vous devriez voir quelque chose comme ceci :

Données importées

Si vous le souhaitez, vous pouvez cliquer sur Générer des statistiques pour afficher des informations supplémentaires sur cet ensemble de données, mais cela n'est pas obligatoire avant de passer à l'étape suivante. Cet ensemble de données contient de véritables transactions de carte de crédit. La plupart des noms de colonne ont été masqués, c'est pourquoi ils apparaissent sous la forme V1, V2, etc.

5. Entraîner un modèle avec AutoML

Maintenant que nous avons importé un ensemble de données géré, nous sommes prêts à entraîner un modèle avec ces données. Nous allons entraîner un modèle de classification pour prédire si une transaction spécifique est frauduleuse. Avec Vertex AI, vous disposez de deux options pour entraîner des modèles :

  • AutoML : entraînez des modèles de grande qualité avec un minimum d'effort et d'expertise en ML.
  • Entraînement personnalisé : exécutez vos applications d'entraînement personnalisé dans le cloud en vous servant de l'un des conteneurs préconfigurés de Google Cloud ou de votre propre conteneur.

Dans cet atelier, nous allons utiliser AutoML pour l'entraînement.

Étape 1 : Démarrez le job d'entraînement

Sur la page des informations sur l'ensemble de données où vous vous êtes arrêté à l'étape précédente, sélectionnez Entraîner un nouveau modèle en haut à droite. Sélectionnez Classification comme objectif, laissez AutoML sélectionné pour l'entraînement du modèle, puis cliquez sur Continuer :

Étape 1 de l'entraînement du modèle

Attribuez un nom à votre modèle ou utilisez le nom par défaut. Sous Colonne cible , sélectionnez Classe. Il s'agit d'un entier indiquant si une transaction donnée était frauduleuse (0 pour non frauduleuse, 1 pour frauduleuse).

Sélectionnez ensuite Continuer :

Étape 2 de l'entraînement du modèle

À cette étape, faites défiler la page vers le bas et cliquez pour développer Options avancées. Étant donné que cet ensemble de données est fortement déséquilibré (moins de 1 % des données contiennent des transactions frauduleuses), choisissez l'option AUC PRC qui maximise la courbe de précision/rappel pour la classe minoritaire :

Options de formation avancées

Sélectionnez Continuer , puis passez à la dernière étape (Options de calcul et tarifs). Saisissez 1 comme nombre d'heures-nœud pour votre budget et laissez l'option d'arrêt prématuré activée. Entraîner votre modèle AutoML pendant une heure de calcul est généralement un bon point de départ pour comprendre s'il existe une relation entre les caractéristiques et l'étiquette que vous avez sélectionnées. À partir de là, vous pouvez modifier vos caractéristiques et entraîner votre modèle plus longtemps pour améliorer ses performances. Sélectionnez ensuite Démarrer l'entraînement.

Vous recevrez un e-mail une fois le job d'entraînement terminé. L'entraînement prendra un peu plus d'une heure pour tenir compte du temps nécessaire au lancement et à l'arrêt des ressources.

6. Explorer les métriques d'évaluation du modèle

À cette étape, nous allons examiner les performances de notre modèle.

Une fois le job d'entraînement de votre modèle terminé, accédez à l'onglet Modèles dans Vertex. Cliquez sur le modèle que vous venez d'entraîner, puis examinez l'onglet Évaluer. Vous pouvez voir que de nombreuses métriques d'évaluation sont disponibles. Nous allons nous intéresser plus particulièrement à deux de ces métriques : Matrice de confusion et Importance des caractéristiques.

Étape 1 : Comprendre la matrice de confusion

Une matrice de confusion nous indique, pour chaque classe de l'ensemble de test, le pourcentage d'exemples pour lesquels notre modèle a effectué des prédictions correctes. Dans le cas d'un ensemble de données déséquilibré comme celui que nous traitons, il s'agit d'une meilleure mesure des performances de notre modèle que la justesse globale.

Souvenez-vous que moins de 1 % des exemples de notre ensemble de données correspondent à des transactions frauduleuses. Par conséquent, si la justesse de notre modèle est de 99 %, il est fort probable que dans 99 % des cas, les prédictions pour la classe des éléments non frauduleux soient effectuées de manière aléatoire. C'est la raison pour laquelle la justesse de notre modèle constitue ici une meilleure métrique lorsque nous l'examinons pour chacune des classes.

Si vous faites défiler la page vers le bas dans l'onglet Évaluer, vous devriez voir une matrice de confusion qui ressemble à ceci (les pourcentages peuvent varier) :

Matrice de confusion

La matrice de confusion indique que notre modèle initial peut classer correctement 85 % des exemples frauduleux de notre ensemble de test. C'est un bon résultat, en particulier si l'on tient compte du fait que nos données sont très déséquilibrées. Nous pourrions ensuite essayer de poursuivre l'entraînement de notre modèle en augmentant le nombre d'heures de calcul pour voir s'il est possible d'améliorer ce résultat.

Étape 2 : Examiner l'importance des caractéristiques

Vous devriez voir sous la matrice de confusion un graphique d'importance des caractéristiques qui ressemble à ceci :

Importance des caractéristiques

Il permet d'identifier les caractéristiques qui ont généré les signaux les plus importants lorsque notre modèle a été utilisé pour effectuer les prédictions. L'importance des caractéristiques est un type d'Explainable AI, un champ qui inclut diverses méthodes permettant d'obtenir davantage d'informations sur un modèle de ML qui effectue des prédictions. Le graphique d'importance des caractéristiques que nous avons ici est obtenu au moyen d'un calcul portant sur un agrégat d'éléments comprenant toutes les prédictions effectuées par notre modèle pour notre ensemble de test. Il indique quelles sont les caractéristiques les plus importantes d'un lot d'exemples.

Ce graphique serait plus intéressant si la plupart des caractéristiques de notre ensemble de données n'étaient pas masquées. Il pourrait par exemple nous permettre de voir que le type de transaction (virement, dépôt, etc.) était le principal indicateur de fraude.

Dans un scénario réel, ces valeurs de l'importance des caractéristiques pourraient nous aider à améliorer notre modèle et renforcer notre confiance dans ses prédictions. La prochaine fois que nous entraînerons un modèle, nous pourrons choisir d'exclure les caractéristiques les moins importantes ou de combiner deux des plus importantes pour effectuer un croisement de caractéristiques, et ainsi déterminer si cela améliore les performances du modèle.

Nous examinons ici l'importance des caractéristiques au sein d'un lot, mais Vertex AI permet également de le faire pour des prédictions spécifiques. Nous verrons comment faire une fois notre modèle déployé.

7. Déployer le modèle sur un point de terminaison

Maintenant que nous disposons d'un modèle entraîné, 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éez 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 :

Déployer et tester

Attribuez un nom à votre point de terminaison, par exemple fraud_v1, laissez l'accès défini sur Standard , puis cliquez sur Continuer.

Conservez les paramètres par défaut pour la répartition du trafic et le type de machine, cliquez sur OK , puis sur Continuer.

Nous n'allons pas utiliser la surveillance du modèle pour ce point de terminaison. Vous pouvez donc laisser cette option désélectionnée et cliquer sur Déployer. Le déploiement de votre point de terminaison va prendre quelques minutes. Quand ce sera terminé, une coche verte apparaîtra à côté du nom :

Point de terminaison déployé

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 les deux.

Étape 1 : Obtenez des prédictions à partir d'un modèle dans l'interface utilisateur

Sur la page de votre modèle indiquant votre point de terminaison (où nous nous sommes arrêtés à l'étape précédente), faites défiler la page vers le bas jusqu'à la section Tester votre modèle :

Tester le modèle

Vous pouvez voir que Vertex AI a choisi des valeurs aléatoires pour les différentes caractéristiques de notre modèle permettant d'obtenir une prédiction test. N'hésitez pas à modifier ces valeurs si vous le souhaitez. Faites défiler la page vers le bas, puis sélectionnez Prédire.

Les pourcentages prédits par votre modèle pour chacune des classes s'affichent dans la section Résultat de la prédiction de la page. Par exemple, un score de confiance de 0.99 pour la classe 0 signifie que votre modèle considère que cet exemple a 99 % de chances d'être non frauduleux.

Étape 2 : Obtenez des prédictions à partir d'un modèle avec l'API Vertex AI

L'interface utilisateur est très pratique pour vérifier que votre point de terminaison déployé fonctionne comme prévu, mais vous voulez probablement obtenir des prédictions de manière dynamique via un appel d'API REST. Pour vous montrer comment obtenir des prédictions à partir d'un modèle de cette façon, nous allons utiliser l'instance Vertex Workbench que vous avez créée au début de cet atelier.

Ouvrez ensuite l'instance de notebook que vous avez créée, puis ouvrez un notebook Python 3 à partir du lanceur :

Ouvrir le notebook

Dans votre notebook, exécutez le code suivant dans une cellule pour installer le SDK Vertex :

!pip3 install google-cloud-aiplatform --upgrade --user

Ajoutez ensuite une cellule dans votre notebook pour importer le SDK et créer une référence au point de terminaison que vous venez de déployer :

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Vous devrez remplacer les deux valeurs (indiquées en majuscules) de la chaîne endpoint_name ci-dessus par votre numéro de projet et l'ID de votre point de terminaison. Le numéro de votre projet est indiqué dans le tableau de bord du projet.

Vous pouvez retrouver l'ID du point de terminaison dans la section Points de terminaison de la console :

Trouver l'ID du point de terminaison

Enfin, vous allez générer une prédiction sur votre point de terminaison en copiant et en exécutant le code ci-dessous dans une nouvelle cellule :

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Vous devriez voir une prédiction d'environ .67 pour la classe 0, ce qui signifie que le modèle considère qu'il y a 67 % de chances que cette transaction ne soit pas frauduleuse.

🎉 Félicitations ! 🎉

Vous savez désormais utiliser Vertex AI pour :

  • importer un ensemble de données géré ;
  • entraîner et évaluer un modèle sur des données tabulaires à l'aide d'AutoML ;
  • déployer le modèle sur un point de terminaison ;
  • obtenir des prédictions à partir d'un point de terminaison de modèle à l'aide du SDK de Vertex.

Pour en savoir plus sur les différentes parties 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 Workbench 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 situé 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 annulez le déploiement du modèle à partir de votre point de terminaison :

Supprimer un point de terminaison

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" :

Supprimer l'espace de stockage