9 points par xguru 2024-12-02 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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
    1. 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
    1. 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
    1. 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
    1. Comparaison par configuration
      • Agrégation des résultats pour comparer côte à côte les performances de différents réglages
    2. 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é
    3. 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
    1. 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
    1. 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
    1. 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.

Aucun commentaire pour le moment.