0% ont trouvé ce document utile (0 vote)
7 vues77 pages

Conception de Systèmes de Machine Learning

Le document traite de la conception de systèmes de machine learning, en mettant l'accent sur le développement, l'évaluation et le déploiement de modèles. Il aborde des sujets tels que la sélection de modèles, les méthodes ensemblistes, le suivi des expériences, et les défis liés à l'entraînement distribué. Enfin, il discute des mythes sur le déploiement et des techniques de compression de modèles pour améliorer l'efficacité.

Transféré par

S2Bros
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues77 pages

Conception de Systèmes de Machine Learning

Le document traite de la conception de systèmes de machine learning, en mettant l'accent sur le développement, l'évaluation et le déploiement de modèles. Il aborde des sujets tels que la sélection de modèles, les méthodes ensemblistes, le suivi des expériences, et les défis liés à l'entraînement distribué. Enfin, il discute des mythes sur le déploiement et des techniques de compression de modèles pour améliorer l'efficacité.

Transféré par

S2Bros
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le design des systèmes de

machine learning 2
Julien Romero

Designing Machine Learning Systems


Développement de modèles
et évaluation offline

Designing Machine Learning Systems


Évaluer et choisir un modèle
● Avec des ressources illimitées, on pourrait tout tester
○ Impossible en pratique
● Bien comprendre son problème et connaître les tâches classiques en ML est
crucial
○ Détection de tweets toxiques -> classification de texte -> transformers, RNN, naive Bayes,
régression logistique
○ Détection de transactions frauduleuses -> détection d’anormalités -> k-NN, isolation forest,
clustering
● Les métriques de performances ne sont pas les seules à prendre en compte :
○ Quantité de données, ressources, et temps nécessaires pour l’entraînement
○ Latence à l’inférence
○ Interprétabilité

Designing Machine Learning Systems


Comment sélectionner des modèles ?
● Faire attention aux derniers modèles à la mode
○ Souvent meilleurs sur des datasets très précis
○ Plus chers et complexes à mettre en place
● Commencer par des modèles simples
○ Rasoir d'Ockham
○ Facile à déployer, valider, comprendre, débugger
○ On ajoute des éléments petit à petit
○ Servent de baselines pour savoir si on progresse
● Éviter les biais humains
○ Excitation par un modèle => plus de tests => de meilleures performances
○ Il faut être équitable entre chaque configuration

Designing Machine Learning Systems


Comment sélectionner des modèles ?
● Prévoir qu’un modèle peut s’améliorer
○ Au début, peu de données
○ Learning curves : performance du modèle en fonction du nombre de points d’entraînement

Designing Machine Learning Systems


Comment sélectionner des modèles ?
● Évaluer les compromis
○ On ne peut pas être parfait partout
○ Faux positifs vs faux négatifs (biométrie vs détection COVID)
○ Ressources de calcul vs performance
○ Interprétabilité vs performance
● Quelles sont les hypothèses des modèles ?
○ Prédiction possible, variables indépendantes et identiquement distribuées, continuité (des entrées
proches ont des sorties proches), tractabilité, existences de frontières (classification linéaire),
indépendance conditionnelle (naive Bayes), loi normale, …

Designing Machine Learning Systems


Méthodes ensemblistes
● Idée : Combiner plusieurs modèles
● Permettent de gagner un peu de performance
● Mais plus difficile à déployer et maintenir
● Types de méthodes ensemblistes :
○ Bagging : Création de plusieurs datasets différents par échantillonnage et entraînement d’un modèle
pour chaque dataset
○ Boosting : Entraînement itératif où les nouveaux modèles se concentrent sur les erreurs précédentes
○ Stacking : Entraînement de plusieurs modèles différents que l’on combine

Designing Machine Learning Systems


Suivi et versionnage des expériences
● Réplicabilité cruciale : on veut pouvoir recréer un artéfact de manière sûre
○ Artéfact = fichier généré pendant l’entraînement (loss curve, évalutations, logs, paramètres du
modèle, …)
● Suivi d’expérience = Au niveau d’une seule expérience, comprendre ce qui se passe
● Versionnage d’expérience = logger les détails des expériences pour les rendre
reproductibles et comparer les résultats de plusieurs expériences

Designing Machine Learning Systems


