← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 5 nov. 2020

Catégorie Machine Learning

La mise en production des modèles de Machine Learning

Déploiement, mise en production, industrialisation ... ce sont des mots que l'on évoque de plus en plus ces derniers temps avec les modèles de Machine Learning.

Les deux phases des projets

Phase d'expérimentation

La phase d'expérimentation est toujours réalisée dans les projets Data Science : c'est ce qui permet d'obtenir un PoC (Proof-of-Concept).

Phase d'industrialisation

Cette phase est plus difficile. Dans la phase d'industralisation, les objectifs sont complètement différents.

  • Le modèle doit être exposé et accessible aux utilisateurs autorisés (collaborateurs, clients, utilisateurs).
  • Il doit garder des performances identiques avec le temps.
  • Il doit être toujours disponible et pouvoir supporter de fortes charges de travail.
  • Il

Les difficultés liées à l'industrialisation

Pourquoi l'industrialisation est-elle si difficile en comparaison avec la phase d'expérimentation ? Il y a, en réalité, plusieurs facteurs qui expliquent pourquoi aussi peu d'entreprises atteignent cette phase.

L'ingénierie logicielle est indispensable

Une des principales difficultés que l'on rencontre lorsqu'une équipe souhaite industrialiser un modèle de Machine Learning, c'est lorsqu'elle doit passer d'un environnement d'expérimentation (souvent un PC) à un environnement de production (plusieurs serveurs, bases de données, collecteurs de journaux dans une infrastructure).

Comme le souligne ce thread Reddit, il y a une grosse différence entre l'environnement du Data Scientist, qui utilise des notebooks Jupyter et des librairies haut-niveau comme pandas, et l'environnement de production, qui nécessite une conception logicielle propre à l'infrastructure et des techniques d'orchestration de processus.


À lire aussi : découvrez notre formation MLOps


Industrialiser un modèle de Machine Learning, c'est tout d'abord produire un code source documenté, optimisé et qui respecte les bonne pratiques. Ensuite, impossible de se soustraire au développement logiciel : le code doit être compréhensible, reproductible sur des environnements isolés et s'intégrer en tant qu'application ou micro-services. Cette intégration implique de créer des connexions avec d'autres services applicatifs déjà existant dans l'infrastructure.

Les performances se dégradent au fil du temps

Très souvent, le modèle construit a pour objectif de modéliser et reproduire un phénomène observé. Qu'il s'agisse de scoring, de tarification, de segmentation ou encore de catégorisation, la temporalité influence les données. Beaucoup de cas d'applications dans une multitude de secteurs ne peuvent se soustraire de cette tendance temporelle.

  • Les informations financières (indicateurs boursiers, marchés immobiliers) sont très volatiles et dépendent de la conjoncture actuelle.
  • Le scoring nécessite très souvent la temporalité comme variable explicative (la durée d'un trajet pour une application VTC va dépendre de l'heure et du jour de la semaine où l'on réserve un trajet).
  • Les données évoluent au cours du temps (une base de clients sera différente d'une année à l'autre).

Pour cela, il est nécessaire de mettre à jour le modèle avec des données plus récentes, puisque dans le cas contraire, l'information relative au temps ne serait plus captée lorsque les données sont de plus en plus éloignées de celles utilisées pour entraîner le modèle.

La solution consiste alors à automatiser les phases d'expérimentation et de production pour mettre à jour le modèle à partir de nouvelles données sans intervention manuelle. Mais cela nécessite des compétences plus poussées, aussi bien sur l'infrastructure hébergeant le modèle que sur le développement de code source.

Le modèle doit être hautement disponible

Lorsque les modèles sont déployés, ils sont amenés à servir des centaines de requêtes sur des intervalles de temps très courts.

Prenons une situation où le modèle nécessite 400 millisecondes pour effectuer une prédiction. En revanche, il reçoit 3 requêtes par seconde.

  • À partir de la première seconde, il accusera un retard de 200 millisecondes pour la troisième requête.
  • Dès la deuxième seconde, le retard sera monté à 400 millisecondes pour la sixième requête.
  • Au bout de 10 secondes d'exécution, le retard accumulé est de 2 secondes.

Cette situation est intenable, puisque le modèle ne serait plus en mesure de prendre en charge de nouvelles requêtes "à temps" et accuserait d'un retard très important.


À lire aussi : découvrez notre formation MLOps


Pour cela, l'infrastructure hébergeant le modèle doit être scalable : les ressources doivent pouvoir s'adapter automatiquement face à l'augmentation des demandes. Ainsi, l'intérêt de la scalabilité et d'exécuter plusieurs serveurs en parallèle

❓ Comment allons-nous être capable d'utiliser en même temps ces serveurs en parallèle ?

Pour être scalable, une méthode particulièrement utilisée est l'équilibrage de charge (ou load-balancing). Avec ces méthodes, chaque requête est redirigé automatiquement vers un des serveur en parallèle.

Load balancing

Articles similaires

Blog

20 sept. 2022

Machine Learning

Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

12 juil. 2022

Machine Learning

spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

4 juil. 2022

Machine Learning

Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article