Tous ceux qui ont essayé le développement de l'apprentissage automatique comprennent à quel point c'est difficile. Outre les problèmes standard du développement de logiciels, le développement de l'apprentissage automatique (ML) introduit une multitude d'obstacles supplémentaires.
Des centaines d'outils open source sont disponibles pour vous aider à chaque étape du cycle de vie du ML, de la préparation des données à la formation des modèles.
Contrairement au développement logiciel traditionnel, lorsque les équipes choisissent un outil pour chaque étape, avec ML, vous souhaitez généralement explorer chaque outil disponible (par exemple, l'algorithme) pour voir s'il améliore les résultats.
Par conséquent, les développeurs ML doivent utiliser et produire des centaines de bibliothèques.
Les algorithmes d'apprentissage automatique contiennent des milliers de paramètres personnalisables, et il est difficile d'identifier quels paramètres, code et données ont été utilisés dans chaque expérience pour générer un modèle, que vous travailliez seul ou en équipe.
Sans une surveillance adéquate, les équipes ont souvent du mal à faire fonctionner à nouveau le même code. Que vous soyez un scientifique des données transférant votre code de formation à un ingénieur pour une utilisation en production, ou que vous reveniez à votre travail précédent pour diagnostiquer un problème, les étapes de retraitement du flux de travail ML sont cruciales.
Le passage d'un modèle en production peut être difficile en raison des nombreuses méthodes et environnements de déploiement qui doivent être utilisés (par exemple, service REST, inférence par lots ou applications mobiles). Il n'y a pas de méthode commune pour déplacer des modèles d'une bibliothèque vers l'un de ces outils, et donc chaque nouveau déploiement présente un risque.
En raison de ces problèmes, il est évident que le développement de ML doit s'améliorer de manière significative pour devenir aussi stable, prévisible et largement utilisé que le développement de logiciels traditionnels.
Défis du ML
- Il existe une pléthore d'outils disparates. Des centaines de solutions logicielles sont disponibles pour vous aider à chaque étape du cycle de vie de l'apprentissage automatique, de la préparation des données à la formation des modèles. De plus, contrairement au développement logiciel traditionnel, lorsque les équipes choisissent un outil pour chaque étape, dans l'apprentissage automatique (ML), vous souhaitez souvent explorer chaque outil disponible (par exemple, l'algorithme) pour voir s'il améliore les résultats. Par conséquent, les développeurs ML doivent utiliser et produire des centaines de bibliothèques.
- Il est difficile de suivre les expériences. Les algorithmes d'apprentissage automatique contiennent des milliers de paramètres personnalisables, et il est difficile d'identifier quels paramètres, code et données ont été utilisés dans chaque expérience pour générer un modèle, que vous travailliez seul ou en équipe.
- Il est difficile de mettre en œuvre l'apprentissage automatique. Le passage d'un modèle en production peut être difficile en raison des nombreuses méthodes et environnements de déploiement qui doivent être utilisés (par exemple, service REST, inférence par lots ou applications mobiles). Il n'existe aucune méthode commune pour déplacer des modèles d'une bibliothèque vers l'un de ces outils. Ainsi, chaque nouveau déploiement introduit un risque.
Qu’est ce qu' MLflow?
MLflow est une plate-forme open source pour le cycle de vie de l'apprentissage automatique. Il est basé sur un concept d'interface ouverte, proposant de nombreuses abstractions essentielles qui permettent d'intégrer facilement l'infrastructure actuelle et les algorithmes d'apprentissage automatique au système.
Cela implique que si vous êtes un développeur qui souhaite utiliser MLflow mais que vous utilisez un framework non pris en charge, la conception de l'interface ouverte rend relativement simple l'intégration de ce framework et le démarrage de la plate-forme. En pratique, cela implique que MLflow est destiné à fonctionner avec n'importe quel machine learning bibliothèque ou langue.
De plus, MLflow favorise la répétabilité, ce qui signifie que le même code d'apprentissage automatique de formation ou de production est destiné à s'exécuter avec les mêmes résultats indépendamment de l'environnement, que ce soit dans le cloud, sur un poste de travail local ou dans un ordinateur portable.
Enfin, MLflow est conçu pour l'évolutivité, il peut donc être utilisé par une petite équipe de scientifiques des données ainsi que par une grande entreprise avec des centaines de praticiens de l'apprentissage automatique.
MLflow est compatible avec n'importe quelle bibliothèque d'apprentissage automatique, algorithme, outil de déploiement ou langage. Il présente également les avantages suivants :
- Conçu pour fonctionner avec n'importe quel service cloud.
- Évoluez vers d'énormes données avec Apache Spark.
- MLflow est compatible avec une variété de cadres d'apprentissage automatique open source, y compris Apache Spark, TensorFlowet SciKit-Learn.
Si vous avez déjà du code, MLflow peut être utilisé avec. Vous pouvez même partager votre framework et vos modèles entre entreprises car il est open-source.
Composants MLflow : comment fonctionnent-ils ?
MLflow est une plate-forme gratuite et open source pour la gestion du cycle de vie ML, qui comprend l'expérimentation, la reproductibilité, le déploiement et un registre de modèles unique. Actuellement, MLflow comporte quatre composants :
1. Suivi MLflow
Je vais commencer par MLflow Tracking. MLflow prend en charge la collecte de divers concepts essentiels liés à un référentiel centralisé de suivi des métadonnées de formation. La première notion est une collection d'hyperparamètres critiques ou de boutons de configuration qui influencent les performances du modèle. L'utilisation des API de MLflow et d'un service de suivi centralisé peut préserver tout cela.
Les utilisateurs peuvent également enregistrer des données de performance pour avoir un aperçu du succès de leurs modèles d'apprentissage automatique. De plus, pour la répétabilité, MLflow permet aux utilisateurs de consigner le code source spécifique qui a été utilisé pour créer un modèle ainsi que sa version en s'intégrant étroitement à Git pour lier chaque modèle à un hachage de validation spécifique.
MLflow peut être utilisé pour enregistrer des artefacts, qui sont des fichiers arbitraires, y compris la formation, les données de test et les modèles eux-mêmes pour la reproductibilité.
Cela signifie que si je suis un développeur qui vient de former un modèle, je peux le conserver dans le service de suivi centralisé, et un de mes collègues peut le charger plus tard et soit continuer à former et expérimenter, soit produire ce modèle pour répondre à un besoin spécifique .
Lors de l'exécution de votre code d'apprentissage automatique et de l'affichage ultérieur des résultats, le suivi est une API qui vous permet de consigner les paramètres, les versions de code, les métriques et les fichiers de sortie. Il est écrit en Python, R et Java, entre autres langages. Il est également accessible en tant qu'API REST, qui peut être utilisée pour créer des applications par-dessus.
Fonctionnalités clés
- De nombreux développeurs utilisent MLflow sur leur PC local, où le backend et le stockage d'artefacts partagent un répertoire sur le disque.
- De nombreux utilisateurs utilisent également SQLite, une base de données compatible SQLAlchemy, pour exécuter MLflow sur leurs PC locaux.
- MLflow prend également en charge les architectures distribuées. Le serveur de suivi, le magasin principal et le magasin d'artefacts sont tous hébergés sur différents serveurs.
- Si l'exécution a été lancée par un projet MLflow, le hachage de validation git a été utilisé. Les API MLflow Python, R, Java et REST peuvent être utilisées pour enregistrer les données à exécuter.
Pour plus d'informations, vous pouvez consulter le site officiel Documentation.
2. Projets MLFlow
Après avoir parcouru les composants de suivi, j'aimerais parler des projets MLflow, qui sont une structure d'emballage reproductible pour les sessions de formation de modèles, quel que soit le contexte d'exécution.
Les entreprises utilisent un large éventail de technologies de formation en apprentissage automatique, mais elles utilisent également ces outils de formation dans un ensemble diversifié de contextes. Par exemple, ils peuvent exécuter leur code de formation sur le cloud, sur un PC local ou dans un ordinateur portable.
Cela pose le problème que les résultats de l'apprentissage automatique sont difficiles à reproduire. Souvent, le même code de formation identique ne s'exécute pas ou ne produit pas les mêmes résultats dans deux emplacements distincts.
La solution fournie par MLflow est une définition de projet de code de formation autonome qui inclut tout le code de formation d'apprentissage automatique, ainsi que ses dépendances de bibliothèque de versions, ses paramètres et ses données de formation et de test.
MLflow garantit la reproductibilité dans tous les contextes d'exécution en décrivant clairement l'ensemble des exigences d'un processus de formation en machine learning. Il accomplit cela en installant toutes ces bibliothèques et en obtenant le même état système que celui dans lequel le code s'exécute.
Le projet MLflow n'est rien de plus qu'un répertoire. Il s'agit d'un répertoire qui inclut le code d'entraînement, la définition des dépendances de la bibliothèque et d'autres données nécessaires à la session d'entraînement, ainsi que ce fichier de configuration facultatif.
Ces exigences de bibliothèque peuvent être définies de différentes manières. Les utilisateurs peuvent, par exemple, fournir une spécification d'environnement anaconda au format YAML pour répertorier leurs exigences en matière de bibliothèque de codes de formation. MLflow exécutera le code de formation dans le conteneur. Dans ce cas, ils peuvent également inclure un conteneur Docker.
Enfin, MLflow dispose d'une interface de ligne de commande (CLI) pour exécuter ces projets, ainsi que des API Python et Java. Ces projets peuvent être exécutés sur le système local de l'utilisateur ainsi que dans divers paramètres distants tels que le planificateur de tâches Databricks et Kubernetes. Les projets MLflow vous permettent de conditionner le code de science des données de manière reproductible et réutilisable, principalement sur la base de normes.
Le composant de projets comprend une API ainsi que des utilitaires de ligne de commande pour la gestion des projets. Ces capacités garantissent que les projets peuvent être enchaînés pour former des processus d'apprentissage automatique.
Fonctionnalités clés
- MLflow prend en charge les environnements de projet, y compris l'environnement de conteneur Docker, l'environnement Conda et l'environnement système.
- Tout référentiel Git ou répertoire local peut être considéré comme un projet MLflow ; par défaut; vous pouvez utiliser n'importe quel shell ou Script Python dans le répertoire comme point d'entrée du projet.
- Les dépendances non-Python, telles que les bibliothèques Java, peuvent être capturées à l'aide de conteneurs Docker.
- Vous pouvez obtenir un meilleur contrôle sur un projet MLflow en ajoutant un fichier de projet au répertoire racine du projet, qui est un fichier texte dans la syntaxe YAML.
Pour plus d'informations, vous pouvez consulter le site officiel Documentation.
3. Modèles MLflow
Maintenant, j'aimerais discuter des modèles MLflow, un format de modèle à usage général qui prend en charge un large éventail de contextes de production. La raison d'être des modèles MLflow est maintenant assez similaire à celle des projets.
Encore une fois, nous voyons que les modèles peuvent être générés à l'aide d'un large éventail d'outils, mais ils peuvent également être produits ou déployés dans un large éventail de situations, par opposition aux environnements de formation.
Ces paramètres incluent des outils de service en temps réel, tels que Kubernetes ou Amazon SageMaker, ainsi que le streaming et la notation par lots, tels que Spark. De plus, certaines entreprises peuvent choisir de déployer des modèles en tant que service Web RESTful s'exécutant sur une instance cloud préconfigurée.
Un modèle MLflow, comme un projet, est une structure de répertoires. Il comprend un fichier de configuration et, cette fois, un artefact de modèle sérialisé plutôt qu'un code de formation. Il inclut également cet ensemble de dépendances pour la répétabilité en tant que projet. Cette fois, nous allons examiner les dépendances d'évaluation dans le contexte d'un environnement Conda.
De plus, MLflow inclut des outils de génération de modèles pour la sérialisation de modèles au format MLflow à partir d'une gamme de frameworks populaires. Enfin, MLflow ajoute des déploiements, des API pour produire et connecter n'importe quel modèle MLflow à une gamme de services, et ces API sont accessibles en Python, Java, R et un format CLI.
Les modèles sont un composant avec une structure standard pour les modèles d'empaquetage qui peuvent être utilisés et compris par des outils en aval tels que des serveurs d'inférence ou le Databricks plate-forme d'inférence par lots. Ce composant permet d'économiser des heures de code sur mesure lors de l'emballage d'un modèle pour la production.
Le modèle MLflow est une norme pour emballer les modèles d'apprentissage automatique sous une variété de formes appelées "saveurs". MLflow fournit de nombreux outils pour vous aider à déployer différents types de modèles. Chaque modèle MLflow est conservé sous la forme d'un répertoire contenant des fichiers arbitraires ainsi qu'un fichier descripteur de modèle ML avec une liste des variantes dans lesquelles il peut être utilisé.
Fonctionnalités clés
- Tous les outils de déploiement intégrés de MLflow offrent plusieurs saveurs "standard", comme une saveur "Fonction Python" qui explique comment exécuter le modèle en tant que fonction Python.
- Chaque modèle MLflow se compose d'un répertoire contenant des fichiers arbitraires, ainsi que d'un fichier de modèle ML à la racine du répertoire qui définit les nombreuses variantes du modèle.
- Lors du stockage d'un modèle, MLflow vous permet de spécifier un paramètre d'environnement Conda qui contient les dépendances du modèle. Si aucun environnement Conda n'est spécifié, un environnement par défaut basé sur la saveur du modèle est construit. Après cela, l'environnement Conda est stocké dans conda.yaml.
Pour plus d'informations, vous pouvez consulter le site officiel Documentation.
4. Registre de modèles MLflow
Un registre de modèles est un référentiel pour les modèles d'apprentissage automatique (ML) appris. Model Registry est composé d'API et d'une application Web qui est utilisée pour maintenir les modèles dans différentes phases en équipe. Model Lineage, Model Versioning, Easy Stage Transition et Annotation ne sont que quelques-unes des fonctionnalités disponibles dans Model Registry.
Un registre de modèles, en plus des modèles eux-mêmes, contient des informations (métadonnées) sur les données et les tâches de formation utilisées pour construire le modèle. Il est essentiel de garder une trace de ces entrées requises pour créer une lignée pour les modèles ML. À cet égard, un registre modèle fonctionne de manière similaire aux logiciels conventionnels contrôle de version systèmes (par exemple, Git, SVN) et référentiels d'artefacts (par exemple, Artifactory, PyPI).
Le registre de modèles est un cadre qui permet aux scientifiques des données et aux ingénieurs en apprentissage automatique de publier, tester, surveiller, gérer et distribuer leurs modèles pour une coopération avec d'autres équipes. Essentiellement, le registre modèle est utilisé une fois que vous avez terminé votre phase de test et que vous êtes prêt à partager vos résultats avec l'équipe et les parties prenantes.
Le registre de modèles MLflow fournit une API et une interface utilisateur pour gérer vos modèles et leur durée de vie à partir d'un emplacement central. La lignée du modèle, la gestion des versions du modèle, les annotations et les transitions d'étape sont toutes disponibles via le registre.
Dans MLflow, un modèle enregistré est celui qui a un nom et des métadonnées uniques, des versions de modèle, des phases de transition et une lignée de modèle. Une ou plusieurs versions de modèle peuvent être trouvées dans un modèle enregistré. Un nouveau modèle est considéré comme la version 1 lorsqu'il est enregistré dans le registre. La version suivante est ajoutée à tout nouveau modèle portant le même nom.
Vous pouvez affecter une étape à n'importe quelle version de modèle à tout moment. Cependant, les étapes doivent être attribuées sous les phases MLflow qui ont été formellement spécifiées, telles que la mise en scène, la production et l'archivage. Une version de modèle peut passer d'une étape à une autre.
MLflow vous permet d'utiliser Markdown pour annoter à la fois le modèle de niveau supérieur et chaque version spécifique. Vous pouvez inclure des descriptions ainsi que d'autres informations pertinentes, telles que des explications sur les algorithmes, la méthodologie et les ensembles de données utilisés.
Fonctionnalités clés
- Pour accéder au registre de modèles via l'interface utilisateur ou l'API lorsque vous hébergez votre propre serveur MLflow, vous devez utiliser un magasin principal basé sur une base de données.
- Le registre de modèles est également accessible via le type de modèle MLflow ou l'interface API de suivi des clients MLflow. Vous pouvez, par exemple, enregistrer un modèle pendant l'exécution d'une expérience MLflow ou après toutes vos exécutions d'expérience.
- Tout le monde ne commencera pas à former ses modèles à l'aide de MLflow. Par conséquent, certains modèles peuvent être formés avant d'utiliser MLflow. Plutôt que de recycler les modèles, vous souhaitez simplement enregistrer vos modèles stockés auprès du registre des modèles.
Pour plus d'informations, vous pouvez consulter le site officiel Documentation.
Conclusion
MLflow est un excellent outil de cycle de vie ML en constante évolution. Vous pouvez l'utiliser avec vos outils et plates-formes actuels.
Il prend en charge plusieurs langages de programmation, notamment Python, Java et R. Vous pouvez également suivre, enregistrer et comparer rapidement différentes versions de modèles grâce à sa conception conviviale.
Essayez MLflow et faites-nous part de votre expérience !
Soyez sympa! Laissez un commentaire