Suivi d’expérience
● Nous voulons suivre :
○ La courbe de loss sur le train et le val
○ Les métriques de performance (F1, RMSE, accuracy, …) sur le train et le val
○ Les entrées, les sorties du modèle, et la vraie prédiction : utile pour analyser plus tard
○ Vitesse du modèle : itérations par secondes, tokens par secondes, …
○ Métriques du système (utilisation CPU, GPU, mémoire)
○ Paramètres et hyperparamètres qui changent : learning rate, la norme des gradients, la normes des
poids, …

Designing Machine Learning Systems


Versionnage d’expérience
● Versionnage du code assez commun (Git)
● Quid des données ?
○ Plus larges, modifications difficiles à calculer et peu efficaces
○ Impossible de multiplier un dataset, ne tient pas forcément sur une seule machine
○ Lois (RGPD) demandent de supprimer des données
● Pourtant crucial pour la reproductibilité
○ Mais souvent ignoré

Designing Machine Learning Systems


Comment débugger un modèle de ML ?
● Difficile :
○ Pas d’erreur : le modèle continue de faire des prédictions, mais fausses
○ Long de vérifier si le bug est corrigé (il faut ré-entraîner, re-déployer, …)
○ De nombreuses composantes (et équipes) : données, étiquettes, features, algorithme, code,
infrastructure, …
● Sources :
○ Contraintes théoriques (voir plus haut)
○ Erreur d’implémentation
○ Mauvais choix des hyperparamètres
○ Problème avec les données (collecte, préprocessing, mauvaise normalisation, …)
○ Mauvais choix de features

Designing Machine Learning Systems


Comment éviter les bugs ?
(Similaire à la procédure du cours de DL)

1. Commencer simple et ajouter des composantes petit-à-petit


2. Overfit sur peu de données du train
3. Fixer la seed : la seed contrôle l’aléatoire, la fixer permet de reproduire exactement
les mêmes résultats, ou presque

Designing Machine Learning Systems


Entraînement distribué
● Nécessaire pour passer à l’échelle
○ Beaucoup de calculs
○ Données ne rentrent pas sur une machine
○ Batch size trop petite

Designing Machine Learning Systems


Parallélisation des données
Idée : distribuer les données sur plusieurs machines, entraîner le modèle et accumuler
les gradients

● Synchronous stochastic gradient descent : chaque machine calcule les gradients,


on attend que tout le monde ait fini, on accumule les gradients et on fait la mise à
jour
○ Lent
○ Ressources non utilisées pendant l’attente
○ Problème si une machine ne répond pas

Designing Machine Learning Systems


Parallélisation des données
Idée : distribuer les données sur plusieurs machines, entraîner le modèle et accumuler
les gradients

● Asynchronous stochastic gradient descent : chaque machine calcule les


gradients, on accumule les gradients et on fait les mises à jour au fur et à mesure
○ Convergence demande plus d’itérations (ok en pratique)

Problèmes de la parallélisation :

● Grandes batch size (=> moins d’itération dans une époque)


● Il faut du workload balancing

Designing Machine Learning Systems


Parallélisation du modèle
● Idée : on entraîne les différentes parties du modèles sur les machines différentes

Designing Machine Learning Systems


Parallélisation du modèle
● Pipeline de parallélisation : pour ne pas perdre de ressource de calcul, il faut suivre
une pipeline permettant de paralléliser les calculs sur plusieurs machines, sans
tout le temps attendre

Designing Machine Learning Systems


AutoML
● Processus automatique pour trouver un algorithme de ML pour résoudre un
problème
○ Trouver les hyperparamètres (random search, grid search, optimisation bayesienne)
■ Rappel : On n’utilise jamais le test set pour trouver les hyperparamètres
○ Trouver l’architecture/le modèle : Neural Architecture Search
■ Il faut un ensemble de modèles possibles, une métrique d’évaluation des métriques, et une
stratégie d’exploration (aléatoire, apprentissage par renforcement, algorithme génétique, …)

Designing Machine Learning Systems


Les quatre phases du développement d’un modèle de ML
1. Avant le ML, implémenter une solution sans ML
a. Algorithme simple, heuristique
b. Ex: Système de recommandation de news montrant les plus récentes
2. Algorithme simple de ML
3. Optimisation de l’algorithme simple
4. Exploration des algorithmes plus complexes

Designing Machine Learning Systems


