Cet article a été publié dans le cadre du Blogathon sur la science des données
Workflows d'apprentissage. L'apprentissage automatique est un grand mot à la mode de nos jours. Tout le monde semble vouloir se lancer dans le ML ces jours-ci. De nombreuses startups et startups mettent en œuvre des projets d'apprentissage automatique de plusieurs manières. Mais seule une partie de ces produits peut fonctionner et être maintenue sur le long terme.
Qu'est-ce que DevOps?
Le logiciel doit être construit et exécuté correctement. Ensuite, Comment se déroule le cycle de vie complet d'un produit logiciel?
Bon, DevOps rend l'ensemble du processus d'exploitation du logiciel transparent. Il se compose d'un ensemble de pratiques et de processus qui fonctionnent ensemble pour automatiser et intégrer l'ensemble du processus de développement logiciel.
DevOps unifie le processus de développement logiciel (Dév) et exploitation du logiciel (Opérations). DevOps facilite l'automatisation, le suivi et le bon déroulement de la création, le développement, l'intégration, les preuves, la mise en oeuvre, le lancement, maintenance, mise à l'échelle, la maintenance et la gestion de l'infrastructure logicielle.
Certains objectifs clés de DevOps sont des cycles de développement courts, fluide et rapide, mise en oeuvre rapide, versions stables et suivre correctement les objectifs commerciaux. Les défenseurs du DevOps et les professionnels utilisent l'art de la boucle infinie (en haut) pour représenter le cycle DevOps et montrer comment chaque processus est lié à l'autre. Cela montre également à quel point le développement et les opérations de logiciels sont un rôle permanent.. Vous avez besoin d'une collaboration et d'une amélioration constantes tout au long du cycle.
Une mise en œuvre appropriée de DevOps permet aux organisations d'en faire plus. Intégration continue (LÀ) et livraison continue (CD) aider les organisations à voir un développement plus efficace et une fréquence de déploiement plus élevée. Les temps de réparation sont réduits, les failles de cybersécurité peuvent être facilement détectées et facilitent l'expérimentation et les tests.
Donc, on peut dire que DevOps facilite la mise en œuvre et la maintenance du processus global d'ingénierie logicielle.
MLOps: DevOps pour l'apprentissage automatique
MLOps emprunte de nombreux principes de DevOps dans le but de rendre l'ensemble du cycle de ML plus efficace et plus facile à utiliser.. L'objectif principal de MLOps est de créer des pipelines de ML automatisés et de suivre les temps et autres métriques. Les pipelines seront utilisés pour plusieurs itérations tout au long du cycle de vie du projet AA.
MLOps se compose de:
- Concevoir
- Modèle de développement
- Opérations
La phase de conception consiste en l'ingénierie des exigences, Priorisation des cas d'utilisation du ML, vérification de la disponibilité des données et autres étapes.
Le développement de modèles comprend l'ingénierie d'apprentissage automatique, la modélisation, ingénierie des données et test et validation de modèles.
Les opérations traitent de la mise en œuvre des modèles, Pipelines CI / Suivi et maintenance des CD et modèles.
Voyons maintenant à quoi ressemble le scénario général de MLOps pour Azure MLOps.
MLOps de Microsoft Azure
Azure MLOps suit les objectifs de:
- Développement et expérimentation plus rapides du modèle
- Déploiement plus rapide des modèles en production
- Contrôle qualité et suivi de la lignée du début à la fin
Les outils MLOps aident à suivre les modifications apportées à la source de données ou aux pipelines de données, le code, Modèles de SDK, etc. Le cycle de vie est facilité et plus efficace grâce à l'automatisation, des flux de travail et des actifs reproductibles pouvant être réutilisés encore et encore.
Les services Azure Machine Learning nous permettent de créer des pipelines de Machine Learning reproductibles. Les environnements logiciels pour la formation et le déploiement des modèles sont également réutilisables. Ces pipelines nous permettent de mettre à jour les modèles, tester de nouveaux modèles et mettre en œuvre en continu de nouveaux modèles AA.
Le processus typique des AA
Le processus typique de Machine Learning consiste à:
1. Collecte de données
2. Modèle de formation
3. Emballez le modèle
4. Valider le modèle
5. Déployer le modèle
6. Modèle de moniteur
7. Recycler le modèle
Mais dans de nombreux cas, le processus a besoin de plus de raffinement. De nouvelles données sont disponibles et le code est modifié. Plusieurs processus sont en cours d'exécution, dont chacun implique une grande quantité de données.
Comme d'habitude, une grande partie des données est désorganisée. Les données brutes doivent également être conditionnées.
Comment les MLOps peuvent-ils aider?
MLOps se compose de plusieurs éléments. Certains éléments notables sont l'automatisation du déploiement, surveillance, test de trame, contrôle de version des données, etc. MLOps essaie de prendre les concepts de DevOps et d'améliorer l'ensemble du processus d'apprentissage automatique.
Toute l'architecture Azure Machine Learning ressemble à ceci:
MLOps est censé effectuer un processus coordonné qui peut faciliter le flux de l'ensemble du processus et également prendre en charge les environnements CI / CD à grande échelle.
MLOps peut aider à l'automatisation, faciliter les implémentations de code. La validation est également facilitée par les meilleures pratiques de contrôle qualité de SWE. Dans le cas de la formation de modèle, si nous pensons que notre modèle a besoin d'être recyclé, on peut toujours revenir en arrière et faire une reconversion du modèle.
Azure Machine Learning possède de nombreux modèles pré-entraînés spécifiques au domaine, comment:
Vue, parle, Langue, Recherche, etc.
Si on parle de, qu'est-ce que c'est exactement Azure ML Services, est une suite d'Azure Cloud Services avec un kit de développement logiciel Python / R, qui nous permet de préparer des données, construire des modèles, gérer les modèles, modèles de train, suivre les expériences et mettre en œuvre des modèles.
Il y a beaucoup d'éléments impliqués, voyons certains d'entre eux.
Ensembles de données: enregistrer les données
Expériences: Courses d'entraînement
Tuyaux: Workflow de formation
Des modèles: Modèles enregistrés
Points d'arrivée: modèles déployés et points de terminaison de workflow de formation
Calculer: Informatique gérée
Environnements: Environnements définis de formation et d'inférence.
Les services Azure sont conçus de manière à être conformes à DevOps et à tout faire fonctionner correctement.
Gérer le cycle de vie de l'apprentissage automatique avec MLOps est un jeu d'enfant. Les modèles doivent être surveillés et recyclés. Les processus MLOps facilitent les résultats commerciaux réels et, donc, permettre une mise sur le marché et une mise en œuvre plus rapides pour les solutions basées sur le ML. Ils augmentent également la collaboration et l'alignement entre les équipes.
MLOps Azure
Azure Machine Learning possède les fonctionnalités MLOps suivantes.
Créer des pipelines de ML jouables
Nous pouvons définir des tuyaux réutilisables et reproductibles. Toutes les étapes qui comprennent la collecte de données et l'évaluation du modèle peuvent être réutilisées.
Environnements logiciels réutilisables
Les dépendances logicielles de nos projets peuvent être suivies et reproduites au besoin.
S'inscrire, emballer et déployer des modèles de n'importe où
L'enregistrement du modèle rend les étapes ci-dessus très faciles à mettre en œuvre. Les modèles ont un nom et une version.
Capturez les données de gouvernance pour un cycle de vie de machine learning de bout en bout
Azure ML peut s'intégrer à Git pour suivre notre code. Nous pouvons vérifier à partir de quelle branche / le référentiel vient de notre code. Nous pouvons également suivre, profiler et versionner nos données.
Alertes et notifications pour les événements du cycle de vie de l'AA
Azure ML répertorie les jalons dans Azure EventGrid, qui peut être utilisé à diverses fins.
Surveiller les problèmes opérationnels
Nous pouvons comprendre les données qui sont envoyées à notre modèle et les prédictions qui sont renvoyées. Afin que nous puissions comprendre comment le modèle fonctionne.
Automatisez le cycle de vie des AA
Azure Pipelines et Github peuvent être utilisés pour créer une intégration continue et autonome qui forme un modèle. La plupart des étapes du cycle de vie des AA peuvent être automatisées.
Ensuite, comme pensée générale, nous pouvons comprendre que MLOps est un concept où nous utilisons diverses ressources pour rendre l'ensemble du parcours ML fluide et efficace.
Ensuite, penser à un flux de travail MLOps hypothétique, premier, l'équipe de science des données et l'équipe de développement d'applications collaboreraient pour créer l'application et également former le modèle. Alors, l'application sera testée. parallèle, le modèle sera validé. Alors, le modèle sera implémenté et l'application sera lancée.
L'application et le modèle seront surveillés. Du processus général de gestion des modèles et des applications, nous pouvons effectuer une analyse des performances. Selon les besoins, on peut aussi recycler le modèle.
Examinons un exemple de projet ML dans Azure DevOps.
Les différents éléments dont nous avions discuté sont visibles ici.
Lors de la saisie de Repos, nous pouvons vérifier le code et d'autres fichiers.
Concernant les tuyaux, voyons un pipeline exécuté avec succès.
Nous pouvons voir que tous les travaux ont été exécutés correctement.
Pour le projet AA d'un échantillon particulier, nous pouvons voir les exigences.
Nous pouvons mettre en œuvre les exigences.
pip install azure-cli==2.0.69 pip install --upgrade azureml-sdk[cli] pip install -r requirements.txt
Code pour entraîner le modèle:
Commencez par importer les choses nécessaires.
importer des cornichons depuis azureml.core import Espace de travail depuis azureml.core.run import Exécuter importer le système d'exploitation à partir de sklearn.datasets importer load_diabetes à partir de sklearn.linear_model importer Ridge à partir de sklearn.metrics importer Mean_squared_error de sklearn.model_selection importer train_test_split à partir de sklearn.externals importer joblib importer numpy en tant que np importer json sous-processus d'importation en tapant import Tuple, Lister # run_history_name="devops-ai" # les.makedirs('./les sorties', exist_ok=Vrai) # #ws.get_details() # Commencez à enregistrer les résultats dans AML # run = Run.start_logging(espace de travail = ws, history_name = run_history_name) run = Run.get_submitted_run()
Obtention des données.
X, y = load_diabetes(return_X_y=Vrai) colonnes = ["âge", "genre", "imc", "pb", "s1", "s2", "s3", "s4", "s5", "s6"] X_train, X_test, y_train, y_test = train_test_split(X, Oui, taille_test=0.2, état_aléatoire=0) données = {"former": {"X": X_train, "Oui": y_train}, "test": {"X": X_test, "Oui": y_test}}
Ensuite, entraînement.
# Aléatoire pic alpha alphas = np.arange(0.0, 1.0, 0.05) alpha = alpha[np.choix.aléatoire(alphas.forme[0], 1, remplacer=Faux)][0] imprimer(alpha) run.log("alpha", alpha) reg = crête(alpha=alpha) reg.fit(Les données["former"]["X"], Les données["former"]["Oui"]) preds = reg.predict(Les données["test"]["X"]) run.log("mse", Mean_squared_error(preds, Les données["test"]["Oui"])) # Enregistrer le modèle dans l'historique d'exécution nom_modèle = "sklearn_regression_model.pkl" # nom_modèle = "." avec ouvert(nom du modèle, "wb") comme fichier: joblib.dump(valeur=reg, nom_fichier=nom_modèle) # télécharger le fichier de modèle explicitement dans les artefacts run.upload_file(nom="./les sorties/" + nom du modèle, path_or_stream=nom_modèle) imprimer("Téléchargé le modèle {} expérimenter {}".format(nom du modèle, run.experiment.name)) chemin dir = os.getcwd() imprimer(chemin de fuite) # enregistrer le modèle # run.log_model(nom_fichier = nom_modèle) # imprimer('Enregistré le modèle {} exécuter l'histoire {}'.format(nom du modèle, run.history.name)) imprimer("Les fichiers suivants sont téléchargés ") imprimer(run.get_file_names()) exécuter.terminé()
Il existe de nombreuses différences significatives dans la façon dont nous opérons ici.
Je, étant un étudiant, Je n'avais pas exactement d'analyse de rentabilisation ou les ressources financières pour travailler sur un projet de ML complet dans Azure DevOps. Le travail ci-dessus est fait en prenant comme référence.
Visitez ce dépôt pour référence: DevOpsForAI
conclusion
Les MLOps peuvent résoudre de nombreux problèmes liés au cycle de vie de l'apprentissage automatique. Donc, de nombreux défis généraux sont également résolus.
MLOps est une proposition très convaincante pour les entreprises pour exécuter leurs modèles de ML. MLOps rend le travail entre les équipes super facile et simple.
Ce sont quelques-unes des références que j'ai utilisées pour recueillir des connaissances pour cet article. Avoir une lecture.
Les références:
2. https://docs.microsoft.com/en-us/learn/modules/start-ml-lifecycle-mlops/1-introduction
3. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper
4. https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/ai/mlops-python
Sur moi:
Prateek Majumder
Science des données et analyse | Spécialiste du marketing numérique | Référencement | Création de contenu
Connectez-vous avec moi sur Linkedin.
Mes autres articles sur DataPeaker: Relier.
Merci.
Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.