cours
MLOps vs DevOps : Différences, chevauchements et cas d'utilisation
Les entreprises sont de plus en plus désireuses d'intégrer l'apprentissage automatique dans leurs produits ou d'améliorer leurs processus à l'aide de l'apprentissage automatique. Par conséquent, il est plus important que jamais de comprendre comment naviguer dans ses complexités parallèlement aux logiciels traditionnels.
DevOps a été mis en place pour relever les défis liés au développement de logiciels. Il vise à supprimer les cloisonnements entre les équipes de développement de logiciels et les équipes d'exploitation, ce qui permet d'accélérer le déploiement de nouvelles fonctionnalités et de rendre moins pénibles les mises en production de ces fonctionnalités dans l'environnement de production.
MLOps s'appuie sur ces principes mais relève des défis uniques en matière de ML, tels que des ensembles de données massifs et évoluant rapidement, des modèles qui doivent faire l'objet d'un cursus et d'une version, et un suivi pour relever des défis tels que la dérive des données ou la dérive des concepts.
Si les deux disciplines partagent des principes communs, elles diffèrent fortement en termes d'orientation, de flux de travail et d'outils.
Dans cet article, nous allons explorer DevOps et MLOps, en soulignant leurs similitudes et leurs différences et en indiquant quand utiliser telle ou telle approche. Nous examinerons également les flux de travail typiques et les outils à utiliser pour les différentes étapes de ces flux.
Commençons !
Qu'est-ce que DevOps ?
DevOps est une méthodologie d'ingénierie logicielle inventée pour accélérer le processus de développement et de livraison de logiciels. L'objectif principal est d'améliorer la collaboration entre les équipes de développement et d'exploitation. Il comble le fossé entre ces fonctions traditionnellement cloisonnées et permet une livraison plus rapide et plus fiable des logiciels.
Ainsi, DevOps veut créer une culture de collaboration et automatiser autant que possible pour améliorer l'efficacité globale et la rapidité avec laquelle de nouvelles fonctionnalités logicielles peuvent être livrées.
Aujourd'hui, de grandes entreprises telles que Meta, Amazon et bien d'autres peuvent fournir quotidiennement de nouvelles fonctionnalités logicielles grâce à DevOps.
Si vous souhaitez vous familiariser avec ce domaine, je vous recommande le cours Introduction à DevOps.
Les principaux objectifs de DevOps sont les suivants :
- Cycles de développement de logiciels plus rapides : Réduisez le délai entre la publication et le déploiement d'une nouvelle fonctionnalité pour obtenir des cycles de publication plus rapides tout en maintenant la stabilité.
- Intégration continue ettrès(CI/CD) : Automatisez l'intégration du code, les tests et les pipelines de déploiement pour améliorer la livraison.
- Amélioration de la collaboration: Encourager une communication étroite entre les équipes de développement de logiciels et les équipes opérationnelles.
- Efficacité opérationnelle: Réduisez les tâches manuelles, minimisez les erreurs et augmentez la productivité grâce à l'automatisation.
Le DevOps comprend les éléments de base suivants :
- Pipelines CI/CD:
- Automatisation des tests, de la construction et du déploiement du code.
- Boucles de rétroaction plus rapides pour les développeurs.
- Réduction des erreurs et augmentation de la stabilité.
- Infrastructure as Code (IaC):
- Gérer l'infrastructure par le biais du code plutôt que par des processus manuels.
- Assurer la cohérence et la stabilité.
- Une nouvelle infrastructure peut être mise en place en quelques secondes et sans effort manuel.
- Surveillance et observabilité:
- Cursus des performances du système et de l'état des applications en temps réel.
- Identifier et résoudre les problèmes le plus tôt possible.
Il existe des outils standardisés qui aident à mettre en œuvre les composants de base de DevOps. Voici quelques-unes des plus populaires :
- Outils CI/CD: Jenkins, GitLab CI/CD, CircleCI.
- Outils de l'IaC: Terraform, Ansible, Chef, Puppet.
- Conteneurisation et orchestration: Docker, Kubernetes.
- Outils de surveillance: Prometheus, Grafana, Datadog.
Qu'est-ce que le MLOps ?
MLOps étend les principes de DevOps tout en partageant l'objectif commun d'automatiser les processus. MLOps consiste en des pratiques conçues pour déployer et maintenir l'apprentissage automatique en production de manière continue, fiable et efficace.
L'élément essentiel ici est qu'il se concentre sur l'apprentissage automatique en production, et non sur des modèles formés sur des machines locales pour de petites expériences.
Les MLOps peuvent automatiser et rationaliser toutes les étapes du cycle de vie des projets d'apprentissage automatique.
Cycle de vie d'un projet d'apprentissage automatique. Image par l'auteur
Mais pourquoi avons-nous besoin de MLOps en premier lieu ? Pourquoi devrions-nous investir des efforts supplémentaires pour mettre en place des flux de travail et des processus propres ? Soyons honnêtes : Cela représente beaucoup d'efforts supplémentaires au départ, et les développeurs pourraient être tentés de l'ignorer pour déployer rapidement un modèle en production. Toutefois, cette approche comporte des risques.
Comme dans le cas du développement traditionnel de logiciels, le fait d'ignorer les processus propres et les meilleures pratiques dès le début entraîne une complexité croissante et une maintenabilité réduite au fil du temps.
Ce problème est encore plus important dans les systèmes de ML en raison des défis uniques que représentent la gestion des dépendances des données, l'évolution des modèles et les boucles de rétroaction.
Comme le souligne l'article influent"Hidden Technical Debt in Machine Learning Systems",les systèmes d'apprentissage automatique accumulent une dette technique que les logiciels traditionnels n'ont pas.
Ainsi, sans les principes MLOps, le coût du remaniement ultérieur d'un système de ML ingérable dépasse souvent l'effort requis pour construire un flux de travail robuste.
Je vous recommande l'excellent cours MLOps Concepts si vous souhaitezen savoir plus sur ce domaine.
Les principaux objectifs des MLOps sont les suivants :
- Automatisation du cycle de vie des ML : Simplifiez les processus tels que la collecte de données, la formation au modèle, le déploiement et la surveillance, et réduisez les efforts manuels.
- Reproductibilité et cohérence: Veillez à ce que les expériences et les flux de travail soient reproductibles, ce qui permet d'obtenir des résultats fiables.
- Collaboration: Soutenez la communication entre les data scientists, les ingénieurs ML, les ingénieurs de données et les équipes d'exploitation.
- Évolutivité: Permettez aux modèles d'apprentissage automatique de gérer les charges de travail de production et de s'adapter aux exigences croissantes en matière de données et d'utilisation.
- Relever les défis spécifiques au ML: Traitez les distributions de données changeantes, les grands ensembles de données et le besoin de réentraînement des modèles.
Venons-en maintenant aux éléments essentiels des MLOps :
- Pipelines de formation et de recyclage des modèles: L'automatisation du processus de formation implique :
- Prétraitement des donnéeset ingénierie des caractéristiques.
- Validation du modèle et cursus de performance.
- Réentraîner les modèles pour les adapter aux nouvelles données, le cas échéant.
- Versionnement des modèles et des données et cursus des expériences:
- Contrôle de la version des modèles ML et des données de formation afin de documenter les changements au fil du temps et de permettre les retours en arrière.
- Surveillez les hyperparamètres, les métriques et tous les résultats d'une formation à l'aide du cursus d'expérimentation.
- Orchestration du pipeline de données:
- Automatisez la préparation, la transformation et la validation des données. Veillez à ce qu'ils soient fiables et reproductibles.
- Relever les défis posés par l'évolution des ensembles de données.
- Contrôle et maintenance:
- Effectuez un cursus continu des performances des modèles en production afin de détecter le plus tôt possible les problèmes tels que la dérive ou la dégradation des modèles.
- Déclenchez automatiquement le recyclage des modèles et automatisez la formation des modèles afin de les mettre à jour rapidement si nécessaire.
- Infrastructure as Code (IaC):
- Utilisez des outils tels que Kubernetes et Terraform pour provisionner et gérer une infrastructure évolutive pour vos charges de travail ML.
Le domaine des MLOps continue d'évoluer rapidement. Cependant, il existe déjà des normes industrielles pour la mise en œuvre des composants de base :
- Suivi des expériences: MLFlow ou Pondérationset Biais.
- Version des données: DVC (Data Version Control).
- Orchestration de pipeline: Apache Airflow, Kubeflow ou Dagster.
- Déploiement du modèle: TensorFlow Serving, Seldon Core, Amazon SageMaker.
- Surveillance: Prometheus, Grafana, WhyLabs.
- Infrastructure as Code: Kubernetes, Docker, Terraform.
Développez dès aujourd'hui vos compétences en matière de MLOps
Différences entre MLOps et DevOps
Bien que les MLOP s'appuient sur DevOps et présentent donc de nombreux domaines de chevauchement, ils diffèrent en termes d'objectifs, d'artefacts gérés, de cycles de vie, d'outils et de structures d'équipe. Cela est principalement dû aux défis et aux exigences uniques des flux de travail d'apprentissage automatique.
Dans les prochains sous-chapitres, je me concentrerai sur les différences entre les deux disciplines dans des domaines spécifiques.
Objectif et champ d'application
DevOps se concentre sur les applications logicielles et assure un développement, des tests, un déploiement et une maintenance efficaces. DevOps est centré sur le code.
MLOps se concentre sur les modèles d'apprentissage automatique et les flux de données, en relevant les défis liés à la préparation des données, à l'entraînement des modèles, au déploiement des modèles et à la surveillance.
Pour les MLOps, il est essentiel que le flux de travail complet de bout en bout, de la préparation des données à l'entraînement des modèles, soit cursusé et puisse être reproduit. MLOps est donc centré sur les données et les modèles..
Artefacts gérés
Alors que DevOps gère principalement les artefacts logiciels tels que le code source, les binaires et les fichiers de configuration, MLOps gère les artefacts spécifiques au ML tels que les modèles, les ensembles de données, les fonctionnalités, ainsi que la configuration et les résultats des expériences.
Les artefacts DevOps sont statiques, tandis que les artefacts MLOps sont dynamiques car ils évoluent grâce au recyclage et aux changements de données.
La différence essentielle est donc que les MLOps doivent gérer le cycle de vie à la fois du code logiciel et des artefacts basés sur les données. C'est également la raison pour laquelle le MLOps s'appuie sur le DevOps mais l'étend dans certains domaines.
Cycles de vie
DevOps se concentre sur des étapes telles que la construction, le test, le déploiement et la surveillance. Une fois qu'une application est en production, son comportement est entièrement prévisible.
MLOps se concentre sur les mêmes étapes que DevOps mais incorpore des étapes supplémentaires comme le prétraitement des données, l'ingénierie des caractéristiques, l'entraînement et le réentraînement des modèles, et la surveillance de la dérive des données ou des concepts.
Le comportement de l'application est moins prévisible et très itératif, car le modèle doit être fréquemment mis à jour pour s'adapter aux changements dans l'ensemble des données.
La différence essentielle est donc que les cycles de vie MLOps sont axés sur les données, tandis que les cycles de vie DevOps sont davantage axés sur le code.
Outils et pipelines
DevOps est axé sur le code et s'appuie sur des pipelines CI/CD pour automatiser les étapes de construction, de test et de déploiement. Des outils tels que Gitlab CI/CD, Jenkins ou Terraform peuvent être utilisés à cette fin.
MLOps, quant à lui, doit construire des pipelines pour le traitement des données, l'entraînement des modèles et le déploiement des modèles. Elle nécessite donc des outils et des pipelines pour créer des flux de données et de formation, ce qui peut être fait à l'aide d'outils tels que MLFlow, Kubeflow, Airflow ou SageMaker.
Dans certains cas, les pipelines MLOps nécessitent également la prise en charge d'une infrastructure unique, comme les GPU, ce qui n'est pas nécessaire pour les pipelines DevOps.
Structure de l'équipe
DevOps implique une collaboration entre les équipes chargées des logiciels et des opérations. Il y a également une séparation claire des préoccupations, les ingénieurs logiciels se concentrant sur le codage, tandis que les équipes d'exploitation se concentrent sur la partie infrastructure.
Les projets MLOps impliquent des data scientists, des ingénieurs ML, des ingénieurs de données et des équipes opérationnelles. En outre, ces projets ont également besoin d'experts de domaine si le scientifique des données n'est pas l'expert principal du domaine.
Cela signifie que ces deux disciplines nécessitent des structures organisationnelles différentes dans les entreprises.
Domaines de chevauchement entre MLOps et DevOps
Maintenant que nous avons discuté des différences, nous pouvons nous concentrer sur les zones de chevauchement dans les deux disciplines.
Je répète lapartie la plus importante: MLOps s'appuie sur DevOps tout en l'étendant pour s'adapter aux défis uniques de l'apprentissage automatique. Les deux disciplines se concentrent sur l'automatisation des flux de travail, l'amélioration de la collaboration et la garantie de la qualité et de l'évolutivité.
Pipelines CI/CD
Les deux disciplines automatisent leurs flux de travailà l'aide de pipelines CI/CD. MLOps et DevOps doivent gérer le code qui doit être construit, testé et déployé.
Les MLOps étendent cette démarche à la validation des données, à l'entraînement des modèles et aux pipelines de déploiement.
Cependant, les deux disciplines utilisent généralement CI/CD pour simplifier le passage du développement à la production.
Gestion des infrastructures
Tous deux utilisent l'infrastructure en tant que code (IaC) pour approvisionner, gérer automatiquement et faire évoluer l'infrastructure sans étapes manuelles. Des outils comme Docker, Terraform et Kubernetes sont largement utilisés dans les deux disciplines.
Ces deux disciplines comprennent l'approvisionnement des serveurs d'application, des bases de données et des API. MLOps ne fait qu'ajouter la nécessité de fournir une infrastructure pour le traitement de grands ensembles de données, la formation distribuée et le service de modèles.
Suivi et observabilité
DevOps et MLOps s'appuient sur des systèmes de surveillance pour détecter les problèmes le plus tôt possible et garantir la fiabilité. Des outils comme Prometheus et Grafana sont couramment utilisés dans ces deux domaines.
Les deux disciplines doivent surveiller les performances des applications, leur temps de fonctionnement et les journaux pour le débogage. Cependant, les MLOPs ajoutent un contrôle des mesures spécifiques au modèle, telles que la précision, la dérive et la latence.
Quand utiliser MLOps ou DevOps ?
Maintenant que nous avons discuté des domaines de chevauchement et des différences entre ces disciplines, nous pouvons discuter du moment où il convient d'utiliser l'une ou l'autre discipline.
Comme nous l'avons vu précédemment, le MLOps est centré sur les données et a toujours du sens lorsque vous avez des projets centrés sur les données. Ces projets peuvent concerner la conduite autonome, l'analyse en temps réel ou la reconnaissance d'images.
Cependant, MLOps est également essentiel pour les produitsoù l'apprentissage automatique est une caractéristique essentielle, comme les systèmes de recommandation (par exemple, Netflix, Amazon), la détection des fraudes dans les services financiers ou les applications de traitement du langage naturel telles que les robots de conversation (chatbots). Vous pouvez également utiliser les MLOps lorsqu'un modèle de ML doit être fréquemment mis à jour et réentraîné.
DevOps, en revanche, est plus judicieux pour les applications logicielles traditionnelles qui se concentrent sur les services web, les applications mobiles ou les API, pour ne citer que quelques exemples. Il peut s'agir de plateformes de commerce électronique, de systèmes de gestion de contenu ou d'outils SaaS (Software-as-a-Service).
DevOps est également utile lorsque vous souhaitez raccourcir les cycles de développement et déployer rapidement de nouvelles fonctionnalités tout en garantissant la fiabilité du système.
Défis et considérations
MLOps et DevOps sont des disciplines puissantes qui simplifient les flux de travail et améliorent l'efficacité. Cependant, ils s'accompagnent également de défis.
Les défis culturels, les complexités de la chaîne d'outils et les problèmes d'évolutivité doivent être abordés pour mettre en œuvre ces disciplines avec succès.
Je me concentrerai sur quelques défis que j'ai rencontrés dans les sous-chapitres suivants.
Défis culturels
DevOps implique une collaboration entre les développeurs de logiciels et les équipes d'exploitation.
MLOps ajoute des data scientists, des ingénieurs de données et des ingénieurs ML. Cela accroît la nécessité d'une collaboration interfonctionnelle.
Chacun de ces groupes a ses priorités et son expertise :
- Développeurs de logiciels: Concentrez-vous sur le code.
- Équipes opérationnelles: L'accent est mis sur l'infrastructure, sa fiabilité et son évolutivité.
- Scientifiques des données: Donner la priorité à l'expérimentation et à la performance des modèles, c'est donc du code, mais moins axé sur les principes d'un code propre, comme un développeur de logiciels.
- Ingénieurs de données: Concentrez-vous sur les pipelines de données.
- Ingénieurs ML: Se concentrer sur l'infrastructure et l'évolutivité des applications ML.
Ces différentes compétences et priorités peuvent souvent entraîner des problèmes de communication et des objectifs divergents.
La résistance au changement est un autre défi à relever. Les deux disciplines sont perturbatrices. Ils visent à automatiser les flux de travail et à modifier la façon dont les gens pensent et travaillent. Cela conduit souvent les gens à résister et à refuser de mettre en œuvre ces flux de travail dans leur vie quotidienne.
Complexité de la chaîne d'outils
Ces deux disciplines s'accompagnent de divers outils qu'il convient d'approvisionner et d'apprendre. Cependant, le paysage des outils pour DevOps est moins complexe et plus standardisé que pour MLOps.
Le MLOps fait appel à toute une série d'outils, dont l'intégration peut être complexe et prendre du temps.
Les équipes doivent consacrer du temps à l'apprentissage de ces outils, tandis que les équipes opérationnelles doivent les intégrer dans l'infrastructure de leur entreprise, ce qui peut entraîner des difficultés.
Évolutivité
Les deux disciplines présentent également des problèmes d'évolutivité. DevOps se concentre principalement sur la mise à l'échelle des applications et des services pour répondre à la demande des utilisateurs, tandis que MLOps doit faire face à la croissance des données et des modèles.
Pour les MLOps, des défis plus particuliers se posent. La ML nécessite souvent le traitement de grands ensembles de données et l'entraînement de grands modèles de ML, ce qui peut nécessiter une infrastructure unique comme les GPU ou les TPU.
La croissance des données pose des défis en matière de stockage et de traitement des données, ainsi que dans d'autres domaines tels que la gestion des versions. En outre, les modèles doivent être déployés et les exigences en matière de faible latence peuvent rendre le service de modèle unique et difficile.
Ces défis rendent encore plus évidente la raison pour laquelle l'automatisation et l'IaC sont essentiels pour faire face à ces difficultés.
Conclusion
Dans cet article, nous avons abordé les notions de MLOps et de DevOps, ainsi que leurs similitudes et leurs différences.
Ces deux disciplines sont essentielles pour simplifier les flux de travail et améliorer l'efficacité.
Cependant, DevOps se concentre principalement sur les processus traditionnels de développement et de déploiement de logiciels, tandis que MLOps se concentre sur les projets centrés sur les données et le ML.
Le MLOps lui-même s'appuie sur les principes du DevOps, car les projets de ML comportent également des logiciels et partagent donc les mêmes principes de base.
Mais les MLOps les étendent pour relever les défis spécifiques à la ML, tels que les ensembles de données volumineux et changeant rapidement, les modèles de ML qui doivent être versionnés et fréquemment réentraînés, et la surveillance qui doit traiter des questions telles que la dérive des données et la dérive des concepts.
Si vous souhaitez en savoir plus sur les MLOP et DevOps, je vous recommande de consulter les cours suivants :
Renforcer les compétences en matière d'apprentissage automatique
FAQ
Quelle est la principale différence entre MLOps et DevOps ?
MLOps gère le cycle de vie de l'apprentissage automatique, y compris les flux de données, l'entraînement des modèles et la surveillance, tandis que DevOps se concentre sur les processus traditionnels de développement et de déploiement de logiciels.
MLOps et DevOps peuvent-ils être utilisés ensemble ?
Oui, MLOps s'appuie sur les principes de DevOps. La plupart des applications d'apprentissage automatique impliquent également le développement de logiciels, de sorte qu'il est souvent nécessaire de combiner les deux pratiques.
Quels sont les outils standard utilisés dans le cadre du MLOps et du DevOps ?
En MLOps, les outils populaires comprennent MLflow, Kubeflow et SageMaker, tandis que DevOps utilise couramment Jenkins, Kubernetes et Terraform pour le CI/CD et l'automatisation de l'infrastructure.
Quelles sont les compétences nécessaires pour mettre en œuvre efficacement les MLOps ?
La mise en œuvre de MLOps nécessite une expertise en apprentissage automatique, en ingénierie des données et en principes DevOps, ainsi qu'une bonne connaissance d'outils tels que Kubernetes, Airflow et MLflow.
Je suis un ingénieur cloud avec de solides bases en génie électrique, en apprentissage automatique et en programmation. J'ai commencé ma carrière dans le domaine de la vision par ordinateur, en me concentrant sur la classification des images, avant de passer aux MLOps et aux DataOps. Je suis spécialisé dans la construction de plateformes MLOps, le soutien aux data scientists et la fourniture de solutions basées sur Kubernetes pour rationaliser les flux de travail d'apprentissage automatique.
Apprenez-en plus sur l'apprentissage automatique et les MLOps grâce à ces cours !
cours
CI/CD pour l'apprentissage automatique
cours