Évaluation des modèles offline
● Dans l’idéal, même évaluation online et offline
○ Ok avec des labels naturels (mais avec des biais)
○ Pas d’étiquette en online
● Baseline : Il faut toujours comparer son approche à des baselines pour montrer
son utilité
○ Baseline aléatoire : on retourne une classe de manière aléatoire
○ Heuristique simple : algorithme simple
○ Classe la plus utilisée : globalement ou au niveau d’un individu/groupe
○ Baseline humaine : nous donne un objectif de ce qui est possible de faire
○ Solution existante

Designing Machine Learning Systems


Méthodes d’évaluation avancées
À ajouter au test set en général

● Tests de perturbation : Ajout d’un bruit pour tester si le modèle est robuste
○ Ex : classification d’appel, le dataset est propre mais en pratique bruit de fond d’un call center
● Tests d’invariance : Modification de paramètres qui ne sont pas censés changer la
sortie
○ Ex : changer le sexe ou l’ethnicité

Designing Machine Learning Systems


Calibration de modèle
On veut vérifier que les sortie du modèle correspondent bien à la réalité, en particulier
quand on prédit une probabilité.

● Vérifier que quand un modèle prédit qu’un événement à X% de chance de se


passer, il se passe vraiment X% du temps
○ Ex : Si on prédit qu’une équipe A bat une équipe B 80% du temps, après 100 matchs, on devrait
avoir 80 victoires pour A
● Vérifier que la distribution de la sortie correspond à la réalité quand on considère
plusieurs prédictions
○ Ex : Dans un système de recommandation, si un utilisateur regarde 80% de comédies romantiques
et 20% de thrillers, le système de recommandation devrait suivre ces valeurs

Designing Machine Learning Systems


Calibration de modèle
● On peut mesurer la calibration
du modèle en comptant
● Pour calibrer un modèle, on peut
utiliser le Platt scaling

(A et B sont appris, f est le


classifier)

Designing Machine Learning Systems


Évaluation sur des sous-ensembles
● Pour mieux comprendre les résultats, il est souvent nécessaires d’analyser les
performances sur différentes sous-catégories (slice-based)
○ Utile pour détecter de la discrimination et des erreurs sur une catégorie en particulier
○ Certains groupes sont plus importants que d’autres (membres qui paient vs qui ne paient pas)
● Comment découper ?
○ Heuristique : connaissances du domaines
○ Analyse des erreurs : regarder les erreurs et trouver des motifs
○ Slice finder : Outils de développement pour automatiser le processus

Designing Machine Learning Systems


Déploiement de modèles
et services de prédiction

Designing Machine Learning Systems


Du développement à la production
● La production est un large spectre qui va de la présentation d’un notebook à
répondre à des milliers de requêtes par secondes
● Déployer le modèle peut être facile
○ On met la méthode predict dans un appel POST d’un serveur web avec Flask ou FastAPI, on
encapsule le tout dans un container Docker et voilà !
● Ce qui est compliqué, c’est passé à l’échelle
○ Millions d’utilisateurs
○ Faible latence
○ 99% de uptime
○ Notification en cas de problème
○ …

Designing Machine Learning Systems


Quelques mythes sur le déploiement de modèles
Mythe 1 : On n’a besoin de déployer seulement un ou deux modèles à la fois

● Vrai dans l'académie


● En pratique, il y a beaucoup de modèles
○ Chez Uber : Prédiction de la demande, de la disponibilité des conducteurs, du temps d’arrivée, des
prix, des transactions frauduleuses, … Souvent, des modèles différents pour chaque pays et langue.

Designing Machine Learning Systems


Quelques mythes sur le déploiement de modèles
Mythe 2 : Si on ne fait rien, les performances restent constantes dans le temps.

● Besoin de mettre à jour les algorithmes et le code


● Les données peuvent changer (data distribution shift)

Designing Machine Learning Systems


Quelques mythes sur le déploiement de modèles
Mythe 3 : Il n’est pas nécessaire de mettre à jour les modèles souvent

● En pratique, on veut aussi souvent que possible


○ Pour certaines entreprise, toutes les 10 minutes environ.

Designing Machine Learning Systems


Quelques mythes sur le déploiement de modèles
Mythe 4 : Les ingénieurs ML ne doivent pas se soucier du passage à l’échelle

