La Gouvernance des Projets ML : Clé d’un Succès Durable
1 novembre 2024Le machine learning n’est plus une simple tendance technologique ; il est devenu un levier stratégique pour les entreprises cherchant à innover et à rester compétitives. Pourtant, derrière chaque succès éclatant se cachent des projets avortés, des surcoûts imprévus, et des ambitions qui n’ont jamais vu le jour. Alors, qu’est-ce qui distingue les projets de machine learning qui triomphent de ceux qui échouent ?
La réponse réside dans une combinaison de facteurs clés : une vision claire, une maîtrise technique, une collaboration interdisciplinaire et, surtout, une méthodologie structurée. Que vous soyez novice dans ce domaine ou que vous cherchiez à affiner vos pratiques, cet article vous guidera à travers les étapes essentielles pour mener votre projet de machine learning vers le succès
Un projet de machine learning se divise en trois phases principales :
- La phase de développement, dédiée à l'entraînement des modèles.
- La phase de déploiement, où les modèles sont intégrés dans des systèmes opérationnels.
- La phase de monitoring, qui consiste à surveiller et évaluer les performances des modèles en production.
Pour soutenir ces étapes, deux environnements distincts sont nécessaires :
- Un environnement sandbox, conçu pour l'entraînement, avec un accès contrôlé aux données de production.
- Un environnement de production, destiné au déploiement des modèles et à leur suivi en conditions réelles.
Ces environnements assurent une séparation claire des tâches et garantissent à la fois sécurité et efficacité dans la gestion du projet.
Nous allons parcourir ensemble ces trois phases et détailler les processus à mettre en place dans chacun d’eux afin de garantir le bon fonctionnement et la bonne prédiction de nos modèles en environnement de production.
Phase de développement
- Conception des données : Bien que cela semble évident, il est crucial de commencer par une analyse approfondie des données pour s'assurer que celles utilisées pour l'entraînement reflètent fidèlement celles qui seront rencontrées en production. Que ce soit en phase de développement ou de production, il est indispensable de vérifier la légalité, la pertinence et la qualité des données.
Une fois cette étape réalisée, il convient de concevoir un modèle de données détaillé, qui servira de référence commune à toutes les parties prenantes du projet, notamment les équipes de Data Engineering, Data Analysis, le comité de validation, les équipes techniques et les MLOps.
Après avoir identifié et validé les données, la première étape consiste à diviser le dataset en deux ensembles bien distincts : un dataset d'entraînement et un dataset de test. Il est impératif que le dataset de test ne soit jamais utilisé durant l'entraînement, car il sera exclusivement dédié à la validation finale du modèle.
Enfin, lors du traitement des données, une attention particulière doit être portée à l’inspection et à l’application des techniques de nettoyage, de normalisation, ainsi qu’à la gestion des valeurs manquantes ou aberrantes. Ces étapes garantissent la qualité et la robustesse des données pour un entraînement efficace du modèle.
- Performance du modèle : Dès le lancement du projet, il est essentiel d'identifier les métriques techniques et fonctionnelles qui serviront à valider la performance du modèle. Cela inclut l’évaluation des algorithmes choisis, l’ajustement des hyperparamètres et l’utilisation appropriée des méthodes de validation croisée.
Un comité de validation doit être mis en place pour approuver officiellement le modèle final une fois celui-ci sélectionné, garantissant ainsi sa conformité aux exigences définies et sa pertinence pour les objectifs du projet.
- Code de développement : Veillez à ce qu’au moins 80 % du code soit couvert par des tests afin de garantir sa fiabilité et assurez-vous que le projet est entièrement reproductible. La reproductibilité permet à tout data scientist d'exécuter le code sur n'importe quelle machine, indépendamment de son environnement. Pour cela, des outils comme DVC (Data Version Control), que j’ai souvent utilisé dans mes projets, s’avèrent précieux pour maintenir cette exigence.
Documentez l’intégralité du code et rédigez un README clair et concis, expliquant les choix effectués durant la phase de développement. Cela facilite la compréhension et l’adoption du projet par d’autres parties prenantes.
Enfin, utilisez des outils de linting pour analyser la qualité du code, détecter les failles de sécurité potentielles, et vérifier la conformité des bibliothèques utilisées. Des outils comme Ruff, Black, Isort, Flake8, Mypy, Bandit, Safety, et pip audit sont particulièrement efficaces pour garantir un code propre, sécurisé et conforme aux bonnes pratiques.
Phase de déploiement
- Intégration et sécurité : Développer une chaîne d’intégration et de déploiement (CI/CD) afin de limiter l’intervention humaine au maximum lors de la phase de déploiement. Que ce soit pour le développement d’API ou pour le développement de projet BATCH, il faudra s’assurer que le code soit testé à 80% avec l’implémentation des tests unitaires mais aussi développer des tests d’intégration et des tests fonctionnelles qui garantissent la conformité des résultats du modèle avec ceux enregistrés lors de la première phase. La mise en production du modèle de machine learning se doit d’être accompagnée du développement d’un modèle de validation de données, cela garantit l’intégrité de la donnée reçue et s’assure que le modèle reçoit bien la donnée attendue par ce dernier.
- Scalabilité : La première étape serait d’identifier les clients potentiels et de les sizer. Ceci nous permet d’avoir une idée sur la charge que devra supporter notre modèle en production afin de garantir un temps de réponse raisonnable. Des tests de charge devront être mis en place afin de tester dans de réels conditions les projets en production. Locust est un excellent outil qui permet d’effectuer ce genre de tests. En fonction des résultats, nous pourrons sizer notre consommation en RAM et CPU et décider de scaler horizontalement et/ou verticalement en fonction du besoin.
Phase de monitoring
- Monitoring en continue : Il est important de monitorer en continue les modèles. Une routine de récupération des inférences émises par nos modèles en temps réel doit être implémentée. Derrière cette récupération les parties prenantes au projet pourront :
-
- Développer le monitoring en surveillant un potentiel drift de la donnée en production par rapport à la donnée d'entraînement.
- Développer des dashboard pour suivre en temps réel les métriques de performance (techniques et fonctionnelles)
- Implémenter une logique de récupération de la donnée afin d’instaurer un processus de continuous train
- Documenter et analyser les incidents pour prévenir de futures erreurs ou problèmes.
-
Plusieurs outils open source existent dans le marché (ML Flow, weights & biases, qwak, vertex AI, whylabs, evidentlyAI, neptuneAI, fiddler…)
Envie d’implémenter une logique en interne ? Cela est aussi possible avec Streamlit, PowerBI, Gradio, Dash, Panel, Anvil