Comment déployer votre modèle de Machine Learning ?

Le déploiement de modèles de Machine Learning (ML) à grande échelle est l’un des défis les plus complexes pour toute organisation. C’est un défi d’autant plus difficile à relever lorsque votre entreprise cherche à monétiser les avantages du ML pour son profit. Cela s’explique par une déconnexion entre les outils et les techniques utilisés dans l’environnement de conception et l’environnement de production en conditions réelles.

En effet, le machine learning connaît une forte révolution : de l’expérience de la précision la plus fiable possible à un service économique profitable de production.

Aujourd’hui, les modèles de machine learning s’implémentent et se déploient quasiment en temps réel.

Dans cet article, nous allons aborder les meilleurs moyens de déployer votre modèle de machine learning et vous aurez accès à la checklist d’un déploiement réussi.

Connaître l’essentiel

  • Le Machine Learning désigne le processus permettant aux ordinateurs de développer la reconnaissance de schémas ou l’aptitude à apprendre continuellement sans avoir été programmés pour.
  • Il existe trois méthodes de base pour déployer les modèles de Machine Learning : le déploiement à la demande, le déploiement par batchs et le déploiement manuel. 

Le choix de votre modèle de déploiement dépend de la maturité de votre donnée, du contexte et du besoin de votre organisation.

Les clés pour construire une stratégie optimale de déploiement de modèles ML sont :

  • la stratégie de conditionnement 
  • l’optimisation et le réentraînement de votre modèle
  • l’implication de l’équipe commerciale
  • la cohérence stratégique de votre environnement informatique 
  • la capacité à auditer votre projet et processus
  • l’utilisation de scoring en temps réel ou de modèle ML en ligne. 
  • la scalabilité de votre projet et de vos process
  • la mise en place de stratégies de repli et de basculement

La checklist d’un modèle de déploiement réussi

Pour augmenter votre réussite de déploiement de votre modèle de Machine Learning, voici les grandes étapes et les questions à se poser au cours du projet.

1. Déterminer la structure et la filière de déploiement appropriées

Nous venons de le voir, il faut choisir un modèle de déploiement en fonction de la maturité de votre donnée, du contexte de votre entreprise et de votre besoin. Choisissez entre :

  • Déploiement à la demande
  • Déploiement manuel
  • Déploiement par batchs

Ce choix est principalement déterminé en fonction de la fréquence de l’ensemble de données entrant et de l’urgence des résultats attendus.

2. Optimiser votre modèle de production

L’optimisation de votre modèle de production passe notamment par l’optimisation de votre pipeline de prétraitement et de post-traitement, le nettoyage de votre code et sa conteneurisation.

L’optimisation de vos pipelines

En fonction du type de déploiement choisi, il est primordial de s’attarder sur l’optimisation de votre pipeline de prétraitement de données. Souvent inapproprié et incapable de maintenir un flux de données important, votre serveur peut ne pas être capable de gérer un nombre élevé de requêtes parallèles.

De ce point de vue là vous devez vous assurer de la reproductibilité des données. Cela signifie que si les données sous-jacentes ne sont pas les mêmes que celles de l’environnement de recherche, il est impossible pour le modèle de générer les mêmes résultats.

Plus encore, les pipelines de post-traitement permettent aussi une exploitation optimisée des résultats. Créer des pipelines reproductibles permet notamment à vos collègues d’ajuster et de reproduire à un moindre effort vos méthodes et résultats. 

Les aspects que vous devriez inclure dans vos pipelines reproductibles sont les suivants :

  • La collecte des données
  • Le prétraitement des données
  • La sélection des caractéristiques
  • La validation du modèle

Vous devez donc vous assurer que vos pipelines de données soient structurés de manière efficace et scalable afin de fournir des données pertinentes.

Le nettoyage de votre code pour le déploiement du modèle ML

Pour être déployé un code de Machine Learning doit contenir :

  • Un traitement robuste des exceptions
  • Un enregistrement des exceptions
  • Un enregistrement des résultats de prédiction pour capturer la dérive de la production
  • Une optimisation de l’utilisation des ressources
  • Une limitation des délais de réponse afin de pouvoir mettre fin aux requêtes

