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 exécuter un modèle avec des données tabulaires. Il s'agit de la toute dernière offre de produits d'IA de Google Cloud, qui est actuellement disponible en version preview.

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

Ensuite, 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

Utilisez 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 sur la détection des fraudes à la carte de crédit. Nous allons utiliser une version de cet ensemble de données rendue publique 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électionner des ensembles de données

Dans cet atelier, nous allons créer un modèle de détection des fraudes pour déterminer si une transaction par 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. Ensuite, créez l'ensemble de données:

Créer un ensemble de données

Vous disposez de plusieurs options pour importer des données dans les ensembles de données gérés de Vertex:

  • Importation d'un fichier local depuis 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 depuis 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 Continue (Continuer) :

Importer des données BigQuery

Une fois votre ensemble de données importé, le résultat doit ressembler à ce qui suit:

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. Notez toutefois que ce n'est pas obligatoire avant de passer à l'étape suivante. Cet ensemble de données contient de véritables transactions par carte de crédit. La plupart des noms de colonnes ont été masqués. C'est pourquoi ils sont appelés V1, V2, etc.

5. Entraîner un modèle avec AutoML

Une fois que vous avez importé un ensemble de données géré, nous pouvons 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 ou non. Avec Vertex AI, vous disposez de deux options pour entraîner des modèles :

  • AutoML, qui vous permet d'entraîner facilement des modèles de grande qualité, quel que soit votre niveau d'expertise en ML
  • Entraînement personnalisé: exécutez vos applications d'entraînement personnalisé dans le cloud à l'aide de l'un des conteneurs prédéfinis de Google Cloud ou de votre propre conteneur.

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

Étape 1: Lancer le job d'entraînement

Sur la page des détails de 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. Vous pouvez également utiliser le modèle par défaut. Sous Colonne cible, sélectionnez Classe. Il s'agit d'un entier indiquant si une transaction donnée est frauduleuse ou non (0 pour les transactions non frauduleuses, 1 pour les transactions frauduleuses).

Sélectionnez ensuite Continue (Continuer) :

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

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

Options d'entraînement avancées

Sélectionnez Continuer, puis passez à la dernière étape (Options de calcul et tarifs). Ici, saisissez 1 comme nombre de nœud-heures 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 à la suppression des ressources.

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

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

Une fois votre job d'entraînement de modèle terminé, accédez à l'onglet Modèles dans Vertex. Cliquez sur le modèle que vous venez d'entraîner et accédez à l'onglet Évaluation. De nombreuses métriques d'évaluation sont disponibles ici. Nous allons en nous concentrer sur deux: la matrice de confusion et l'importance des caractéristiques.

Étape 1: Comprendre la matrice de confusion

Une matrice de confusion indique le pourcentage d'exemples de chaque classe de l'ensemble de test 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.

N'oubliez pas que moins de 1% des exemples de notre ensemble de données sont des transactions frauduleuses. Par conséquent, si la justesse de notre modèle est de 99 %, il y a de fortes chances qu'il ne fasse des estimations aléatoires de la classe non frauduleuse dans 99% des cas. C'est pourquoi examiner la justesse de notre modèle pour chaque classe est ici une meilleure métrique.

Si vous faites défiler l'onglet Évaluation vers le bas, vous devriez voir une matrice de confusion semblable à celle-ci (les pourcentages exacts peuvent varier):

Matrice de confusion

La matrice de confusion montre que notre modèle initial est capable de classer correctement 85% des exemples frauduleux de notre ensemble de test. C'est plutôt bon, surtout compte tenu de l'important déséquilibre de nos ensembles de données. Ensuite, nous pourrions essayer d'entraîner notre modèle pour augmenter le nombre d'heures de calcul afin de voir si nous pouvons améliorer ces résultats (85 %).

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

Sous la matrice de confusion, vous devriez voir un graphique d'importance des caractéristiques semblable à celui-ci:

Importance des caractéristiques

Cela nous permet d'identifier les caractéristiques qui ont fourni le signal le plus important à notre modèle lors de la réalisation des prédictions. L'importance des caractéristiques est un type d'Explainable AI : un champ qui comprend différentes méthodes pour mieux comprendre un modèle de ML consiste à réaliser des prédictions. Le graphique d'importance des caractéristiques présenté ici est calculé de manière agrégée en examinant toutes les prédictions de notre modèle sur notre ensemble de test. Il nous montre 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. Nous pourrions apprendre, par exemple, que le type de transaction (virement, dépôt, etc.) était le principal indicateur de fraude.

Dans un scénario réel, ces valeurs d'importance des caractéristiques pourraient nous aider à améliorer notre modèle et à avoir davantage confiance dans ses prédictions. Nous pourrions décider de supprimer les caractéristiques les moins importantes la prochaine fois que nous entraînerons un modèle ou de combiner deux de nos caractéristiques les plus importantes en un croisement de caractéristiques pour voir si cela améliore les performances du modèle.

Nous examinons ici l'importance des caractéristiques pour un lot, mais nous pouvons également obtenir l'importance des caractéristiques pour des prédictions individuelles dans Vertex AI. Nous verrons comment procéder une fois le 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. Une ressource de modèle dans Vertex peut être associée à plusieurs points de terminaison, et vous pouvez répartir le trafic entre ces points de terminaison.

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

Déployer et tester

Attribuez un nom à votre point de terminaison, tel que fraud_v1. Laissez le paramètre "Accès" défini sur Standard, puis cliquez sur Continuer.

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

Nous n'utiliserons pas la surveillance du modèle pour ce point de terminaison. Vous pouvez donc laisser cette option non sélectionnée et cliquer 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é de celui-ci:

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

Étape 1: Obtenir des prédictions à partir du modèle dans l'interface utilisateur

Sur la page de votre modèle où apparaît votre point de terminaison (à l'endroit où nous nous sommes arrêtés à la dernière étape), faites défiler la page jusqu'à la section Tester votre modèle:

Tester le modèle

Ici, Vertex AI a choisi des valeurs aléatoires pour chacune des caractéristiques de notre modèle, que nous pouvons utiliser pour obtenir une prédiction test. Vous pouvez modifier ces valeurs si vous le souhaitez. Faites défiler la page jusqu'en bas, puis sélectionnez Prédire.

Dans la section Résultat de la prédiction, vous devriez voir le pourcentage prédit par votre modèle pour chaque classe. Par exemple, un score de confiance de 0.99 pour la classe 0 signifie que votre modèle pense que cet exemple présente 99% d'activité non frauduleuse.

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

L'interface utilisateur est un excellent moyen de s'assurer que votre point de terminaison déployé fonctionne comme prévu. Toutefois, il est probable que vous souhaitiez 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, nous allons utiliser l'instance Vertex Workbench 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:

Ouvrir le notebook

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

!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 devez remplacer les deux valeurs de la chaîne endpoint_name ci-dessus par votre numéro de projet et votre point de terminaison. Pour trouver le numéro de votre projet, accédez au tableau de bord de votre projet et obtenez sa valeur.

Vous trouverez l'ID de votre 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 autour de .67 pour la classe 0, ce qui signifie que le modèle pense 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 sur un point de terminaison du modèle à l'aide du SDK pour 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. Dans l'interface utilisateur de Workbench de votre console Cloud, sélectionnez le notebook, puis 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 et annulez le déploiement du modèle sur 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