MLOps - quand le DevOps rencontre le machine Learning

16 décembre 2023 15:58 dans audit-et-conseils / cloud-hebergement / data-pipelines / publications

Le MLOps, également connu sous le nom de DevOps appliqué au Machine Learning, est une approche pluridisciplinaire conçue pour intégrer le développement de modèles de machine learning (ML) et leur mise en œuvre pratique.
Cette pratique s'inspire des principes du DevOps, comme l'intégration et la livraison continue, ainsi que l'automatisation des processus informatiques, et les adapte spécifiquement au domaine du machine learning.

Slider Image

 

1/ Définition du MLOps

Le MLOps, également connu sous le nom de DevOps appliqué au Machine Learning, est une approche pluridisciplinaire conçue pour intégrer le développement de modèles de machine learning (ML) et leur mise en œuvre pratique.
Cette pratique s'inspire des principes du DevOps, comme l'intégration et la livraison continue, ainsi que l'automatisation des processus informatiques, et les adapte spécifiquement au domaine du machine learning.

MLOPS shéma de présentation des principes

MLOps est une culture et non seulement un outil. Au même titre que le DevOps, l’idée n’est pas que d’utiliser un tooling, mais d’adopter un ensemble de pratiques pour créer le modèle, et le livrer. Il ne s’agit pas de créer des modèles par Data Scientists, qui donnent leur code à un data engineer puis à un Devops SRE pour shipper le code. Cela nécessite d’adopter un ensemble de principes, qui permettront d’aller en production le plus rapidement possible sans créer de la dette technique.

Excellente vidéo conférence :https://www.youtube.com/watch?v=yYs_MYn4RQQ

2/ Principes MLOPS

Le cycle de vie du machine learning commence par la collecte et le traitement des données, suivi de l'entraînement et la validation des modèles sur ces données. Une fois le modèle optimal sélectionné, il est testé et déployé en production. Le processus se poursuit avec la surveillance continue et l'ajustement périodique du modèle pour garantir sa pertinence et son efficacité face à l'évolution des données et des besoins.

Machine Life Cycle
Machine Learning Lifecycle

Culture MLOps:

De la même façon que la culture DevOps où les administrateurs et développeurs travaillent de concert, il est important de rassembler les dataScientist et les Data Engineers (ils ne doivent plus travailler en silo). L'équipe MLOps doit adopter une mentalité et un ensemble de pratiques spécifiques pour la création et la livraison de modèles. Il est essentiel d'embrasser certains principes qui favoriseront une mise en production rapide, tout en évitant l'accumulation de dette technique.

Automatisation :

En plus des étapes traditionnelles telles que la construction, le test et le déploiement, le MLOps encourage l'automatisation des tâches spécifiques à la gestion des systèmes ML, telles que le réentraînement des modèles. Il est également essentiel que, une fois formés, les modèles soient déployés de manière automatique.

Modèle pipeline

Vous utilisez une séquence avec des étapes data processing qui aboutit sur un modèle d’entraînement.

  • Comment puis-je facilement stocker et versionner les “artefacts” ensemble ?
  • Comment facilement paramétrer tout cet ensemble d’étapes ?
Modele Pipeline - ML OPS
Légende : Modele Pipeline - ML OPS

Il existe plusieurs frameworks pour gérer les modèles pipeline que vous pouvez utiliser.  La plupart propose des applications au delà du modèle, voir même propose des fonctionnalités pour le domaine du  Data Engeneering.

Voici quelques exemples d’outils (pour la plus part open source !) :

Le registre de modèles

Un registre de modèles est un stockage central où une couche méta au-dessus d'un composant de stockage qui vous permet d'enregistrer et/ou de stocker votre modèle. Mais il y a plus à cela

Shéma Modèle de Registre - MLOps

Typiquement, le registre de modèles vous aidera à :

  • Garder une trace des différents modèles et leurs versions,
  • Centraliser la collecte de meta-information de modèles (ex : quelles datas ont été utilisées pour entraîner le modèle),
  • Facilement approuver/refuser et promouvoir une version de modèles,
  • Lier vos expérimentations aux résultats du modèles
  • Exposer et partager les artifacts des modèles de façon transparente…

