Bonne Pratiques de Data Versioning & Feedback Loop

Bonne Pratiques de Data Versioning & Feedback Loop

La gestion des versions du code logiciel est depuis longtemps une pratique courante dans le secteur informatique, utilisant des outils comme git. La gestion des versions de l'environnement de développement gagne également beaucoup de terrain, grâce à des outils comme Docker. Cependant, la gestion des versions des données n’est toujours pas aussi répandue dans le secteur du Machine Learning, même si son adoption offre des avantages précieux. Alors vous vous demandez peut-être pourquoi le data versioning est si important ?

Tout comme pour le code logiciel, la gestion de versions de datasets vous permet de revenir facilement à des versions antérieures. Ceci est essentiel pour la reproductibilité de l’expérience, car tout changement dans les données fera évoluer les résultats d’un modèle dans des directions différentes. De plus, il offre une solution adéquate pour documenter la traçabilité et l'origine des données, particulièrement crucial lorsque des boucles de rétroaction (« feedback loop ») sont intégrées dans un système. Le versioning est également un moyen indirect de sauvegarder des données, même si cela ne devrait pas remplacer les sauvegardes formelles.

De plus, la gestion des versions des données est une méthodologie efficace que vous devez suivre lors de la réalisation de nombreuses expériences impliquant différentes techniques de traitement des données. Chaque expérience doit être versionnée, offrant un accès facile à une étape spécifique et évitant les changements involontaires. Enfin, l’importance du versioning brille lorsque de grandes équipes d’ingénierie travaillent sur les mêmes données. Nous développerons plus en détail la gouvernance des données plus tard.

Mais d’abord, introduisons quelques bonnes pratiques de gestion des versions de données que vous devez prendre en compte dans vos projets de computer vision.


Les 5 meilleures pratiques de Data Versioning en Computer Vision

  1. Version sur les étapes clés du pipeline. Les versions de données sont plus significatives lorsqu'elles sont utilisées lors du démarrage et/ou de l'achèvement des tâches du pipeline de données. Un script ETL a fini de s'exécuter ? Créez une version. Vous avez exécuté un script de détection de corruption et supprimé les images corrompues ? Créez une version. Idéalement, vous créez une version après chaque tâche du pipeline, depuis les données brutes jusqu'à la version finale.
  2. Le nom des versions doit refléter l'état et la position des données dans le pipeline. Le nom d’une version doit être descriptif. Vous ne devriez pas avoir besoin de revenir à une version pour vérifier le stade de l'ensemble de données. Quelques exemples de noms de versions autodescriptifs pourraient être « defects_dataset-cleaned-normalized-feedback_loop », « non_defects_dataset-raw ». Cependant, une norme convention de numéro de version sémantique en trois parties peut être utilisée pour coder efficacement les étapes d’un pipeline. Dans les deux cas, le nom doit véhiculer des informations pertinentes.
  3. Créez des métadonnées pour chaque version. Il peut même s'agir d'un simple fichier .txt documentant des informations importantes sur l'ensemble de données jusqu'à présent. Vous devez inclure des informations qui ne peuvent pas tenir dans le titre mais qui sont importantes à documenter. Un fichier de métadonnées doit indiquer quelles données, en particulier, ont été affectées par les modifications, le nombre d'images nouvelles et totales incluses dans l'ensemble de données, l'origine des nouvelles données, le traitement qui a été effectué en détail et tout autre fait précieux décidé par votre équipe Data. Cette nécessité est renforcée lorsque des boucles de rétroaction (« feedback loops ») sont introduites, mais nous y reviendrons plus tard.
  1. Automatisez le versioning. Dans la plupart des cas, la gestion des versions des données est une tâche répétitive et ennuyeuse. De telles tâches font gagner du temps aux data scientists qui devraient consacrer leur temps à créer et à déployer des modèles. Essayez de versionner automatiquement les datasets après chaque étape clé du pipeline. La plateforme de gestion de données Picsellia peut vous faire gagner un temps précieux et vous soulager votre quotidien. Vérifiez par vous-même comment utiliser des solutions avec et sans code pour versionner rapidement vos datasets.
  2. Tirez parti du versioning pour la coopération intra-équipe. Lorsque plusieurs personnes travaillent sur la même version d’un ensemble de données, il existe toujours un risque d’apporter par inadvertance des modifications affectant le travail des autres. Habituellement, chaque collaborateur doit travailler sur sa version lors des expériences, tout en conservant une version principale (« master »), que tout le monde peut lire, mais pas éditer. Il s'agit d'une politique de gouvernance des données que les chefs d'équipe doivent mettre en œuvre.

L’importance de la gouvernance des données

Avec l’analyse prédictive et l’adoption massive du Machine Learning, les données sont un moteur croissance. L’afflux de données augmente de mois en mois dans la plupart des entreprises. Les données sont une ressource et doivent être gérées en conséquence. Lorsque l’on travaille au sein de grandes équipes d’ingénierie, la gestion efficace des données devient une opération complexe, mais néanmoins cruciale. Il est essentiel de mettre en place un système de gouvernance des données. Par gouvernance des données, nous entendons un ensemble de règles, de politiques et de normes à suivre.

