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 déployer un modèle avec des données tabulaires. Il s'agit de la toute dernière offre de produits d'IA de Google Cloud, 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

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 utilisations frauduleuses de cartes 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 la console, sélectionnez Ensembles de données:

Sélectionner "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", donnez un nom à l'ensemble de données, puis sélectionnez Tabulaire et Régression/Classification. Créez ensuite 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:

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

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 ce qui suit dans le champ Table BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Sélectionnez ensuite Continue (Continuer) :

Importer des données BQ

Après avoir importé votre ensemble de données, l'écran devrait ressembler à 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. Notez toutefois que ce 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 colonnes ont été masqués. C'est pourquoi ils sont appelés V1, V2, etc.

5. Entraîner un modèle avec AutoML

Maintenant que vous avez importé un ensemble de données géré, vous êtes prêt à 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é: vous permet d'exécuter 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 la tâche d'entraînement

Sur la page d'informations sur l'ensemble de données où vous vous étiez 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 Catégorie. 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

À 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 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 lorsque votre tâche d'entraînement sera terminée. L'entraînement prendra un peu plus d'une heure si l'on tient compte du temps de lancement et de suppression des ressources.

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

À cette étape, nous allons voir 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 et accédez à l'onglet Évaluation. De nombreuses métriques d'évaluation sont disponibles. Nous allons nous intéresser à deux d'entre elles: la matrice de confusion et l'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 utilisons, cette métrique est plus pertinente que la justesse globale pour évaluer les performances de notre modèle.

N'oubliez pas 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 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 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 les données sont très déséquilibrées. Nous pourrions ensuite essayer d'entraîner notre modèle pendant plus d'heures de calcul pour voir si nous pouvons améliorer ce résultat.

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

Sous la matrice de confusion, un graphique d'importance des caractéristiques devrait s'afficher, comme suit:

Importance des caractéristiques

Il nous montre les caractéristiques qui ont généré le signal le plus important lorsque notre modèle a effectué des 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 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 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. Nous pourrions par exemple apprendre 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. 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 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. 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é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 décoché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 l'élément:

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 les afficher ici.

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

Sur la page de votre modèle, où votre point de terminaison s'affiche (là où nous nous sommes arrêtés à l'étape précédente), 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 de la page, 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 considère que cet exemple a 99% de chances d'être non frauduleux.

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

Rechercher 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 à 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. 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