Il existe aujourd’hui de nombreuses solutions open source & propriétaires spécialisées pour gérer les registres de modèles qui offrent de nombreuses fonctionnalités avancées.

Voici quelques exemples :

Les experiments

L’ensemble des projets ML suit un développement non linéaire  : en effet ils nécessitent plusieurs étapes dans le processus de développement (algorithmes, qualification de la data, ajout de feutre, …) pour atteindre une performance suffisante. Garder une trace de ces expérimentations pour savoir ce qui a fonctionné ou non peut être complexe mais reste crucial pour réduire le temps de développement des équipes. Ces expérimentations tracées, permettent à de grandes équipes de travailler à plusieurs, de reprendre le travail des autres, de gagner du temps (vélocité) et garantissent la reproductibilité.

    Mesurer le drift :

    Un modèle peut voir ses performances se dégrader dans le temps. Ce phénomène est attribué à la « dérive conceptuelle (Drift) » : en effet les données sur lesquelles ils ont été entraînés ne reflètent plus les conditions actuelles ou les nouveaux schémas dans les données réelles. Cela nécessite une mise à jour ou un réentraînement périodique du modèle pour maintenir sa précision. Par conséquent, il est crucial de surveiller la performance des modèles de ML déployés et, si nécessaire, d'adopter une stratégie de réapprentissage automatique pour réajuster le modèle en cas de baisse de performance.

    3/ Niveau de maturité des équipes MLOps

    Le modèle de maturité MLOps vise à établir clairement les principes et les pratiques, tout en repérant les éventuelles insuffisances dans une mise en œuvre de MLOps.

    Ce modèle sert également à montrer au client la manière d'accroître progressivement ses compétences en MLOps, sans avoir à tout entreprendre simultanément.

    Il est recommandé que le client suive ce modèle comme une feuille de route pour :

    • Évaluer l'ampleur des travaux nécessaires pour le projet ;
    • Définir des critères de réussite ;
    • Identifier les produits à livrer.

    Ce modèle de maturité MLOps décrit cinq niveaux de compétence technique.

    Shéma de maturité MLOps
    Légende : Schéma de maturité MLOps (désolé pour le correcteur d'orthographe, je n'ai pas réussi à le désactiver :)

    Source :
    https://learn.microsoft.com/fr-fr/azure/architecture/ai-ml/guide/mlops-technical-paper
    https://learn.microsoft.com/fr-fr/azure/architecture/ai-ml/guide/mlops-maturity-model

    Level 0 : Pas d’Ops

    • Pas d'automatisation
    • Le code est dans Jupyter / notebooks
    • En gros en état de POC
    • Souvent du code jetable non maintenable (oneshot)

    Level 3 : Modèle de déploiement automatisé

    • Les modèles sont faciles à déployer
    • A/B Testing : possibilité de déployer plusieurs modèles et de les comparer
    • Monitoring sur les modèles / des KPi de performance

      Level 1 : DevOps mais pas de MLOps

      • les releases sont automatisées
      • Unit tests
      • CI/CD mise en place
      • Ops metrics
      • Pas de reproductibilité des “models”
      • Pas de tracking sur les “experiments”
      • Il y a une séparation entre les Data Scientists et Data Engineer

       

      Level 2 : Apprentissage automatisé
      (Automated training - conseillé à partir de 2-3 Models use cases)

      • Training pipeline
      • Utilisation des experiments
      • Model registry
      • Pas de friction lors du déploiement du modèle
      • Les DS travaillent avec les ingénieurs

      Level 4 : Opérations automatisées (MLOps complet)

      • Auto scale up / ressources management
      • Training pipeline complet
      • Mode de déploiement entièrement automatisé
      • Real time monitoring

       

       

       

       

      Il existe d'autres modèles de maturité : Google et Redhat distinguent 3 cas:

      • Level 0 : pas automatique (pas d'OPS - processus manuel )
      • Level 1 : semi-automatique (pipelines)  - automatisation du pipeline de  ML
      • Level 2 : automatique (CI/CD + pipelines) - automatisation du pipeline CI/CD

      En savoir plus :

      Conclusion

      Mettre en place une architecture MLOps s'avère complexe. Cela nécessite de bien comprendre les enjeux d'automatisation des équipes DataScientist et Data Engineers. Pour le réussir, il faut que l'ensemble de l'équipe adopte ce mindset.

      Cela passe en priorité par casser les silos entre les DataScientists et les Data Engineers, leur faciliter la tâche au quotidien et automatiser au maximum l'entraînement des modèles et de la data pipeline. C'est un chemin complet qu'il faudra suivre pas à pas, pour ne pas détériorer la vélocité de l'équipe. Trouver cet équilibre, c'est aussi comprendre où se situe la maturité de l'équipe.

      La clé de succès repose sur la mise en place d'un registre de modèles et d'un modèle pieline, qui garantiront à l'équipe la reproduction des modèles, la traçabilité et la réduction des frictions lors des entrainements et le déploiement des modèles.

      L'écosystème MLOps est devenu mature. Il existe de nombreuses solutions (pour la plupart open source) MLOPS telles que : DVC, ML Flow, KubeFlow, Neptune ou chez les Cloud Vendors (SageMaker, vertex, ...) Chacun de ces outils peuvent répondre aux problématiques de l'équipe, en fonction de son niveau de maturité.

      Enfin il est crucial de fournir les ressources adéquates, notamment des Data Engineers et des Machine Learning Engineers. Les Machine Learning Engineers, en particulier, sont des professionnels expérimentés possédant une expertise en machine learning (comme la modélisation statistique et le deep learning) et des compétences en développement de logiciels, en ingénierie des données, ainsi qu'en déploiement de modèles de ML en production.

      Si vous avez un projet MLOps, n'hésitez pas à nous contacter pour vous accompagner dans cette démarche. Notre équipe pourra vous aider dans toutes les étapes de ce processus.

      Auteur : Roger Fernandez (société Emencia)

      Ressources  :

      What is MLOPS ?​

      REX (Retour d’Experience)  : ​

      Tutorial​

      https://github.com/DataTalksClub/mlops-zoomcamp : Excellents tutoriaux sur le MLOPS avec des exemples sur MLFLOW​
       

      Articles associés

      27 novembre 2023
      Python 3.12 : Le multi-threading réel et ses impacts

      Python est un langage au typage dynamique et qui fournit une gestion automatique de l'allocation mémoire.

      Utiliser une IA locale pour documenter du code

      La puissance des modèles de language open source augmente, ouvrant des possibilités nouvelles. Dans cet exemple nous allons utiliser Mistral 7B instruct, un des meilleurs modèle de taille modeste à ce jour, pour générer des docstrings pour du code Python. Un avantage essentiel de cette technique est qu'elle permet de garder le code privé, rien n'est envoyé sur des plateformes externes, assurant une confidentialité compatible avec une utilisation en entreprise.

      LocalLm : une IA locale en Python

      Face à ChatGPT et autres large language models (LLM) fermés, des alternatives open source se développent. De plus en plus de models open source font leur apparition : les Llama, Mistral et autres Falcon et consorts. Cet écosystème émergent permet d'envisager une utilisation interne en entreprise, hors plateformes géantes. Même si les coûts et la technologie restent incertains et en constante évolution, une telle approche permet de préserver la confidentialité des données, en ne les envoyant pas sur des plateformes externes.

      Utiliser une IA locale dans Django

      Ceci est une introduction l'IA prend de plus en plus de place, de plus en plus vite. Depuis quelques temps a émergé un mouvement open source autour notamment de Llama.cpp.

      Django et IA locale : connecter Langchain

      Prototyper un dashboard dans Django avec Jupyter Lab

      29 novembre 2012
      Sortie de Django 1.5 beta 1

      La communauté Django a annoncé mardi dernier (27 novembre) la sortie de Django 1.5 beta 1, dans le cadre de la sortie prochaine de Django 1.5.La sortie finale de Django 1.5 étant prévue pour décembre prochain, cette version beta  va ainsi donner un avant-goût des nouvelles features de Django 1.5 ...