Certaines politiques et normes importantes que vous devez définir sont :

  1. Comment les données sont collectées.
  2. Quelles métadonnées (« metadata ») doivent être documentées.
  3. Quelle qualité de données est acceptable et qu’arrive-t-il aux données qui ne répondent pas aux critères ? Par exemple. les images floues, corrompues et/ou à contraste élevé doivent être supprimées et non déplacées dans le pipeline.
  4. Configurez des conventions de dénomination pour les fichiers, les datasets et les versions.
  5. Quand les datasets doivent-ils être versionnés. Les différents membres de l’équipe travailleront-ils sur leurs versions ? Qui est autorisé à écrire sur la version principale (« master ») ?
  6. Quel type d'architecture de stockage de données correspond le mieux aux besoins de votre organisation. Faut-il le stocker dans un datalake ou data warehouse ? Vaut-il la peine de créer un magasin de fonctionnalités (« feature store ») ?

Définir, mettre en place et respecter ces règles et directives permet de mettre de l’ordre dans l’afflux croissant de données et d’éviter le chaos qui l’accompagne. La plupart du temps, l'utilisation d'une plateforme MLOps pour aider à la gestion des données génère un ROI positif car les data scientists et les ingénieurs ML peuvent concentrer leur énergie sur la manière de créer de la valeur avec leurs modèles.

Ce besoin devient plus répandu à mesure que nous nous éloignons des cycles de vie des données traditionnels au profit de cycles modernes comme les boucles de rétroaction (« feedback loops »).

Le scénario de déploiement de la boucle de rétroaction (« feedback loop »)

Le déploiement de modèles de machine learning est un processus plutôt qu'une tâche. C'est dynamique car cela implique une surveillance continue de la performance d’un modèle. Les modèles en production ont des dates de péremption. La dérive des données (« drift ») et des concepts dégrade rapidement les performances d’un modèle, ce qui finit par nuire aux indicateurs et aux bénéfices de l’entreprise. Mais même sans dérives, une fois déployé, les performances d’un modèle peuvent tout simplement ne pas répondre aux attentes fixées lors de la phase d’évaluation. C’est là que les boucles de rétroaction (« feedback loops ») et l'entraînement en ligne deviennent essentiels. Ils permettent des mises à jour rapides du modèle, ajustées aux nouvelles distributions de données et variables environnementales.

Pensez à un modèle de détection de défauts dans un environnement industriel ; un système de détection visuelle des écrans mobiles cassés ou rayés. Après la collecte de données, l'entraînement et le déploiement d’un modèle, des changements ont lieu dans le contexte industriel, hors du contrôle des ingénieurs en machine learning. L’intensité lumineuse est modifiée et la couleur du tapis roulant en arrière-plan change. Même ces petits changements d'environnement peuvent produire une sous-performance involontaire du système visuel. Un re-entraînement devient alors nécessaire.

Dans cet exemple, supposer que le modèle n’est plus complètement inutile et démarrer le processus d'entraînement à partir de zéro n’est pas rentable et demande beaucoup de temps. Vous avez besoin d'un système capable de re-entraîner dynamiquement un modèle en ligne, en utilisant moins de données, mais des pertinentes. Le re-entraînement peut être déclenché par des seuils de performances, une détection de dérive des données ou des intervalles de temps fixes. Lorsque le modèle produit un résultat incorrect, celui-ci doit être capturé, documenté et inclus dans une Version mise à jour du dataset. Les fonctionnalités de monitoring de Picsellia offrents ces capacités. La détection de prédictions erronées nécessite toujours qu’un humain dans la boucle (« human in the loop »). Par conséquent, une combinaison de données anciennes et nouvellement acquises est utilisée pour re-entraîner le modèle. Ce dataset mis à jour offre une meilleure représentation de la « nouvelle » réalité.

Avantages des boucles de rétroaction

Avec des boucles de rétroaction mises en place :

  • Les modèles ne deviennent pas obsolètes et les performances sont maintenues à des niveaux élevés tout au long de la phase de déploiement. Selon le cas d’utilisation d’un modèle, cela se traduit par des services de qualité supérieure ou des bénéfices plus élevés.
  • Vous réduirez les temps d’arrêt du modèle. Moins de temps consacré à la refonte, au recyclage et à l'évaluation d'un modèle correspond à plus de temps passé à l'utiliser.
  • Des ressources de computing économisées. Étant donné que le re-entraînement est généralement effectué avec moins depoch et de données, vous réduirez les besoins en computing. Ceci est crucial lorsque vous utilisez des solutions cloud et que vous êtes facturé à l'utilisation.

Inconvénients des boucles de rétroaction

Toutefois, les boucles de rétroaction présentent des inconvénients cachés. Premièrement, étant donné que les versions de datasets créés au cours d’une boucle de rétroaction sont principalement échantillonnées à partir des erreurs d’un modèle, la version peut être intrinsèquement couplée au modèle utilisé lors de sa génération. Ainsi, il se peut qu’il ne soit pas bien transféré à un autre modèle. Deuxièmement, l’équipe d’ingénierie peut se retrouver piégée dans une boucle sans fin de re-entraînement, pour faire revivre un modèle « mort ». Parfois, les dérives des concepts et des données sont si importantes que la seule option viable est de recommencer l'entraînement à partir de zéro.

De plus, les boucles de rétroaction ajoutent de la complexité à l’architecture d’un système. L’architecture typique de entraînement-évaluation-déploiement ne peut pas gérer efficacement les boucles de rétroaction. Vous avez besoin d’une architecture qui intègre le monitoring des performances, du concept et de la dérive des données. De tels systèmes sont plus difficiles à concevoir et à entretenir. Heureusement, la plateforme CVOps de Picsellia propose ces services via une interface conviviale et collaborative, vous aidant à préserver les ressources essentielles.

Gérez vos données d'IA de la bonne manière

Obtenir un essai

Recommandé pour vous:

english language
EN
french language
FR