● Ce n’est pas un problème que pour les grosses entreprises


● Même un entreprise avec une centaines d’employés à ce genre de problèmes

Designing Machine Learning Systems


Prédiction en batch et en ligne
● Prédiction en ligne (online) = on doit répondre à la requête aussi vite que possible
○ Ex : Traduction sur Google Translate
○ Faible latence (= le modèle doit être rapide)
○ Obligatoire dans de nombreuses applications : high frequency trading, véhicules autonomes,
assistants vocaux, reconnaissance d’empreintes digitales, détection de chutes, …
● Prédiction en batch = les prédictions sont générées périodiquement et stockées
○ Ex : Les recommandations Netflix sont générées une fois toutes les quelques heures
○ Grande bande passante
○ Mais on risque de faire des calculs qui ne servent à rien
○ On ne s’adapte pas rapidement à un changement de préférence (ex, commence une nouvelle série)
● Attention, ici batch != batch en deep learning
● Avec les améliorations hardware et software, la prédiction en ligne devient de plus
en plus présente.

Designing Machine Learning Systems


Batch features et streaming features
● Batch features = features calculées en avance sur l’historique des données
○ Ex : Le temps moyen de préparation d’un repas pour un restaurant à une heure donnée
○ Mises à jour de temps en temps avec des frameworks comme Hadoop ou Spark (voir cours de Big
Data)
● Streaming features = features calculées à la volée sur les données entrantes
○ Ex : Le nombre de commandes d’un restaurant sur les dix dernières minutes
○ Outils comme Kafka ou Apache Flink
● Il faut faire très attention d’avoir les mêmes features à l’entraînement et à
l’inférence

Designing Machine Learning Systems


Batch features et streaming features

Designing Machine Learning Systems


Compression de modèle
● Compresser un modèle consiste à en réduire la taille
● Avantages :
○ Inférence plus rapide
○ Modèle plus petit
○ Calculs hardware plus rapide
● Inconvénient : on perd en qualité

Designing Machine Learning Systems


Techniques de compression
● Low-Rank Factorisation : Remplacer des tenseurs de haute
dimension par des tenseurs plus petits
● Knowledge distillation : Entraînement d’un modèle plus
petit (student) avec un modèle plus grand (teacher)
● Pruning : Retirer des nœuds d’un réseau, ou mettre des
poids à 0 (sparsité)
● Quantization : Utiliser une précision plus faible pour
stocker les flottants (32 bits vers 8 bits en général)
○ Plus grand batch size, calculs plus rapides
○ Mais moins de valeurs possible, perte de performance

MobileNet

Designing Machine Learning Systems


Exemple pratique : Roblox et BERT

Designing Machine Learning Systems


Déploiement sur le cloud ou sur l’edge
● Cloud = sur des machines connectées à internet qui n’appartiennent pas aux
clients
○ Facile à utiliser, de nombreux outils
○ Cher
○ Nécessite une connexion à internet
● Edge = sur la machine des clients (navigateur, téléphone, ordinateurs, voitures,
robots, …)
○ Difficile à mettre en place à cause de la variété
○ Souvent machines peu performants (calculs, mémoire, batterie)
○ Gratuit pour l’entreprise
○ Pas besoin d’internet, pas de latence réseau
○ Peut traiter des données sensibles et privées sans les partager (RGPD)

Designing Machine Learning Systems


Compiler et optimiser des models pour le edge
● Problème : le framework (ex : Torch) doit être compatible avec le hardware
○ Beaucoup d’optimisations sont spécifiques à un hardware (exploitation des opérations, de la
mémoire, des caches, des registres, d’accélérations hardware, …)
○ Pour les hardwares très utilisés (GPUs et CPUs classiques), déjà beaucoup d'investissements
○ Pour les hardwares peu utilisés, très compliqué de faire le portage
● Idée pour généraliser : utiliser des représentations intermédiaires qui servent à
implémenter le code pour un hardware.

Designing Machine Learning Systems


Représentations intermédiaires

Designing Machine Learning Systems


Optimisation de modèle
● Après avoir transformé notre modèle en langage machine, on a souvent des
problèmes de performance
○ Difficile d’optimiser pour toutes les bibliothèques (scikit-learn, tensorflow, torch, pandas, numpy,
transformers, …)
○ Ingénieur Optimisation ML : connaissance à la fois ML et hardware
● Deux types de optimisations:
○ Locales = optimisation d’une opération ou d’un ensemble d’opérations
○ Globales = optimisation au niveau du graphe de calcul

