aléatoire dans l’apprentissage en machine learning.
Maintenant que l’on a identifié ce qui pourrait causer des comportements inattendus de la part de notre système, il convient désormais d’identifier des propriétés attendues et les sondes associées pour les vérifier.
Une propriété est un comportement attendu du système ou des données ingérées en entrée de celui-ci. Par exemple : sur le signal cardiaque, je m’attends à mesurer des valeurs supérieures à 50. Ces propriétés doivent être déterminées avec des experts. Sur notre exemple, nous pouvons nous tourner vers des médecins et des patients.
Une sonde est un capteur qui permettra de vérifier que la propriété est respectée.
Sur notre exemple fil rouge, nous avons identifié les propriétés suivantes :
Au niveau du On / Off :
Figure 6 : Monitoring du temps de fonctionnement du système
Au moment de la prise de signal :
Figure 7 : Rythme cardiaque moyen par fenêtre glissante de 60 secondes
NDLR : Les deux figures précédentes donnent envie de mettre des seuils pour créer des alertes. Nous ne parlons pas de ce sujet dans cet article, mais pour aller plus loin le mot clef est alerting.
Au moment de l’annotation :
Figure 8 : Exemple de métrique de variance d’annotation : Intersection over Union
Au niveau du réentraînement :
NDLR : La Shadow production dans le monde de la data science consiste à faire prédire l’ensemble des modèles disponibles sur les données de production pour pouvoir comparer les résultats. Bien entendu, seules les prédictions données par le modèle en production seront utilisées.
Comme il y a sans doute des problèmes que l’on n’a pas identifié, on se permet malgré tout de monitorer une distribution sans qu’elle soit directement associée à un non-déterminisme : la distribution des prédictions.
NDLR : La distribution des prédictions est la seule distribution que l’on suit par défaut dans nos projets.
La dernière sonde dont on souhaite vous parler, qui est pour nous la plus importante, est le suivi de la performance réelle. C'est-à-dire récupérer la vérité et la comparer à nos prédictions. Cette sonde correspond à notre besoin : savoir si le système fonctionne bien. Les sondes que l’on a précédemment posées ne sont que des proxys qui nous permettent un feedback plus rapide. Récupérer la vérité peut être long, dans notre cas, il faut attendre l’annotation, mais c’est obligatoire.
Ainsi, sur cet exemple fil rouge, nous avons identifié 6 sondes relativement simples à implémenter. Ces sondes nous permettront d’avoir une confiance dans le bon fonctionnement du système. Une fois celles-ci mises en places, nous nous laissons la possibilité de découvrir de nouvelles propriétés intéressantes à monitorer.
Propriété souhaitée | __So__nde |
Le patient portera le système de 7h15 à 22h30 tous les jours. | Compteur de période où le système est allumé. |
Rythme cardiaque entre 50 et 180 battements par minutes. | Rythme cardiaque moyen par fenêtre glissante de 60 secondes. |
Un signal est annoté par plusieurs annotateurs de manière similaire. | Mesure de la variance d’annotation entre annotateurs sur un même signal. |
Performance d’un nouveau modèle ≥ performance du modèle en production. | Shadow production. |
La distribution des prédictions est stable dans le temps. | Mesure de la distribution des prédictions. |
Modèle réellement performant. | Récupération de la vérité et comparaison aux prédictions. |
Figure 9 : Résumé des sondes posées sur notre système.
En appliquant cette méthode sur plusieurs cas d’usage au cours de nos missions, nous avons identifié quelques principes généraux à respecter pour s’assurer que les sondes que l’on va poser soient pertinentes.
Principe 1 : Plus la sonde est loin dans le pipeline plus elle va être générique.
C’est à dire que cette sonde va attraper de nombreux comportements défaillants. La conséquence est que si elle indique un problème, elle ne sera pas très précise sur sa source.
En pratique, il faut donc chercher à mettre la sonde le plus tôt possible dans le pipeline.
Principe 2 : Les sondes ne doivent pas casser les Service Licence Agreements (SLA).
Cela signifie que les sondes ne doivent pas impacter le fonctionnement du système.
En pratique, il convient donc de faire du monitoring de manière asynchrone.
Principe 3 : Si c’est critique pour l'application, ça doit en faire partie.
Sur notre exemple fil rouge, on pourrait faire un monitoring du nombre de capteurs effectivement branchés, mais comme tous les capteurs sont nécessaires au bon fonctionnement de l’application, cette vérification n’est pas un monitoring mais fait partie de celle-ci.
En pratique, il faut donc s’assurer que la propriété n’est pas un prérequis de l’application.
Principe 4 : Seuls les aléas anticipables et probables méritent des sondes.
Dans notre exemple, nous pourrions monitorer le fait que c’est bien notre patient qui porte les capteurs, mais c’est tellement peu probable que ce soit quelqu’un d’autre que cela ne vaut pas le coût.
Sinon cela engendrera des coûts de développement importants pour rien. Dans le monde du développement logiciel en agile, ce principe s’exprime souvent sous le mantra YAGNI: You Ain’t Gonna Need It.
En pratique, il convient donc de vérifier que ce que vous voulez suivre correspond à un évènement probable.
Principe 5 : Si une sonde lève une alerte à l’étape N, mais qu’il n’y a pas d’alerte à l’étape N+1, la sonde n’est pas pertinente.
Sur notre exemple, si la sonde mesure que le rythme cardiaque est beaucoup trop haut, mais que la performance réelle du système est toujours bonne, alors cela ne servait à rien de s’assurer que le rythme cardiaque était inférieur à 180 : modifiez ou retirez cette sonde.
Dans la pratique, challengez les sondes dès leur conception (Si cette propriété n’est pas vérifiée, est-ce vraiment un problème ?). Mais aussi en production : lorsqu’une sonde dit qu’il y a un problème, mais que les suivantes disent que tout va bien, alors supprimez-la.
Principe 6 : S’il est rapide de récupérer la vérité, ce n’est pas la peine de monitorer autre chose.
Dans le cas de la publicité en ligne on cherche à proposer la publicité sur laquelle l’utilisateur est le plus susceptible de cliquer. Vous savez en quelques secondes si l’utilisateur clique ou ne clique pas. Dans ce cas, ce n’est pas la peine d’appliquer cette méthode. En monitorant votre performance réelle, vous serez alerté assez vite qu’il y a un problème.
En pratique, il convient de se demander quelle est la vitesse à laquelle on peut récupérer la vérité.
Partant de la conviction que le monitoring de distributions à tout va est fastidieux et souvent peu efficace, nous proposons une méthode en 3 étapes pour identifier des sondes pertinentes à mettre en place :
Vous pouvez tout de même suivre des distributions de vos données, mais cela sera plus à des fins exploratoires.
Si vous souhaitez en savoir plus, nous donnerons un talk sur le monitoring de systèmes de data science à la Duck Conf 2020.