MLOps: le secret pour un projet de machine learning réussi

Cycle de vie CRISP-ML(Q)

Félix Dumont
neoxia
Published in
9 min readSep 21, 2023

--

L’intelligence artificielle (IA), le machine learning (ML) et la science des données sont plus populaires que jamais. Nous en sommes témoins avec l’émergence de projets ML populaires comme ChatGPT et DALL-E. Malheureusement, c’est environ 85% des projets ML qui échouent et qui ne perdurent pas dans le temps. Un point commun dans l’échec de ces projets est le manque de rigueur dans les méthodologies proposées par le MLOps. Le MLOps c’est une extension des méthodologies DevOps et DataOps appliquées au machine learning et aux sciences des données.

Qu’est-ce que le MLOps?

Contexte

C’est au début des années 2000 que le MLOps a fait son apparition. Bien qu’il ait évolué depuis ses tout débuts, son objectif est le même : maintenir la fiabilité, la qualité et la performance des modèles ML en production. Voici les différentes périodes du MLOps :

  • Serveurs d’inférence propriétaire (avant 2000) : Pour implémenter une solution de machine learning, il fallait acquérir une licence propriétaire de logiciels (SAS, SPSS, FICO). Le machine learning est donc cher et très peu accessible.
  • Outils open-source de data science (2000–2015) : Des librairies Python et R (SciPy, scikit-learn, TensorFlow, etc.) font leur apparition et démocratisent la pratique du machine learning. Le machine learning est alors utilisé sous forme d’applications web légères mises en production. Cette approche manque de performance, de scalabilité et de robustesse.
  • Conteneurisation (2015–2018) : Les technologies de conteneurs (Docker, Kubernetes, etc.) et les clouds publics (AWS, Azure, GCP) permettent de résoudre les problèmes liés à la période précédente en termes de performance, de scalabilité et de robustesse.
  • Plateformes MLOps (2018-Aujourd’hui) : De nos jours, il existe des produits clé en main permettant d’entraîner, déployer et maintenir des modèles de machine learning. Le MLOps est encore à ses débuts et devrait continuer à évoluer d’ici les prochaines années.

Définition

Les pratiques MLOps sont orientées pour gérer tous les aspects d’un projet ML afin de maximiser sa viabilité sur le marché en mettant de l’avant la qualité, la fiabilité et la performance. Concrètement, le MLOps automatise et uniformise le cycle de vie des applications utilisant le machine learning.

Le processus itératif du MLOps exploite 4 sphères distinctes : la data, le machine learning, le développement et les opérations.

Le MLOps est basé sur 4 piliers méthodologiques:

  1. Intégration continue (CI) : Test et validation du code, des données et du modèle
  2. Déploiement continu (CD) : Déploiement automatique de nouveaux modèles ML
  3. Entraînement continu (CT) : Entraînement automatique de modèles avant leur déploiement
  4. Monitoring continu (CM) : Monitoring des données et des métriques de performance du modèle en production

Voici comment intervient le MLOps au sein de ChatGPT… selon ChatGPT :

Relation MLOps, DataOps et DevOps

Le MLOps et le DataOps sont des pratiques qui ont été inspirées très fortement du DevOps pour les opérations liées au machine learning et à l’analyse de données. Ces 3 concepts sont intrinsèquement liés.

  • Basé sur les méthodologies agiles : Prioriser la flexibilité et la rapidité d’adaptation
  • Série de courts cycles itératifs : Retour rapide des parties prenantes
  • Collaboration inter équipes (Data engineers, Data scientists, Développeurs, etc.) : Emphase sur la communication et la transparence
  • Automatisation des processus : Intégration continue et déploiement continu (CI/CD)
  • Standardisation et guide des meilleures pratiques : Meilleure compréhension et contrôle des processus

Cycle de vie : CRISP-ML(Q)

Pour standardiser les processus du MLOps en se focalisant sur l’assurance qualité, le cycle de vie CRISP-ML(Q) (CRoss-Industry Standard Process model for the development of Machine Learning applications with Quality assurance methodology) a été proposé par des experts. Ce cycle de vie permet de s’éloigner des méthodes ad hoc utilisées dans de nombreux projets. Le cycle de vie intègre le pipeline de donnée, le pipeline ML et le pipeline de développement logiciel.

Le cycle de vie CRISP-ML(Q) se divise en 6 phases :

  1. Compréhension des prérequis d’affaires et des données
  2. Ingénierie des données
  3. Ingénierie des modèles ML
  4. Assurance qualité et évaluation des applications ML
  5. Déploiement
  6. Monitoring et maintenance