Designing Machine Learning Systems


Techniques d’optimisation
● Vectorization : traiter plusieurs itérations d’une boucle en parallèle
● Parallélisation : Diviser le travail en tâches indépendantes pouvant s’exécuter en
parallèle
● Loop tiling : Changer l’ordre d’accès aux données pour mieux utiliser la mémoire
et les caches
● Fusion d’opérations : fusionner des opérations pour éviter les accès mémoires
redondants

Designing Machine Learning Systems


Exemple de fusions avec des convolutions

Designing Machine Learning Systems


Techniques d’optimisation
● Vectorization : traiter plusieurs itérations d’une boucle en parallèle
● Parallélisation : Diviser le travail en tâches indépendantes pouvant s’exécuter en
parallèle
● Loop tiling : Changer l’ordre d’accès aux données pour mieux utiliser la mémoire
et les caches
● Fusion d’opérations : fusionner des opérations pour éviter les accès mémoires
redondants
● Algorithme ML : apprendre à prédire les temps de calculs pour trouver plus
facilement les optimisations utiles (cuDNN autotune, autoTVM)
○ Très lent, doit être entraîné à chaque fois

Designing Machine Learning Systems


ML dans un navigateur
● Utilisation de Javascript ou de WebAssembly
○ [Link], Synaptic, [Link]
● Marche sur toutes les machines avec un navigateur
● Mais extrêment lent

Designing Machine Learning Systems


Changement de distribution de données et
monitoring

Designing Machine Learning Systems


Après le déploiement du modèle
● Déployer le modèle n’est pas la fin du développement
● On observe souvent des performances moindre en production, qui diminue au fur
et à mesure du temps
● Il va être important de contrôler nos modèles en production

Designing Machine Learning Systems


Causes des pannes des systèmes de ML
● Un système ML peut avoir un problème avec ses métriques opérationnelles
(latence trop élevée) ou sur les métriques de performance (accuracy)
○ Erreur opérationnelle plutôt facile à trouver
○ Erreur sur les performances difficiles à trouver, souvent silencieuses
● Deux types de pannes :
○ Logicielles (dépendances, déploiement, hardware, crash) : Génie logiciel très important pour
l’ingénieur ML, à l’origine de la plupart des bugs
○ Spécifiques au ML : déjà vu quelques unes (collecte de données, hyperparamètres, différences entre
entraînement et inférence, …)

Designing Machine Learning Systems


