- Canva a atteint 200 millions de MAU, héberge plus de 30 milliards de designs et environ 300 nouveaux designs sont créés chaque seconde
- Permettre aux utilisateurs de rechercher des designs et de retrouver des fichiers partagés devient un enjeu de plus en plus important
- Dans la recherche publique (web/recherche produit), les jeux de données sont construits à partir des requêtes utilisateur et d’un ensemble fixe d’éléments de recherche
- Des évaluateurs spécialisés annotent chaque requête et chaque élément selon leur pertinence
- Les performances du moteur de recherche sont évaluées à l’aide de métriques de rappel (Recall) et de précision (Precision)
- Dans la recherche personnelle, il n’est pas possible (pour protéger la vie privée) de consulter des designs privés ni d’utiliser les données des utilisateurs comme jeu d’évaluation
- Comme solution, Canva utilise l’IA générative (GPT-4o, etc.) pour produire du contenu et des requêtes réalistes, mais entièrement synthétiques
- Cela fournit un moyen d’évaluer les améliorations du pipeline de recherche sans aucune atteinte à la vie privée
État initial : des méthodes de test limitées
- Processus de test existant
- Les ingénieurs utilisaient une approche de test hors ligne limitée
- Ils exécutaient dans un compte Canva des requêtes connues comme problématiques afin de comparer les performances avant et après une modification du code
- Exemple : lors d’un travail d’amélioration de la correction orthographique, test d’une requête incorrecte comme
desgin
- Avant la modification : aucun résultat
- Après la modification : retour de documents liés à
design
- Les changements validés en test hors ligne passaient ensuite à la phase de test en ligne
- Exécution de tests A/B via le framework d’expérimentation de Canva
- Comparaison du taux de succès de recherche entre les utilisateurs exposés au changement et ceux utilisant la recherche standard
- Limites
- Manque de validité statistique des tests hors ligne
- Avec un nombre limité de requêtes, il est difficile de représenter la diversité des comportements de recherche
- Impact potentiellement négatif pour les utilisateurs
- Des régressions non détectées hors ligne peuvent être exposées lors des expériences en ligne
- Coût en temps des expériences en ligne
- Obtenir une significativité statistique nécessite au minimum plusieurs jours, voire plusieurs semaines
- Cela limite le nombre d’expériences simultanées et la vitesse de test des idées
État idéal : construire un nouveau jeu de données et un pipeline d’évaluation
- Objectif : mettre à disposition des ingénieurs un jeu de données sur mesure et un pipeline d’évaluation capables d’évaluer objectivement les modifications avant le passage aux tests en ligne
- Exigences principales :
- Reproductibilité : fournir le même résultat à tout moment
- Itérations rapides : permettre aux ingénieurs de tester rapidement les résultats après une modification du code, sans attendre un déploiement en production
- Proximité avec l’environnement de production : produire des résultats alignés sur le comportement réel en production
- Travail non bloquant : permettre à chaque membre de l’équipe d’expérimenter ses modifications de code de façon indépendante, sans bloquer les autres
Générer un jeu de données réaliste : utiliser l’IA générative
- Jeu de données d’évaluation respectueux de la vie privée
- GPT-4o a été utilisé pour générer des données synthétiques pouvant remplacer les données réelles des utilisateurs
- Sans copier les designs des utilisateurs, les données reproduisent des distributions statistiques réalistes, comme la longueur des textes
- Génération de cas de test pour évaluer le rappel
- GPT-4o est utilisé pour générer des requêtes et le contenu correspondant à partir d’un thème et d’un type de design (document, présentation, etc.)
- Ajustement de la difficulté des requêtes :
- ajout de fautes d’orthographe
- remplacement par des synonymes
- reformulation de la requête
- Génération de cas de test pour évaluer la précision
- Création d’un jeu de données incluant des designs pertinents et non pertinents
- Méthodes de génération des designs non pertinents :
- n’inclure qu’une partie des mots-clés
- modifier le contenu pour qu’il ressemble à un modèle de design ou à un brouillon
- le définir comme un ancien design
Problèmes rencontrés avec l’IA générative
- Forces et limites des LLM
- Atout : génération efficace de grands volumes de données textuelles
- Une fois généré, le jeu de données d’évaluation statique peut être réutilisé, et fournit rapidement des résultats cohérents et déterministes
- Suppression des limites : une fois le jeu de données créé, les problèmes de latence et d’aléa des LLM sont écartés
- Problèmes
- Refus de générer des titres longs
- Bien qu’il ait été demandé de produire des titres de 12 à 15 mots, le modèle renvoyait des titres plus courts
- Exemples :
Exploring the Latest Advancements in Screen Technology and Applications (9 mots)
Best Practices for Teachers: Presentation Tips for Meet the Teacher (10 mots)
- Cela reflète peut-être le fait que les titres longs sont rares dans les documents réels
- En conséquence, le critère de longueur des titres a été réexaminé
- Erreurs de répétition et hallucinations
- Lorsqu’on demandait plusieurs fautes d’orthographe d’un même mot, le modèle renvoyait des résultats dupliqués ou irréalistes
- Exemple : pour
Calendar, les variantes générées se répétaient
- Problèmes dans la génération de titres non pertinents
- Lors de la génération de titres de designs non pertinents, certains cas ne suivaient pas correctement les consignes
- Certains titres retournés ne contenaient pas les mots-clés imposés, ou incluaient simplement
title string, produisant des résultats inexacts
Exécuter l’évaluation : tests et analyse en local
- Exploitation du jeu de données d’évaluation
- Le jeu de données synthétique généré est injecté dans le pipeline de recherche afin de calculer les métriques d’évaluation
- Après avoir exploré plusieurs méthodes d’exécution, Canva a retenu une approche locale basée sur Testcontainers
- Pipeline local basé sur Testcontainers
- Réutilisation du support Testcontainer existant
- Dans l’architecture RPC orientée services de Canva, le support Testcontainer était déjà en place
- Le pipeline a été construit en combinant des composants externes comme Elasticsearch avec des Testcontainers internes
- Reproduction complète de la configuration de production
- Le pipeline de recherche et les modèles de ML associés sont exécutés localement pour reproduire le même environnement qu’en production
- Les ingénieurs peuvent expérimenter différentes variantes de modèles
- Traitement des cas de test
- Génération de l’état nécessaire pour chaque cas de test
- Au lieu de créer un design Canva complet, seules les données nécessaires à l’index de recherche sont extraites et injectées
- Exécution du pipeline de recherche local
- Le jeu de données est exécuté avec les requêtes de test pour produire les résultats de recherche
- Transmission des résultats au module d’évaluation
- Calcul des métriques de rappel (Recall) et de précision (Precision)
- Diagramme de flux de données
- Un diagramme montre visuellement le flux complet de traitement des données par l’outil d’évaluation
Visualiser les résultats
- Développement d’un outil de visualisation
- Un outil personnalisé basé sur Streamlit permet de visualiser et comparer efficacement les résultats d’évaluation
- Les ingénieurs peuvent comparer d’un coup d’œil les métriques de rappel (Recall) et de précision (Precision) entre différentes configurations
- Fonctionnalités principales
- Comparaison par configuration
- Agrégation des résultats pour comparer côte à côte les performances de différents réglages
- Analyse détaillée par type de requête et niveau de difficulté
- Possibilité d’isoler les performances selon certains types de requêtes ou niveaux de difficulté
- Débogage requête par requête
- Inspection des résultats de chaque requête pour déboguer finement des cas d’usage spécifiques
- Aide à la décision rapide
- Une fois l’évaluation terminée, l’outil se lance immédiatement pour aider les ingénieurs à prendre rapidement des décisions à partir des performances observées
- Les ingénieurs peuvent itérer et améliorer leur travail de manière autonome, sans dépendre des autres membres de l’équipe
Impact et suite des travaux
- À quel point l’état idéal a-t-il été atteint ?
- Le jeu de données d’évaluation et les outils offrent une reproductibilité totale et produisent des résultats en quelques minutes
- Les ingénieurs peuvent évaluer localement, de façon indépendante et objective, des résultats alignés sur le comportement en production
- La vie privée est pleinement garantie, sans jamais consulter les designs ni les requêtes des clients
- Résumé des résultats
- Itérations rapides
- Plus de 1 000 cas de test sont traités en moins de 10 minutes
- Pendant les 2 à 3 jours nécessaires à une expérience en ligne, il est possible d’effectuer plus de 300 évaluations hors ligne
- Corrélation entre résultats hors ligne et en ligne
- Les résultats d’évaluation hors ligne sont conçus pour écarter les idées inadaptées et ne faire passer en expérimentation en ligne que les changements les plus prometteurs
- Plusieurs expériences ont été menées pendant le développement pour vérifier la synchronisation entre résultats hors ligne et en ligne
- Une forte cohérence a été confirmée, tant pour les changements positifs que négatifs en performance
- Capacités de débogage local
- Le système permet de suivre le parcours d’un cas de test à travers chaque composant du pipeline de recherche
- C’est bien plus efficace que l’ancienne méthode de débogage fondée sur les logs de production
- Prochaines étapes
- Étendre le jeu de données
- Ajouter des fonctionnalités plus réalistes, comme un graphe de collaboration
- Améliorer les outils
- Renforcer le tooling afin de permettre aux ingénieurs de générer, selon leurs besoins, des données synthétiques personnalisées
- Maximiser l’usage de l’IA générative
- Continuer à exploiter le potentiel des données synthétiques pour faire évoluer les outils de recherche de Canva vers la meilleure expérience possible pour la communauté
Aucun commentaire pour le moment.