Pour chaque phase, il est requis de suivre une structure de processus d’assurance qualité et de gouvernance :

  1. Définition des prérequis et contraintes de la phase : Performance, Qualité des données, etc.
  2. Identification des risques liés aux tâches de la phase : Biais, Overfitting, Reproductibilité, etc.
  3. Utilisation des méthodes d’assurance qualité pour mitiger les risques : Cross-validation, Documentation, etc.
  4. Documentation des tâches

1. Compréhension des prérequis d’affaires et des données

Cette première phase a pour objectif de comprendre le contexte d’affaire pour collecter et explorer les données.

1 .1 Contexte et faisabilité du projet

Cette étape doit permettre à l’ingénieur de traduire les prérequis d’affaire en solution ML. Il doit y avoir une collaboration entre toutes les parties prenantes.

  • Évaluation des risques et préparation d’un plan d’atténuation
  • Réalisation d’un POC (Proof Of Concept)
  • Création d’un canvas ML pour avoir une vision globale de la solution ML

1.2 Critères de succès et KPIs

On détermine des critères de succès et des indicateurs clés de performance (KPIs) clairs et mesurables. Un critère de succès est une métrique associée à un seuil de réussite. Ces mesures vont nous permettre tout au long du projet de prendre des décisions précises par rapport à l’état du modèle ML. Voici quelques exemples de métriques :

  • Fiabilité : Précision, Accuracy, Recall, F1-Score, etc.
  • Performance : Rapidité d’exécution, etc.
  • Scalabilité : Temps de réponse, Throughput, Utilisation du CPU, etc.

1.3 Collection de données

Cette étape consiste à amasser et générer toutes les données nécessaires. C’est depuis différentes sources (bases de données, data warehouse, etc.) que différents types de données sont collectés.

  • Conversion du format des données pour faciliter leurs manipulation
  • Utilisation de techniques de data augmentation pour créer artificiellement de nouvelles données
  • Toujours travailler sur une copie des données et garder les données originales telles quelles

1.4 Exploration et validation

L’exploration consiste à effectuer un profilage sur les données et en ressortir des statistiques intéressantes (moyenne, mode, médiane, etc.). La validation consiste à vérifier et documenter la qualité du dataset en vérifiant la présence de valeurs manquantes, de données aberrantes ou d’erreurs.

  • Utilisation d’un notebook pour conserver les traces des explorations
  • Création de visualisations pour représenter les distributions
  • Analyse de la corrélation entre les features (matrice de corrélation)

1.5 Outils

2. Ingénierie des données

Cette phase a comme objectif d’obtenir des données de qualité et de créer des datasets d’entraînement, de validation et de test pour le développement du modèle ML. Cette phase est donc cruciale pour les phases à venir puisque la qualité des données a un lien direct avec la performance du modèle ML (“Garbage in, garbage out”). La majorité du temps passé sur un projet ML sera alloué à cette phase.

2.1 Nettoyage et préparation des données

Le nettoyage des données consiste à transformer le schéma de données à l’aide de scripts en formatant et restructurant les features en utilisant des techniques de features engineering.

  • Traitement des données manquantes
  • Retrait de features inutiles
  • Normalisation des données
  • Transformation mathématique (log(x), sqrt(x), x²)

2.2 Séparation de données

Le but de la séparation des données est d’obtenir 3 datasets : entraînement, validation et test. En général, le ratio entraînement:validation:test est de 80:10:10. Différents ratios existent selon différents contextes et selon la quantité de données disponibles. Par exemple, pour un plus petit échantillon de données, le ratio 70:15:15 peut être pertinent.

2.3 Outils

  • Apache Spark : Outil de calcul et d’analyse de données distribué
  • NumPy : Librairie python facilitant la manipulation de matrices

3. Ingénierie de modèles ML

Cette phase a comme objectif de sélectionner, spécialiser et d’entraîner des modèles qui vont répondre aux critères de succès établis dans la première phase.

3.1 Reproductibilité

La reproductibilité est importante, car elle démontre que les résultats obtenus sont exacts. Pour augmenter la reproductibilité d’un modèle, il est recommandé de collecter et documenter :

  • Les metadatas des algorithmes utilisés
  • Les différents datasets d’entraînement, de validation et de test
  • Les hyper-paramètres

3.2 Processus

Puisque le développement est itératif, le modèle est réajusté selon les données, les objectifs d’affaire et les critères de succès. Il est donc important d’automatiser le processus de cette phase dans un pipeline pour facilement répéter l’entraînement.

  • Comparaison des performances des différents modèles
  • Réglage des hyper-paramètres avec du cross-validation
  • Utilisation des méthodes ensemblistes (majority vote, bagging, boosting, stacking)

3.3 Outils

  • SKLearn : Librairie python pour l’entraînement de modèles ML
  • AWS SageMaker : Plateforme complète de ML dans AWS (Article sur AWS SageMaker)

