Similist : performances

Similist a été conçu dès le départ pour pouvoir indexer efficacement des bases de milliards d’images ou plus. Une attention particulière a été portée sur deux points :

  • permettre d’augmenter les capacités de stockage, d’alimentation (ajout/modification/suppression) et de requêtages (recherches, scorings, …) par simple ajout de matériel,
  • limiter les ressources globales nécessaires pour réaliser toutes les opérations de manière à les garder économiquement viables :
    • une recherche avec Similist met en jeu des capacités de traitement équivalentes à celles d’une recherche classique sur méta-données en base de données relationnelle.
    • comparée à une base de données relationnelle la modification de la base est plus coûteuse en terme de calcul pur, mais cela n’est pas pénalisant pour le type d’usage où Similist est le plus pertinent (des recherches et recommandations beaucoup plus nombreuses que les modifications).

Les chiffres dans la suite sont mesurés sur nos prototypes. Ceux-ci fonctionnent sur un système à base de Ryzen 5950X disposant de 16 cœurs de CPU et 64 Go de RAM. Similist est conçu pour être mis à l’échelle en répartissant les calculs sur plusieurs systèmes.

Les prototypes de Similist indexent aujourd’hui jusqu’à un demi-million d’images par heure.

Les temps de réponse pour les résultats de recherche varient selon :

  • le nombre de résultats de recherche demandés,
  • la complexité des objets (le nombre moyen d’images par objet),
  • le réseau de neurones choisi pour la recherche de similarités et la précision des résultats recherchée.

Nous avons pris pour base de travail une recherche des 100 objets les plus proches dans une base constitués d’objets ayant en moyenne 10 images :

  • 10 images correspondent à l’ordre de grandeur constaté sur les bases publiques les plus courantes (sites d’enchères, de vente en ligne, de ventes immobilières, …).
  • 100 objets permettent de générer un flux de recommandation conséquent et dans le cas de recherches utilisateurs est la plupart du temps supérieur au besoin et dans le cas contraire laisse suffisamment de temps pour compléter les résultats lorsque l’utilisateur n’a pas trouvé son bonheur en fin de consultation et souhaite continuer son exploration.

Dans le cas des réseaux de neurones nécessitant le plus de traitements lors des recherches et avec le plus haut niveau de précision de recherche, notre latence au niveau de nos systèmes est actuellement de 500 ms. Dès aujourd’hui cette latence peut être réduite sous les 100 ms en diminuant la précision demandée. Nos labs ont par ailleurs terminé la phase de conception d’un algorithme distribué pour diminuer encore ces latences (il reste à être implémenté).
À cela s’ajoute la latence réseau entre vos systèmes et les nôtres, nos points de présences en France, en Allemagne et au Royaume-Uni permettent d’avoir une latence réseau négligeable dans ces pays et nous