Dans un précédent article, nous présentions la philosophie DevOps, et comment cette nouvelle approche permet une livraison de valeur plus rapide pour les entreprises au travers de l’unification des équipes de développement (Dev) et des opérations (Ops), qui travaillaient préalablement en silos. Dans cet article, nous allons nous intéresser à l’application de cette approche dans le cadre de problématiques de Machine Learning: on parle de MLOps.
Retour sur le Devops
Le DevOps permet une réduction du time to market ainsi qu’une amélioration de la qualité des produits logiciels grâce à 3 principes:
- Désilotage : les équipes de développement et les opérations doivent travailler de concert, vers un objectif commun, en partageant toute l’information.
- Automatisation : Tout ce qui est automatisable doit l’être : build, test, déploiement. Ceci dans un double objectif de réduction du temps nécessaire au déploiement et du nombre de non-qualités, les étapes manuelles étant propices aux erreurs humaines.
- Monitoring : récolter et surveiller les métriques importantes, à la fois côté métier (nombre d’utilisateurs connectés, nombre de commandes, etc.) et côté opérations (pourcentage d’utilisation CPU / RAM des serveurs, nombre d’erreurs, etc.)
Suite à l’adoption massive du DevOps et à l’augmentation significative de l’utilisation du Machine Learning et de l’IA en entreprise, les concepts DevOps ont été repris dans les projets data. Si les objectifs et principes restent globalement les mêmes, certaines spécificités propres aux machine learning ont nécessité la création d’une approche propre : le MLOps.
Qu’est ce que le MLOps ?
Selon une documentation de google :
MLOps est une culture et une pratique d’ingénierie ML qui vise à unifier le développement (Dev) et les opérations (Ops) des systèmes de ML.
Afin de comprendre ce qu’est le MLOps, nous allons nous attacher à saisir les différences avec le DevOps classique :
- Développement expérimental : par nature, tous les projets ML suivent un développement non linéaire : différents preprocessing, feature engineering et algorithmes sont testés, jusqu’à ce qu’une performance suffisante soit atteinte. Garder une trace de ce qui a été expérimenté et de ce qui a ou non fonctionné peut s’avérer complexe. C’est pourtant crucial pour réduire le temps de développement, notamment dans le cas de grosses équipes, afin d’éviter de tester à nouveau des approches qui auraient déjà été expérimentées sans succès par un autre data scientist.
- Dérive conceptuelle : à la différence d’un produit logiciel classique, un système de ML peut voir sa performance varier (et la plupart du temps décliner) au cours du temps, sans qu’il y ait eu de modification dans le code ou l’infrastructure. Ceci est dû au phénomène de dérive conceptuelle, dans lequel les relations entre la variable à prédire et les variables explicatives vont évoluer de manière imprévue. Il est donc indispensable de suivre l’évolution de la performance des modèles de ML en production, et potentiellement d’implémenter une stratégie de réapprentissage automatique afin de « re-calibrer » le modèle lorsque sa performance diminue. On peut notamment citer l’exemple de Google Flu Trends, un projet de Google qui devait permettre d’estimer le nombre de cas de grippe à partir des recherches effectuées sur le moteur de recherche, mais qui montra ses limites en surestimant largement le nombre de cas au bout de quelques années d’exploitations.
- Équipe : Dans la plupart des organisations, les équipes data transverses ou intégrées dans différents départements métier sont relativement jeunes et manquent de ressources qualifiées pour gérer le déploiement et le maintien en condition opérationnelle de systèmes ML complexes. En effet, ces équipes se composent généralement principalement de data scientists qui se concentrent sur le développement des modèles de machine learning, mais n’ont pas les compétences nécessaires pour gérer le déploiement et la maintenance d’applications complètes. De plus, les équipes data évoluent encore trop souvent en silo, sans communiquer avec les différentes équipes techniques avec lesquelles elles devraient interagir pour mettre en production leurs modèles.
Ces spécificités et complexités inhérentes aux projets data expliquent en partie pourquoi, alors que de plus en plus d’entreprises investissent massivement dans le machine learning et l’IA, très peu de modèles sont effectivement déployés en production. Selon une étude menée par Algorithmia en 2020, 55% des entreprises engagées dans l’IA n’ont jamais réalisé de passage en production.
Le MLOps a donc pour objectif de pallier ces difficultés afin de permettre le déploiement et le run des systèmes ML, et ce en appliquant des principes similaires au DevOps :
- Monitoring : Le monitoring prend encore de l’importance dans la philosophie MLOps, en run (notamment en collectant les métriques de performance des modèles afin de détecter les dérives conceptuelles), comme au stade de développement (pour traquer les différentes expérimentations et leurs résultats).
- Culture : les équipes data doivent également travailler avec les autres équipes techniques (les opérations mais également les équipes développant les produits logiciels avec lesquels les modèles de ML doivent s’intégrer)
- Automatisation : En plus des étapes classiques (build, test, deploy), le MLOps prône l’automatisation des tâches propres à la maintenance des systèmes ML, comme le réapprentissage des modèles. Après que les modèles sont entraînés, ils doivent également être automatiquement déployés.
Pour aider les équipes data à adopter une approche MLOps, de plus en plus d’outils ont été développés. On pourra notamment citer MLflow, Metaflow, Kubeflow.
Mais pour pleinement réussir son virage MLOps il faudra avant tout casser les silos entre les opérations et les équipes data, et s’assurer que celles-ci disposent de ressources nécessaires (Data Engineers, Machine Learning Engineers). En effet, les Machine Learning Engineers sont des profils expérimentés qui disposent à la fois d’une expertise en machine learning (modélisation statistique, deep learning, etc.) mais aussi de compétences en développement logiciel, data engineering, et en passage en production des modèles de ML.
Vous souhaitez devenir MLOps ? N’attendez plus, découvrez notre formation MLOps !