Cela permet également à vos collègues de comprendre facilement le code et les données que vous avez utilisé pour générer vos résultats. 

La conteneurisation votre code

Il s’agit de l’étape la plus critique afin de s’assurer que votre code est déployable et évolutif. La conteneurisation du code garantit l’indépendance de celui-ci. Cela permet de segmenter en modules et d’éviter tout problème de dépendances.

Pour conteneuriser votre code, vous devez créer des images. Une image contient tout ce qui est nécessaire au bon fonctionnement d’une application : le code, les dépendances, la configuration, les variables d’environnement… 

Les conteneurs permettent de déployer rapidement le code à grande échelle et d’adapter ce dernier à différents environnements. 

3. Créer des versions

Les modèles de Machine Learning sont très sensibles aux moindres changements. Parfois, de minuscules modifications incrémentielles peuvent faire chuter les performances du modèle, ce qui le rend pratiquement inutile pour faire des prédictions. 

En créant des versions de votre modèle vous allez pouvoir éviter de tout devoir refaire à zéro. On appelle cela le “versioning”. Il permet de retracer vos étapes de modèle et d’en garantir sa reproductibilité.

Créer plusieurs versions et les stocker permettent de suivre l’évolution du modèle mais aussi les changements de rupture dans les améliorations ultérieurs du modèle.

Il existe des outils de gestion de versions très connus pour cela, notamment Git, DVC, Pachyderm ou encore MLMD.

4. Comprendre vos erreurs de prédiction après tests

Si le modèle génère des NaNs ou des infinis comme prédictions, il se peut que les données de l’environnement contiennent des données nulles ou non traitées dans le code. Cela peut aussi être la conséquence de mauvaises données lors du téléchargement ou des tests. 

Enfin, vérifiez que les données ne contiennent pas des catégories non observées précédemment. 

Il existe des manières simples de résoudre le problème de la présence de valeurs nulles dans votre base de données. En voici 5 qui peuvent résoudre une grande partie de vos casse-têtes : 

  • supprimer la colonne : il se peut que vous ayez une colonne dont moins de 5% des lignes sont remplies de données. 
  • supprimer les valeurs nulles par ligne : c’est possible grâce à des commandes : vous pouvez supprimer les lignes avec des valeurs nulles ou supprimer seulement les valeurs nulles dans une ligne. 
  • remplir les valeurs nulles avec une valeur
  • remplir la cellule contenant des valeurs nulles avec l’entrée précédente

L’une des méthodes pour vous assurer de la fiabilité de vos données est notamment la méthode A/B testing. En conservant et en intégrant à un modèle différent un petit pourcentage de vos données, vous allez pouvoir tester un autre modèle et obtenir des prédictions différentes. Cette méthode d’A/B testing assure la viabilité de votre base de données ainsi que le bon réglage de vos fonctionnalités

Placer votre modèle dans un environnement de test vous permet également de découvrir les problèmes en temps réel avant que votre modèle ne soit mis en production. Cela est d’autant plus important si votre modèle de prédilection usuel fait partie d’une opération plus vaste.

5. Tests et planification du repli

Avant de déployer votre modèle dans l’environnement de production, assurez vous que l’environnement de conception était bien adéquat à son déploiement. Pour cela vous pouvez réaliser deux tests : le “stress testing” et le “Data Edge-case testing”

Le stress testing vous permet de tester la performance de votre modèle et son temps de réponse si vous le faîtes fonctionner avec un volume de données bien plus important que le volume d’entrée dans son environnement de production.

Le data edge-case testing vous permet lui de tester la robustesse de votre modèle en choisissant des données entrantes dont les catégories sortent du modèle d’entraînement. Cela vous permettra d’identifier les limites de votre modèle et de coder en dur certaines réponses si besoin.

Ces deux entraînements sont primordiaux pour éviter les erreurs de mise en production. Une erreur de production peut être fatale à un modèle. Cela peut être causé par un large éventail de problèmes à la fois internes (problème de code, de données…) et externes (changements dans les schémas de données, problèmes de nouvelles versions…) 