Données en production différentes des données d’entraînement
● Supposition des cours de ML/DL : les données d’entraînements et de tests
viennent de la même distribution, qui est stationnaire
○ Données similaires et ne changeant pas, même comportements
● Mais supposition souvent incorrecte :
○ De nombreux biais dans la création du dataset (sélection, échantillonage)
○ Données non-stationnaires (data shift) : changement soudains (annonces de Trump sur l’Ukraine),
graduel (apparition d’un nouveau produit), ou saisonniers (vélos en été)
○ Des erreurs humains (pipeline de données, valeurs manquantes, mauvaises entrées, incohérence
entre features d'entraînement et d’inférence, …) peuvent impacter les performances, souvent difficile
à différencier des data shifts

Designing Machine Learning Systems


Cas limites
● Les cas limites sont des données extrêmes qui entraînent des erreurs
catastrophiques
○ Ex : véhicules autonomes, diagnostic médical
○ Même si 99.99% d’accuracy, le 0.01% peuvent être très coûteux

Designing Machine Learning Systems


Boucles de rétroactions dégénérées
● Pour la création d’étiquettes naturelles, on enregistre ce que fait l’utilisateur pour
mieux le prédire
○ Quand l’algorithme de ML est déployé, il impacte ce que fait l’utilisateur, ce qui impacte les
données d’entraînement, ce qui impact ce qui est montré, etc.
○ Les modèles deviennent trop confiants dans leurs prédictions : on a une boucle de rétroaction
dégénérée
○ Particulièrement présente dans les systèmes de recommandation et les prédictions de clics
○ Crée des biais et des bulles : bias d’exposition, biais de popularité, bulles de filtres, echo chambers

Designing Machine Learning Systems


Boucles de rétroactions dégénérées - Détection
● Difficile à détecter offline, on doit mettre le système en production
● Il existe des métriques :
○ Basées sur la popularité des items dans les systèmes de recommandation : aggregate diversity,
average coverage of long-tail items
○ Elles empirent avec le temps

Designing Machine Learning Systems


Boucles de rétroactions dégénérées - Correction
● Introduire de l’aléatoire dans les prédictions
○ Mettre des recommandations aléatoires
○ Chez TikTok, pour chaque nouvelle vidéos, apparait 100 fois de manière aléatoire, puis
apprentissage
○ Détériore l’expérience utilisateur
● Encoder la position dans une feature et la cacher à l’inférence
○ Les premiers objets recommandés ont tendance à être plus populaires
○ On peut rajouter la position, ou simplement si c’est le premier objet de la liste

Designing Machine Learning Systems


Data Distribution Shift
Phénomène qui survient en apprentissage supervisé quand les données avec lesquelles
un modèle travaille changent avec le temps

Ex : Changement de président, apparition d’un nouveau produit, phénomènes


cycliques comme les saisons, …

Designing Machine Learning Systems


Types de data distribution shift
● On représente les données avec une distribution P(X, Y) qui nous donne la
probabilité d’une entrée et d’une sortie
○ On peut écrire P(X, Y) = P(Y|X)P(X) = P(X|Y)P(Y)
● Covariate shift : Quand P(X) change mais pas P(Y|X)
○ La probabilité d’une entrée change mais si on savait déjà prédire la sortie pour une entrée, pas de
changement
○ Ex : Vous voulez détecter un cancer du sein. Pendant l’entrainement, beaucoup d’exemple de
femmes ayant plus de 40 ans, mais à l’inférence, population plus répartie
■ Cela n’impacte pas les prédictions
○ Causes : biais pendant la sélection des données d’entraînement, altération artificielle des données
(pour compenser une classe sous représentée), changement dans l’application ou son usage (vise
une clientèle plus fortunée)
○ Problématique si shift vers des données trop différentes ou plus complexes

Designing Machine Learning Systems


Types de data distribution shift
● On représente les données avec une distribution P(X, Y) qui nous donne la
probabilité d’une entrée et d’une sortie
○ On peut écrire P(X, Y) = P(Y|X)P(X) = P(X|Y)P(Y)
● Label shift : Quand P(Y) change mais pas P(X|Y)
○ Par exemple, pour détecter le cancer, à l’entrainement, vous avez autant de labels cancer que
non-cancer. Par contre, à l’inférence, beaucoup plus de non-cancer.
■ Par contre, si vous prenez deux patients ayant le cancer au hasard dans l’entraînement et à
l’inférence, ils auront tous les deux la même probabilité d’avoir plus de 40 ans.
○ Assez similaire au covariate shift

Designing Machine Learning Systems


Types de data distribution shift
● On représente les données avec une distribution P(X, Y) qui nous donne la
probabilité d’une entrée et d’une sortie
○ On peut écrire P(X, Y) = P(Y|X)P(X) = P(X|Y)P(Y)
● Concept drift : Quand P(Y|X) change mais pas P(X)
○ Les entrées sont similaires, mais la prédiction associée à une entrée change
○ Ex : Vous avez un site de vente de biens immobilier. Le COVID arrive et les gens quittent les villes.
Résultat : les prix chutent pour des biens similaires
○ Souvent cycliques ou saisonnier
■ Prix des billets de train, des courses de taxis, de l’affluence en gare, …

Designing Machine Learning Systems


Data shifts dus au système
● Changement dans les features (ajout, retrait, modification)
● Changement des labels possibles (ajout, division ou retrait de labels)
○ Par exemple, modèle qui peut diagnostiquer une nouvelle maladie

Designing Machine Learning Systems


Détecter les data shifts
● Les data shifts ne sont pas toujours problématiques
○ Il faut contrôler les métriques d’accuracy
○ Problème : ok si labels naturels, sinon difficile
● La plupart des méthodes font du monitoring sur les données en entrées P(X)
○ Indépendant des labels

Designing Machine Learning Systems


Détection statistiques
● On va logger différentes statistiques et les comparer au cours du temps
○ Min, max, mean, median, variance, quantiles, …
○ Même si métriques similaires, aucune garantie qu’il n’y ait pas eu de shift
● Utilisation de tests statistiques
○ Two-sample hypothesis test
○ Vous disent si deux distributions sont statistiquement différentes ou pas
○ Attention aux conditions et limites d’utilisation
○ Test de Kolmogorov-Smirnov : pas de paramètre ni de supposition, mais que vous des données
unidimensionnelles. Test cher et avec beaucoup d’alertes faux positifs.
○ Least-squares density difference, Maximum Mean Discrepancy, …
○ Voir la bibliothèque Alibi Detect

Designing Machine Learning Systems


Quelle fenêtre de temps pour détecter un data shift ?
● Certain changements sont brusques, d’autres très lents et graduels
● Pour les shifts dans le temps difficile de savoir ce qui est cyclique ou non

Designing Machine Learning Systems


Quelle fenêtre de temps pour détecter un data shift ?
● Certain changements sont brusques, d’autres très lents et graduels
● Pour les shifts dans le temps difficile de savoir ce qui est cyclique ou non

Designing Machine Learning Systems


Quelle fenêtre de temps pour détecter un data shift ?
● Certain changements sont brusques, d’autres très lents et graduels
● Pour les shifts dans le temps difficile de savoir ce qui est cyclique ou non
● Deux types de métriques
○ Fenêtre glissante : on déplace un fenêtre avec un certain pas et on calcule des statistiques dans cette
fenêtre

Designing Machine Learning Systems


Quelle fenêtre de temps pour détecter un data shift ?
● Certain changements sont brusques, d’autres très lents et graduels
● Pour les shifts dans le temps difficile de savoir ce qui est cyclique ou non
● Deux types de métriques
○ Fenêtre glissante : on déplace un fenêtre avec un certain pas et on calcule des statistiques dans cette
fenêtre
○ Statistiques cumulatives : on accumule une statistique au fur et à mesure du temps
■ Ex : Moyenne glissante
● Pour une analyse poussée, il faut étudier les techniques d’analyse de séries
temporelles
● En pratique, on choisit une échelle de temps pour le monitoring comme l’heure
ou la journée

Designing Machine Learning Systems


Solutions au data shift
1. Entraîner sur beaucoup de données
a. On espère qu’il va contenir tous les cas possibles
2. Essayer d’adapter un modèle existant
a. Toujours du domaine de la recherche
3. Réentraîner le modèle avec les nouvelles données annotées
a. Soit de zéro, soit faire du finetuning
b. Bien choisir les données : dernière 24 heures, semaine, six mois ?
4. Rendre les features moins changeantes
a. Discrétisation : 1-10 = 1, 10-100 = 2, 100-1000 = 3, …
b. Compromis entre stabilité de la feature et performance
5. Adapter le système pour traiter les shifts plus facilement
a. Ex: pour prédire le prix des maisons, un modèle pour Paris et les grandes villes, un modèle pour les
campagne. Les prix changent plus vite à Paris.

Designing Machine Learning Systems


Monitoring vs Observabilité
● Monitoring = suivi de différentes métriques pour savoir quand il y a un problème
● Observabilité = suivi de différentes métriques pour savoir pourquoi il y a un
problème
● L’observabilité fait partie du monitoring

Designing Machine Learning Systems


Les métriques opérationnelles
● On veut contrôler les systèmes, indépendamment du ML
○ Latence, bande passante, nombre de prédictions demandées par seconde, heure ou jour,
pourcentage de requête 200, utilisation du CPU/GPU, utilisation mémoire

Designing Machine Learning Systems


Métriques spécifiques au ML

Difficile à monitorer Facile à monitorer

Entrées brutes Features Prédictions Accuracy

Erreurs humaines moins probables Proche des métriques business

Designing Machine Learning Systems


Métriques spécifiques au ML - Accuracy
● Il faut des étiquettes naturelles pour calculer des métriques sur les sorties de notre
modèle
● On peut aussi suivre n’importe quel feedback utilisateur : click, achat, upvote,
downvote, favoris, partage, …
○ Important à suivre car souvent corrélée à la sortie de notre modèle
○ Dans les systèmes de recommandation : click-through-rate = click sur un recommandation,
completion-rate = à regarder la vidéo recommandée en entier
● Ne pas hésitez à ajouter dans votre système la possibilité à votre utilisateur de faire
un retour

Designing Machine Learning Systems


Métriques spécifiques au ML - Accuracy
● Il faut des étiquettes naturelles pour calculer des métriques sur les sorties de notre
modèle
● On peut aussi suivre n’importe quel feedback utilisateur : click, achat, upvote,
downvote, favoris, partage, …
○ Important à suivre car souvent corrélée à la sortie de notre modèle
○ Dans les systèmes de recommandation : click-through-rate = click sur un recommandation,
completion-rate = à regarder la vidéo recommandée en entier
● Ne pas hésitez à ajouter dans votre système la possibilité à votre utilisateur de faire
un retour

Designing Machine Learning Systems


Métriques spécifiques au ML - Prédictions
● Facile à visualiser et interpréter
● On peut utiliser des tests statistiques
● On peut essayer de logger des événements douteux
○ Le modèle prédit la même sortie pendant beaucoup de fois consécutives
○ Les valeurs sont constamment au dessus d’un seuil

Designing Machine Learning Systems


Métriques spécifiques au ML - Features
● Validation de features : on veut vérifier que les features respectent certaines
caractéristiques
○ Min, max, mediane dans un intervalle satisfaisant
○ Feature suit une regex (date par example)
○ Feature dans un set prédéfit (catégories)
○ Règles entre plusieurs features : F1 est toujours supérieur à F2
● Problèmes majeurs
○ Si beaucoup de features, peut ralentir le système et augmenter la latence
○ Bien pour débugger, moins utile pour détecter une dégradation des performances du modèle
○ Difficile de trouver la cause exacte : l’extraction de feature utilise de nombreuses étapes et
bibliothèques
○ Le schéma des features change avec le temps => fausses alertes. Besoin de versionner.

Designing Machine Learning Systems


Métriques spécifiques au ML - Entrée brutes
● Souvent, pas d’accès aux entrées brutes
● C’est aux ingénieurs data de gérer ça

Designing Machine Learning Systems


Comment faire du monitoring : les logs
● Classique en génie logiciel, on enregistre tout ce qui nous intéresse : initialisation
d’un conteneur, mémoire utilisée, appel de fonction, crash, stack trace, code
d’erreur, …
● Beaucoup de composantes dans les systèmes modernes
○ On veut savoir quand il y a un problème et où !
○ Donner des identifiants uniques aux processus et logger des metadata (heure, service concerné,
fonction, utilisateur, …)
● Peut devenir très dur à traiter beaucoup de logs
○ Badoo, une application de rencontre, avait 20 milliards de requêtes par jours
○ Il faut des algorithmes de détection d’anomalie automatique utilisant du ML
○ On utilise des outils comme Spark, Hadoop, Hive, Kafka, Flink, …

Designing Machine Learning Systems


Comment faire du monitoring : les dashboard
● On représente des métriques avec des courbes
○ Facile à visualiser, même pour des gens non techniques (même si un expérience en statistique est
utile)
○ Par contre, on doit limiter l’information à visualiser

Designing Machine Learning Systems


Comment faire du monitoring : les alertes
● On peut déclencher une alerte (par mail ou Slack par exemple) à chaque fois
qu’un événement suspect se produit
● Il faut :
○ Une politique d’alerte = condition
○ Canal de notification = qui prévenir et comment
○ Description de l’alerte = ce qui ne va pas
● Attention, trop d’alertes tue l’alerte

Designing Machine Learning Systems


L’observabilité
● On veut comprendre d’où vient le problème
● Problématique quand beaucoup de services dont certains ne sont pas gérés par
nous
○ Il faut, uniquement à partir des logs, trouver d’où vient le problème
● Nous voulons être sur d’avoir assez d’information pour retrouver l’erreur et ce qui
l’a causé à posteriori
○ Métriques très précises
○ Moyen de faire des requêtes sur les logs (“Montre moi tous les outliers dans les dix dernières
minutes”)
● L’observabilité est souvent lié à la notion d’interprétabilité

Designing Machine Learning Systems


En résumé
● Développement d’un modèle et entraînement
● Évaluation Offline
● Prédiction en ligne vs en batch
● Compression de modèle
● Le cloud et l’edge
● Les erreurs dans les systèmes ML
● Data shift
● Monitoring et observabilité

Designing Machine Learning Systems

Vous aimerez peut-être aussi