Ingérer des flux de données avec Vertex AI pour des IA temps réel
Kaz Sato
Developer Advocate, Cloud AI
Erwin Huizenga
Machine Learning Engineer, Google
Détection des fraudes, ciblage publicitaire, moteurs de recommandation… de nombreux cas d’usage du ML nécessitent des prédictions en temps quasi réel. La pertinence de ces prédictions repose très fortement sur un accès à des données récentes, un retard dans les mises à jour - ne serait-ce que de quelques secondes - pouvant impacter la qualité des résultats. Mettre en place une infrastructure capable de gérer d’importants flux de mises à jour et de récupérer les données avec une latence minimale reste toutefois difficile.
Disponible dès ce mois-ci en version préliminaire, Streaming Ingestion est désormais supporté par Vertex AI Matching Engine et Feature Store.
Matching Engine est la base de données vectorielles, entièrement managée, de l’univers Vertex AI. Elle est particulièrement adaptée aux cas d’usage nécessitant de mettre en correspondance des éléments sémantiquement similaires ou sémantiquement liés (ciblages d’annonce, classification de textes ou images, recommandations, etc.). Avec Streaming Ingestion pour Matching Engine, les éléments d'un index sont mis à jour en permanence et répercutés immédiatement dans les résultats de toute recherche de similarité.
Feature Store est l’entrepôt managé de Vertex AI qui centralise le stockage et facilite le partage des caractéristiques (features) utilisées dans les modèles de machine learning. Pour rappel, les caractéristiques sont des descripteurs utilisés comme entrées des modèles ML. Elles jouent un rôle crucial dans la pertinence des modèles car elles fournissent les informations sur lesquelles sont entraînés les modèles.
Avec Streaming Ingestion pour Feature Store, vous pouvez récupérer, avec une très faible latence, les dernières valeurs de caractéristiques (features), obtenir des prédictions très précises et extraire des jeux de données en temps réel pour l’entrainement de modèles.
Le Cabinet d'expertise comptable Digits, par exemple, exploite Vertex AI Matching Engine Streaming Ingestion pour alimenter Boost, une solution qui fait gagner du temps aux comptables en automatisant le contrôle de la qualité : « Vertex AI Matching Engine Streaming Ingestion joue un rôle clé dans la capacité de Digits Boost à effectuer certains traitements et des analyses en temps réel. Avant Matching Engine, les opérations étaient planifiées sur des batchs quotidiens. Aujourd’hui, avec Matching Engine Streaming Ingestion, nous pouvons effectuer une indexation incrémentielle en quasi temps réel. Autrement dit, nous pouvons ajouter, supprimer ou mettre à jour des enregistrements dans un index existant et ainsi accélérer notre process de manière significative. Les clients peuvent désormais obtenir un retour d’information immédiatement et nous pouvons traiter davantage de transactions, plus rapidement », explique Hannes Hapke, ingénieur ML chez Digits.
À travers cet article, nous allons découvrir comment ces nouvelles fonctionnalités peuvent améliorer la qualité des prédictions et simplifier la mise en place d’applications où le temps réel est indispensable, comme dans le cadre des recommandations, de la personnalisation de contenu ou encore de la supervision de la cybersécurité.
De l’IA en temps réel grâce à Streaming Ingestion
Conscientes des avantages business apportés par des prédictions de qualité grâce à des données actualisées, les entreprises développent de plus en plus de cas d’usage en temps réel de l’IA. Voici quelques exemples :
Recommandations et marketplace en temps réel : en ajoutant Streaming Ingestion à sa solution de recommandation de produits basée sur Matching Engine, Mercari a créé une marketplace fonctionnant en temps réel où les utilisateurs peuvent parcourir les produits en fonction de leurs intérêts spécifiques. Les résultats sont mis à jour instantanément lorsque les vendeurs ajoutent de nouveaux produits. Les consommateurs auront donc accès aux nouveaux produits lorsqu’ils consulteront la marketplace. En combinant Streaming Ingestion avec les capacités de filtrage de Matching Engine, Mercari peut spécifier si un article doit être inclus ou non dans les résultats de recherche, en se basant sur des balises telles que "en ligne/hors ligne" ou "en stock/pas de stock".
Diffusion de contenus personnalisés à large échelle: pour tout flux de contenu représentable par des vecteurs de caractéristiques (notamment du texte, des images ou des documents), il est possible de créer différents canaux pub-sub afin de sélectionner un contenu spécifique aux intérêts de chaque abonné. Matching Engine est évolutif : il peut traiter des millions de requêtes par seconde. Dès lors, vous pouvez gérer des millions d’abonnés de façon vraiment dynamique, en sélectionnant dans une large sélection de sujets afin d’adapter le contenu automatiquement à la cible. Grâce à la capacité de filtrage de Matching Engine, vous pouvez également contrôler en temps réel le contenu à inclure en assignant à chaque objet des balises telles que "explicite" ou "spam". Vous pouvez utiliser Feature Store comme référentiel central pour stocker et traiter les vecteurs de caractéristiques des contenus en quasi temps réel.
Supervision : le streaming de contenus peut également être utilisé pour superviser des événements ou des signaux provenant d'infrastructures informatiques, d'appareils IoT, de chaînes de production manufacturières ou encore de systèmes de sécurité. Par exemple, vous pouvez extraire les données de millions de capteurs et d'appareils et les représenter sous forme de vecteurs de caractéristiques. Matching Engine peut être utilisé pour mettre à jour en continu une liste des « 100 premiers appareils présentant des signaux éventuellement défectueux » , ou des « 100 premiers événements de capteurs présentant des valeurs aberrantes », le tout en quasi temps réel.
Détection de menaces et/ou de spams : si vous surveillez les signaux provenant de signatures de menaces de sécurité ou de modèles d'activité de spam, Matching Engine peut identifier instantanément les attaques possibles à partir de millions de points de vigilance. Un atout d’autant plus important que l'identification des menaces de sécurité basée sur un traitement par lots implique souvent un décalage qui peut être important, délai pendant lequel l’entreprise s’avère vulnérable aux attaques. Avec des données actualisées en temps réel, vos modèles peuvent mieux détecter les menaces ou les spams au moment précis où l’attaque émerge dans votre réseau d'entreprise, dans vos services Web, vos jeux en ligne, etc.
Implémentations des cas d’usage de streaming
Explorons plus en détail la mise en œuvre de ces cas d’usage.
Recommandations en temps réel dans le secteur du retail
Mercari a construit un pipeline d’extraction de caractéristiques avec Streaming Ingestion.
Le pipeline d'extraction de caractéristiques est défini avec Vertex AI Pipelines. Il est régulièrement invoqué par Cloud Scheduler et Cloud Functions pour lancer le processus suivant :
Obtenir des données: le pipeline émet une requête pour récupérer les mises à jour de données depuis BigQuery.
Extraction du vecteur de caractéristiques : le pipeline exécute des prédictions sur les données avec le modèle word2vec pour extraire des vecteurs de caractéristiques.
Mise à jour de l'index : le pipeline appelle les API de Matching Engine pour ajouter les vecteurs de caractéristiques à l'index des vecteurs. Les vecteurs sont également enregistrés dans Cloud Bigtable (qui pourra être remplacé par Feature Store à l'avenir).
"Nous avons testé Matching Engine Streaming Ingestion et la première fois, nous n’arrivions pas à y croire : la latence liée à la mise à jour de l’index est incroyablement courte. Nous aimerions introduire cette fonctionnalité dès qu'elle sera disponible à notre plateforme en production ", s’enthousiasme Nogami Wakana, ingénieur logiciel chez Souzoh (société du groupe Mercari).
Cette architecture peut également être appliquée à tous les commerces de détail qui ont besoin de mises à jour en temps réel pour les recommandations de produits.
Ciblage publicitaire
Les systèmes de placement de publicités peuvent également être plus efficaces avec l’extraction de caractéristiques en temps réel et la recherche de correspondances de similarités basée sur une information actualisée. Voyons comment Vertex AI peut vous aider à construire un système de ciblage publicitaire temps réel.
La première étape consiste à générer un ensemble de candidats (autrement dit de publicités pertinentes) à partir du corpus de publicités. Il s’agit là d’un vrai défi car vous n’avez que quelques millisecondes pour générer votre sélection de publicités candidates et vous assurez qu’elles sont bien à jour. Vous pouvez utiliser Vertex AI Matching Engine pour effectuer en un temps très court un matching de similarité de vecteurs, générer des candidats adaptés puis utiliser Streaming Ingestion pour vous assurer que votre index est à jour avec les dernières annonces.
Dans un second temps, il faut réordonner la sélection de publicités candidates à l’aide d’un modèle ML à même de valider la pertinence de l’ordre des candidats. Pour vous assurer que le modèle soit toujours à jour et bénéficie des dernières données récoltées, vous pouvez vous appuyer à la fois sur Streaming Ingestion for Feature Store pour importer les dernières caractéristiques et sur la fonctionnalité de « diffusion en ligne » pour diffuser les valeurs de caractéristiques (feature values) avec une latence minimale.
Une fois les annonces publicitaires reclassées, vous pouvez appliquer des optimisations finales, telles que l’ajout d’une logique métier, à l’aide de Cloud Function ou Cloud Run.
Pour en savoir plus
Si vous êtes intéressés par le service Streaming Ingestion, la documentation complète est, bien entendu, disponible en ligne. Il n’y a plus qu’à le tester. L’utilisation de ces nouvelles fonctionnalités est simple.
Par exemple, lorsque vous créez un index dans Matching Engine avec l'API REST, définissez l'attribut indexUpdateMethod à STREAM_UPDATE.
Une fois l’index déployé, vous pouvez le mettre à jour ou le reconstruire (vecteurs de caractéristiques) avec le code suivant. Si l'ID de point de données existe dans l'index, la représentation vectorielle continue est mise à jour. Dans le cas contraire, une nouvelle représentation vectorielle continue est ajoutée.
L’insertion/mise à jour des enregistrements vectoriels peut être gérée à un débit élevé et avec une faible latence. Les nouvelles valeurs des enregistrements vectoriels sont appliquées pour toute nouvelle requête en quelques secondes ou millisecondes (la latence varie en fonction de différentes conditions).
Au final, on retiendra que Streaming Ingestion est une nouvelle fonctionnalité à la fois puissante et très facile à utiliser. Vous n’avez pas besoin de construire et exploiter votre propre pipeline d’ingestion de données en continu pour réaliser l'indexation et le stockage en temps réel. Grâce à sa capacité de fonctionnement en temps réel, cette nouvelle fonction apportera sans aucun doute une réelle valeur ajoutée à votre entreprise.
Pour en savoir plus, jetez un coup d'œil aux articles de blog suivants afin d’acquérir les concepts et découvrir les cas d'utilisation de Matching Engine et de Feature Store :