4. Assurance qualité et évaluation pour application ML

Cette dernière phase avant le déploiement a pour objectif de s’assurer de la qualité des modèles.

4.1 Évaluation et test du modèle

On évalue les performances des solutions finales à l’aide d’un dataset dédié aux tests jamais vu par les modèles pour vérifier leur généralisation. Grâce aux résultats de l’évaluation, on détermine la réussite ou non des critères de succès. Si les résultats des tests ne sont pas satisfaisants, il est nécessaire de retourner aux étapes précédentes pour rectifier les problèmes. Si tous les critères de succès sont remplis, on peut déployer le modèle.

4.2 Outils

  • Matrice de confusion : Résumé des résultats de prédiction pour une tâche de classification

5. Déploiement

La phase de déploiement dans un environnement de production a une grande importance dans le succès de la solution. Beaucoup de projets ML ne se rendent même pas à cette phase. C’est pourtant souvent le déploiement qui va permettre au modèle d’être utilisé.

5.1 Architectures ML

L’architecture du projet et son utilisation auront une influence importante dans les décisions de déploiement. Les différentes architectures sont basées sur le type d’entraînement et de prédiction utilisés :

Entrainement

  • Offline : Le modèle a déjà été entraîné avec des données historiques. Le modèle reste donc constant dans le temps jusqu’à ce qu’une nouvelle version soit déployée après un ré-entraînement.
  • Online : Le modèle est régulièrement ré-entraîné avec de nouvelles données réelles.

Prédiction

  • Batch : Le modèle effectue au préalable une série de prédictions sur des données en entrée choisies stratégiquement.
  • Real-time : Le modèle effectue la prédiction en temps réel avec des données disponibles au moment de la requête.

5.2 Patrons de model serving

Dans un projet ML, le déploiement du modèle se nomme le model serving. Il existe différents patrons de model serving qui sont utilisés selon l’architecture du projet.

  • Model-as-service : Le modèle est un service indépendant
  • Model-as-dependency : Le modèle est utilisé sous la forme de package (ex : .jar) comme dépendance dans une application.
  • Model-on-demand : Le modèle est utilisé comme dépendance au runtime. Le système utilise un système de queue pour faire les requêtes au modèle.
  • Hybrid-serving : Le modèle est déployé sur un serveur central et l’appareil des utilisateurs. Le modèle est ré-entraîné sur l’appareil des utilisateurs pour un modèle plus personnalisé.

5.3 Packaging du modèle

Le packaging a comme objectif d’exporter le modèle et ses dépendances dans un environnement de production. Il existe deux technologies populaires pour le packaging de modèles ML : les containers et les fonctions serverless.

Containers

  • Testing plus facile : même conteneur en local qu’en production
  • Plus grande portabilité : pas de dépendance à un fournisseur cloud

Fonctions serverless

  • Scalabilité et maintenance automatisées par le fournisseur
  • Coûte moins cher : on paie pour nos besoins

6. Monitoring et maintenance

Cette dernière phase a comme objectif de s’assurer que les performances du modèle sont persistantes dans le temps. Il est normal que les modèles dérivent et qu’ils ne soient plus à jour puisqu’ils sont entraînés sur des données historiques et qu’ensuite ces modèles évoluent dans des environnements dynamiques. Le monitoring doit être fait continuellement pour pouvoir réagir si le modèle doit être ré-entraîné.

  • Suivi des métriques utilisées pour les critères de succès
  • Collection de nouvelles données et ré-entraîner le modèle avec ces données
  • Entraînement continu et monitoring continu (CT/CM)

6.1 Outils

  • Amazon SageMaker Model Monitor : Plateforme de monitoring pour des modèles ML
  • Grafana + Prometheus : Dashboard de monitoring

Conclusion

En conclusion, les méthodologies du MLOps permettent de maximiser les chances de succès de son projet ML. Le cycle de vie CRISP-ML(Q) a été mis en place pour faciliter l’adoption de ces méthodologies avec un processus clair en 6 phases :

  1. Compréhension des prérequis d’affaires et des données
  2. Ingénierie des données
  3. Ingénierie des modèles ML
  4. Assurance qualité et évaluation des applications ML
  5. Déploiement
  6. Monitoring et maintenance

Chacune de ces phases a son importance et ne doit pas être négligée. Il faut faire preuve d’agilité tout au long du processus et suivre les meilleures pratiques pour atténuer les risques. En parallèle, tout au long du cycle de vie de notre projet ML, il est de notre responsabilité de suivre les bonnes pratiques de l’IA verte, car les phases d’entraînement et de déploiement ont un impact considérable sur l’environnement.

--

--