Mise à l’échelle de la correspondance d’entités dans la pièce avec Scribble Enrich et Redis

Mise à l’échelle de la correspondance d’entités dans la pièce avec Scribble Enrich et Redis

Les chambres mission est de connecter les meilleurs talents du monde entier à des opportunités significatives. Conçue comme une plate-forme axée sur la technologie et centrée sur la communauté pour aider les organisations à trouver rapidement des talents de haute qualité et sélectionnés à grande échelle, The Room accueillera des dizaines de millions de membres dans son système et aura une présence mondiale.

Au cœur de le défi technologique est un problème d’appariement d’entités mathématiquement difficile. Chaque entité du système (individus, organisations, opportunités et contenu) doit être associée à d’autres entités avec une précision et une pertinence élevées, une sensibilité au contexte et une opportunité. L’application a plusieurs instances de ce problème.

Après expérimentation, l’équipe ML de The Room a opté pour une approche utilisant l’intégration dans l’espace vectoriel de données textuelles brutes décrivant des entités, et une combinaison de correspondance de similarité vectorielle et de logique métier évolutive pour faire apparaître des entités similaires. Lors du test de l’implémentation, il a été découvert que le calcul de la similarité des vecteurs de base entraînait les besoins de calcul et de mémoire de l’algorithme. En utilisant la récupération de clé haute performance de Redis basée sur la recherche du vecteur du voisin le plus proche, l’équipe a pu obtenir une amélioration de plus de 15 fois dans la boucle de calcul de similarité de base sans surcharge de mémoire.. À son tour, cela a créé une marge pour augmenter la complexité de l’algorithme et également le fournir sur le chemin en temps réel.

Système global

Le flux global de données est illustré dans le diagramme d’architecture de la figure 1. Bien qu’assez standard, le principal défi consistait à mettre en place l’ensemble du système de production avec une petite équipe, des délais serrés et le besoin de flexibilité.

Room1
Figure 1 : Données couler autour de La plateforme d’intelligence de salle (TRIP)

Griffonner des données Enrichir le magasin de fonctionnalités et ses applications ont fourni le cadre général pour la mise en œuvre de la plate-forme The Room Intelligence, qui est responsable de la mise en correspondance des entités. Enrich a géré l’intégration avec environ 15 sources de données, l’ingénierie de la qualité des données, des lots et des fonctionnalités de streaming, y compris la vectorisation, ainsi que l’intégration avec les bases de données en mémoire telles que Redis, le catalogage et la conformité. Le pipeline et l’orchestration d’Enrich ont également été utilisés pour la modélisation, et les futures versions des implémentations utiliseront une base de données de modèles autonome telle que MLFlow.

Défis

Le profilage des premières versions du code de correspondance pour le moteur de correspondance d’entités de The Room a indiqué que plus de 95 % du temps consommé et 90 % de la mémoire étaient consacrés au calcul de la similarité vectorielle. Cette intensité de ressources a fait allusion à la nécessité d’une distribution de calcul et d’optimisations fastidieuses. Les trois principaux défis étaient :

  1. Coût: La N2 la croissance du calcul à mesure que les entités se développaient de manière linéaire (des centaines de millions de correspondances potentielles à marquer) impliquait de passer à une implémentation distribuée, qui nécessite beaucoup de personnel et de ressources.
  2. Désordre : La sophistication croissante de l’algorithme d’appariement et des optimisations interagirait de manière complexe.
  3. Assistance en temps réel : Faire correspondre une entité à toutes les autres entités candidates potentielles prenait trop de temps pour être acceptable pour la génération de correspondances en temps réel.

De plus, il était nécessaire d’optimiser les contraintes clés suivantes :

  1. Taille de l’équipe: La petite taille de l’équipe ML la rend limitée pour résoudre d’autres problèmes que les défis ci-dessus.
  2. Contraintes de temps: L’entreprise évolue rapidement et il est important d’itérer rapidement en faisant apparaître les résultats et en testant les sorties.

Redis pour la similarité vectorielle