Il est donc important de disposer d’un plan de secours si votre modèle est amené à planter. Ce plan de secours peut être un modèle plus simple, des prédictions basées sur des règles ou encore un retour à une version antérieure.

Pour éviter l’erreur fatale qui vous empêcherait de retourner à une version précédente, il faut dès le début prévoir la scalabilité de votre modèle. Cela implique de mettre en place un modèle suffisamment flexible pour gérer des transitions importantes tant en termes de volumes qu’en termes de caractéristiques.

6. Re-entrainer votre modèle 

Le réentraînement du modèle avec de nouvelles données est extrêmement important. Cela permet d’éviter une dégradation des performances. En effet, grâce à de petites itérations, votre modèle devient plus robuste et plus précis. Mettre en place un processus de réentrainement, de validation et de déploiement des modèles est donc crucial pour votre entreprise.

Pour les modèles de Machine Learning qui sont essentiels à votre activité, nous vous suggérons d’exécuter un processus de réentrainement hors ligne. Il est très important de configurer ce moment comme une étape distincte du flux de production. Si cette solution affiche de meilleur score que le modèle de production actuel, une notification est générée pour vous alerter à réviser et remplacer le modèle en production.

Le réentraînement du modèle de machine learning permet de conserver de bonnes performances et de rester compétitif. Les modèles doivent en effet évoluer afin de s’adapter aux nouveaux comportements et aux changements des données sous-jacentes.

Pour entraîner votre modèle vous pouvez notamment utiliser le “Feature Engineering” ou ingénierie des caractéristiques. Le feature engineering permet de transformer les données brutes en caractéristiques

Plus les caractéristiques sont préparées et minutieusement choisies, plus les résultats seront précis. Cela permet d’augmenter l’exactitude du modèle sur les nouvelles données inconnues. 

7. Installer un outil de suivi

Afin de vous assurer de la cohérence et de la pertinence de votre déploiement de modèle de Machine Learning, il est obligatoire de mettre en place un outil de tracking.

Vous pouvez ainsi suivre :

  • le temps de réponse
  • la distribution des données d’inférence
  • la cohérence des résultats (entre les versions)
  • la taille des requêtes
  • la dérive du concept
  • les déclencheurs de transfert automatique

Cela vous permet de bien contrôler votre déploiement de modèle de ML et d’en assurer le suivi. En effet, vos données étant dynamiques, votre modèle doit pouvoir suivre ces évolutions et s’adapter. Votre flux de données peut changer pour diverses raisons (clients, erreurs…), il est donc important d’en surveiller l’évolution. Si votre modèle ne fonctionne pas sur la base des mêmes données que celles sur lesquelles il a été conçu, vos résultats et prédictions seront erronés.

En plus des différents indicateurs à suivre qui peuvent vous indiquer un problème, vous pouvez également vous assurez qu’il n’y ait pas de valeurs en dehors de la plage de valeurs numériques d’entraînement, qu‘il n’y ait pas de nouvelles valeurs catégoriques et les caractéristiques de vos données textes (longeur, langue…).

Étant donné que le déploiement du modèle se fait en dernier lieu pour l’utilisateur, garantir une faible latence, une cohérence dans les réponses, un traitement des exceptions, une surveillance de la dérive et une mise à niveau automatique, sont primordiaux pour se démarquer. C’est également un moyen d’effectuer un audit et un suivi de vos données que ce soit pour des aspects légaux ou de sécurité. Les moyens les plus courants pour contrôler vos versions restent Git, SVN ou encore un registre des données.

En conclusion

Le déploiement de production du modèle est le test ultime de tout déploiement de modèle de Machine Learning. Le déploiement, comme toute application créée, doit garder l’expérience utilisateur finale en tête. Cela permet de garantir son utilisation. 

Si de nombreuses organisations souhaitent utiliser une modélisation prédictive robuste et précise pour leurs problèmes commerciaux, elles doivent néanmoins s’assurer du bon déploiement de ses modèles. 

Grâce à cette checklist de déploiement vous allez pouvoir produire votre modèle facilement !