Redis a mis à disposition une version d’aperçu privé de sa fonctionnalité de similarité vectorielle et, pour démontrer la capacité, a exploité RedisGears pour prendre en charge la récupération de clé à l’aide d’une recherche de similarité vectorielle haute performance. L’interface était assez simple, impliquant le stockage et la recherche à l’aide de la correspondance de similarité, avec une intégration simple. La similarité cosinus et les métriques de distance euclidienne ont été prises en charge pour trouver k-les voisins les plus proches (k-NN) vecteurs stockés dans Redis avec un vecteur de requête. Des tests autonomes ont montré que le top-k le temps de récupération de la correspondance la plus proche était inférieur à la milliseconde et la durée est presque constante sur une large gamme de comptages de vecteurs. L’implémentation de test actuelle présente certaines limitations, telles que la prise en charge uniquement de la longueur fixe des vecteurs et la possibilité de faire correspondre tous les vecteurs stockés dans Redis. La version de production devrait résoudre ces problèmes.

Mise en correspondance des entités et comparaison des performances

Le problème d’appariement d’entités à The Room a été modélisé comme un k-voisin le plus proche (k-NN) récupération sur des vecteurs représentant des entités. Le nombre de vecteurs candidats (N) est important et devrait croître rapidement. Le nombre de dimensions de chaque vecteur est de l’ordre de quelques milliers. Les tests se sont concentrés uniquement sur les parties de calcul du score de similarité de base dans l’application et l’accélération signalée est basée sur cela.

Trois approches ont été testées :

  1. Tout d’abord, comme ligne de base naïve, une boucle d’application de trame de données Pandas (…) qui effectue efficacement un calcul de similarité vecteur-vecteur par ligne (Pandas Apply).
  2. Deuxièmement, une version optimisée du calcul de similarité à l’aide de la fonction spatial.distance.cdist(…) du package Python scikit-learn (Python Vectorized).
  3. Troisièmement, les Redis Gears k-Recherche NN (Redis).

Pour les approches (1) et (2) ci-dessus, un tri clé a été effectué sur les scores pour obtenir les indices des meilleursk vecteurs candidats similaires. Différentes valeurs de N et k ont été testés. Les trois approches ont utilisé le même ensemble de données de vecteurs. Les résultats sont présentés dans le tableau 1.

Room2
Tableau 1 : Comparaison d’accélération à l’aide de diverses méthodes pour récupérer les top-k vecteurs les plus proches en fonction d’un vecteur de requête

Nous constatons une accélération constante de 15 fois dans le top-k performances de récupération de vecteurs. Plus la taille des données est grande, plus l’accélération est importante. Notre hypothèse est que cette accélération est due à l’élimination de la surcharge Python et Pandas dans le calcul et la mémoire, et que cette accélération peut être attendue en production de manière cohérente.

Redis à la chambre

Il existe un certain nombre de propositions de valeur dans l’utilisation des fonctionnalités de Redis dans The Room :

  1. Magasin de fonctionnalités en ligne : Stockage des fonctionnalités calculées sur le chemin de diffusion et également le chemin de lot pour une recherche rapide par les clients.
  2. k– Recherche de vecteur le plus proche : La recherche de clé haute performance de Redis basée sur le calcul de similarité vectorielle a relevé un défi de mise à l’échelle de base chez The Room.
  3. Construire avec Redis: La feuille de route Room consiste à construire des graphes sociaux et à traiter des flux. Redis offre des modèles de données supplémentaires et d’autres fonctionnalités au cœur de Redis, notamment la recherche, les graphiques et le traitement de données programmable, ce qui réduit la nécessité de gérer le flux de données entre des systèmes distincts.

Prochaines étapes

Le calcul de similarité vectorielle à faible latence et hautes performances de Redis, intégré au magasin de fonctionnalités Enrich de Scribble Data, est étendu pour résoudre d’autres problèmes. Au-delà d’un magasin de données pour servir des fonctionnalités en ligne, il existe deux problèmes à court terme pour lesquels Redis Enterprise est évalué, notamment l’utilisation de graphiques pour identifier les opportunités et les flux pour traiter les événements en temps réel. La plate-forme d’intelligence de données de The Room bénéficie de cette intégration car elle développe des applications de données à faible latence à la pointe de la technologie pour ses membres et son personnel interne.

Collègues auteurs

La chambre

Pierre Swanikerdirecteur technique de The Room

Données de griffonnage

Achint ThomasArchitecte de données, Scribble Data

The Room recrute des data scientists et des data scientists ! Voir plus à https://www.theroom.com/careers/

En savoir plus sur le magasin de fonctionnalités Enrich sur www.scribbledata.io/productet pour commencer à développer avec Redis, visitez https://developer.redis.com/y compris avec RedisAI pour un service en temps réel sur https://redis.com/modules/redis-ai/.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *